Mega Code Archive

 
Categories / Java / Swing Components
 

TabbedPane and dockable component 2

package net.eleritec.docking.demos; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; import java.awt.Dimension; import java.awt.Insets; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTabbedPane; import javax.swing.border.LineBorder; import net.eleritec.docking.Dockable; import net.eleritec.docking.DockableAdapter; import net.eleritec.docking.DockingManager; import net.eleritec.docking.DockingPort; import net.eleritec.docking.defaults.ComponentProviderAdapter; import net.eleritec.docking.defaults.DefaultDockingPort; public class TabbedPaneDemo extends JPanel {   private JLabel titlebar;   private Dockable dockableImpl;   public TabbedPaneDemo(String title) {     super();     titlebar = createTitlebar(" " + title);     add(titlebar);     setBorder(new LineBorder(Color.black));     dockableImpl = new DockableImpl();   }   private JLabel createTitlebar(String title) {     JLabel lbl = new JLabel(title);     lbl.setForeground(Color.white);     lbl.setBackground(Color.blue);     lbl.setOpaque(true);     return lbl;   }   public void doLayout() {     Insets in = getInsets();     titlebar.setBounds(in.left, in.top, getWidth() - in.left - in.right, 25);   }   private TabbedPaneDemo getThis() {     return this;   }      private Dockable getDockable() {     return dockableImpl;   }   private class DockableImpl extends DockableAdapter {     public Component getDockable() {       return getThis();     }          public String getDockableDesc() {       return titlebar.getText().trim();     }     public Component getInitiator() {       // the titlebar will the the 'hot' component that initiates dragging       return titlebar;     }   }   private static JPanel createContentPane() {     JPanel p = new JPanel(new BorderLayout(5, 5));     p.add(buildDockingPort("North"), BorderLayout.NORTH);     p.add(buildDockingPort("South"), BorderLayout.SOUTH);     p.add(buildDockingPort("East"), BorderLayout.EAST);     p.add(buildDockingPort("West"), BorderLayout.WEST);     p.add(createDockingPort("Center"), BorderLayout.CENTER);     return p;   }   private static DefaultDockingPort buildDockingPort(String desc) {     // create the DockingPort     DefaultDockingPort port = createDockingPort(desc);     // create the Dockable panel     TabbedPaneDemo cd = new TabbedPaneDemo(desc);     DockingManager.registerDockable(cd.getDockable());     // dock the panel and return the DockingPort     port.dock(cd.getDockable(), DockingPort.CENTER_REGION);     return port;   }   private static int getTabPosition(String desc) {     if ("North".equals(desc))       return JTabbedPane.TOP;     if ("South".equals(desc))       return JTabbedPane.BOTTOM;     if ("East".equals(desc))       return JTabbedPane.RIGHT;     if ("West".equals(desc))       return JTabbedPane.LEFT;     return JTabbedPane.TOP;   }   private static DefaultDockingPort createDockingPort(String desc) {     DefaultDockingPort port = new DefaultDockingPort();     port.setBackground(Color.gray);     port.setPreferredSize(new Dimension(200, 100));     port.setComponentProvider(new ComponentProvider(getTabPosition(desc)));     return port;   }   public static void main(String[] args) {     JFrame f = new JFrame("Custom Conatainers Docking Demo");     f.setContentPane(createContentPane());     f.setSize(600, 400);     f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);     f.setVisible(true);   }   private static class ComponentProvider extends ComponentProviderAdapter {     int tabPosition;     private ComponentProvider(int tabs) {       tabPosition = tabs;     }     public JTabbedPane createTabbedPane() {       return new JTabbedPane(tabPosition);     }   }    }                     dockingSrc-0.3.zip( 57 k)