package org.flexdock.demos.raw;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

import org.flexdock.demos.util.DemoUtility;
import org.flexdock.docking.DockingConstants;
import org.flexdock.docking.DockingManager;
import org.flexdock.docking.defaults.DefaultDockingPort;

public class SimpleDemo extends JFrame implements DockingConstants {
    public static void main(String[] args) {
        JFrame f = new SimpleDemo();
        f.setSize(600, 400);
        DemoUtility.setCloseOperation(f);
        f.setVisible(true);
    }

    public SimpleDemo() {
        super("Simple Docking Demo");
        setContentPane(createContentPane());
    }

    private JPanel createContentPane() {
        JPanel p = new JPanel(new BorderLayout(5, 5));
        p.add(buildDockingPort(Color.blue, "Blue"), BorderLayout.NORTH);
        p.add(buildDockingPort(Color.red, "Red"), BorderLayout.SOUTH);
        p.add(buildDockingPort(Color.green, "Green"), BorderLayout.EAST);
        p.add(buildDockingPort(Color.yellow, "Yellow"), BorderLayout.WEST);
        p.add(createDockingPort(), BorderLayout.CENTER);
        return p;
    }

    private DefaultDockingPort buildDockingPort(Color color, String desc) {
        // create the DockingPort
        DefaultDockingPort port = createDockingPort();

        // create and register the Dockable panel
        JPanel p = new JPanel();
        p.setBackground(color);
        p.add(new JLabel("Drag Me"));
        DockingManager.registerDockable(p, desc);

        // dock the panel and return the DockingPort
        port.dock(p, CENTER_REGION);
        return port;
    }

    private DefaultDockingPort createDockingPort() {
        DefaultDockingPort port = new DefaultDockingPort();
        port.setBackground(Color.ORANGE);
        port.setPreferredSize(new Dimension(100, 100));
        return port;
    }
}
