<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2FSwing_Components%2FDockable</id>
		<title>Java/Swing Components/Dockable - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2FSwing_Components%2FDockable"/>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/Swing_Components/Dockable&amp;action=history"/>
		<updated>2026-04-23T02:42:41Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java/Swing_Components/Dockable&amp;diff=8199&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/Swing_Components/Dockable&amp;diff=8199&amp;oldid=prev"/>
				<updated>2010-06-01T06:56:19Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 06:56, 1 июня 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java/Swing_Components/Dockable&amp;diff=8198&amp;oldid=prev</id>
		<title> в 18:01, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/Swing_Components/Dockable&amp;diff=8198&amp;oldid=prev"/>
				<updated>2010-05-31T18:01:46Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Add border for dockable component ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
package net.eleritec.docking.demos.border;&lt;br /&gt;
import java.awt.BorderLayout;&lt;br /&gt;
import java.awt.Dimension;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
import javax.swing.JSplitPane;&lt;br /&gt;
import javax.swing.plaf.basic.BasicSplitPaneDivider;&lt;br /&gt;
import javax.swing.plaf.basic.BasicSplitPaneUI;&lt;br /&gt;
import net.eleritec.docking.DockingPort;&lt;br /&gt;
import net.eleritec.docking.defaults.ruponentProviderAdapter;&lt;br /&gt;
import net.eleritec.docking.defaults.DefaultDockingPort;&lt;br /&gt;
public class BorderDemo extends JFrame {&lt;br /&gt;
  &lt;br /&gt;
  public BorderDemo() {&lt;br /&gt;
    super(&amp;quot;Border Docking Demo&amp;quot;);&lt;br /&gt;
    setContentPane(createContentPane());&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  private JPanel createContentPane() {&lt;br /&gt;
    JPanel p = new JPanel(new BorderLayout(5, 5));&lt;br /&gt;
    p.add(buildDockingPort(&amp;quot;North&amp;quot;), BorderLayout.NORTH);&lt;br /&gt;
    p.add(buildDockingPort(&amp;quot;South&amp;quot;), BorderLayout.SOUTH);&lt;br /&gt;
    p.add(buildDockingPort(&amp;quot;East&amp;quot;), BorderLayout.EAST);&lt;br /&gt;
    p.add(buildDockingPort(&amp;quot;West&amp;quot;), BorderLayout.WEST);&lt;br /&gt;
    p.add(createDockingPort(), BorderLayout.CENTER);&lt;br /&gt;
    return p;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  private DefaultDockingPort buildDockingPort(String desc) {&lt;br /&gt;
    // create the DockingPort&lt;br /&gt;
    DefaultDockingPort port = createDockingPort();&lt;br /&gt;
    // create the Dockable panel&lt;br /&gt;
    DockablePanel panel = new DockablePanel(desc);&lt;br /&gt;
    // dock the panel and return the DockingPort&lt;br /&gt;
    port.dock(panel.getDockable(), DockingPort.CENTER_REGION);&lt;br /&gt;
    return port;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  private DefaultDockingPort createDockingPort() {&lt;br /&gt;
    DefaultDockingPort port = new DefaultDockingPort();&lt;br /&gt;
    port.setPreferredSize(new Dimension(100, 100));&lt;br /&gt;
    port.setBorderManager(new DemoBorderManager());&lt;br /&gt;
    port.setComponentProvider(new ComponentProvider());&lt;br /&gt;
    return port;&lt;br /&gt;
  }&lt;br /&gt;
  private class ComponentProvider extends ComponentProviderAdapter {&lt;br /&gt;
    public DockingPort createChildPort() {&lt;br /&gt;
      DefaultDockingPort port = new DefaultDockingPort();&lt;br /&gt;
      port.setComponentProvider(this);&lt;br /&gt;
      return port;&lt;br /&gt;
    }&lt;br /&gt;
    public JSplitPane createSplitPane() {&lt;br /&gt;
      JSplitPane split = new JSplitPane();&lt;br /&gt;
      split.setDividerSize(3);&lt;br /&gt;
      split.setBorder(null);&lt;br /&gt;
      if (split.getUI() instanceof BasicSplitPaneUI) {&lt;br /&gt;
        BasicSplitPaneDivider divider = ((BasicSplitPaneUI) split.getUI()).getDivider();&lt;br /&gt;
        if (divider != null &amp;amp;&amp;amp; divider.getBorder()!=null)&lt;br /&gt;
          divider.setBorder(null);      &lt;br /&gt;
      }&lt;br /&gt;
      return split;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    JFrame f = new BorderDemo();&lt;br /&gt;
    f.setSize(600, 400);&lt;br /&gt;
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    f.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Compound dockable window ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
package net.eleritec.docking.demos;&lt;br /&gt;
import java.awt.BorderLayout;&lt;br /&gt;
import java.awt.Color;&lt;br /&gt;
import java.awt.ruponent;&lt;br /&gt;
import java.awt.Dimension;&lt;br /&gt;
import java.awt.Insets;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JLabel;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
import javax.swing.border.LineBorder;&lt;br /&gt;
import net.eleritec.docking.Dockable;&lt;br /&gt;
import net.eleritec.docking.DockableAdapter;&lt;br /&gt;
import net.eleritec.docking.DockingManager;&lt;br /&gt;
import net.eleritec.docking.DockingPort;&lt;br /&gt;
import net.eleritec.docking.defaults.DefaultDockingPort;&lt;br /&gt;
public class CompoundDemo extends JPanel {&lt;br /&gt;
  private JLabel titlebar;&lt;br /&gt;
  private Dockable dockableImpl;&lt;br /&gt;
  &lt;br /&gt;
  public CompoundDemo(String title) {&lt;br /&gt;
    super();&lt;br /&gt;
    titlebar = createTitlebar(&amp;quot; &amp;quot; + title);&lt;br /&gt;
    add(titlebar);&lt;br /&gt;
    setBorder(new LineBorder(Color.black));&lt;br /&gt;
    dockableImpl = new DockableImpl();&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  private JLabel createTitlebar(String title) {&lt;br /&gt;
    JLabel lbl = new JLabel(title);&lt;br /&gt;
    lbl.setForeground(Color.white);&lt;br /&gt;
    lbl.setBackground(Color.blue);&lt;br /&gt;
    lbl.setOpaque(true);&lt;br /&gt;
    return lbl;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  public void doLayout() {&lt;br /&gt;
    Insets in = getInsets();&lt;br /&gt;
    titlebar.setBounds(in.left, in.top, getWidth()-in.left-in.right, 25);&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  private CompoundDemo getThis() {&lt;br /&gt;
    return this;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  private Dockable getDockable() {&lt;br /&gt;
    return dockableImpl;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  private class DockableImpl extends DockableAdapter {&lt;br /&gt;
    public Component getDockable() {&lt;br /&gt;
      return getThis();&lt;br /&gt;
    }&lt;br /&gt;
    public String getDockableDesc() {&lt;br /&gt;
      return titlebar.getText().trim();&lt;br /&gt;
    }&lt;br /&gt;
    public Component getInitiator() {&lt;br /&gt;
      // the titlebar will the the &amp;quot;hot&amp;quot; component that initiates dragging&lt;br /&gt;
      return titlebar;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  private static JPanel createContentPane() {&lt;br /&gt;
    JPanel p = new JPanel(new BorderLayout(5, 5));&lt;br /&gt;
    p.add(buildDockingPort(&amp;quot;North&amp;quot;), BorderLayout.NORTH);&lt;br /&gt;
    p.add(buildDockingPort(&amp;quot;South&amp;quot;), BorderLayout.SOUTH);&lt;br /&gt;
    p.add(buildDockingPort(&amp;quot;East&amp;quot;), BorderLayout.EAST);&lt;br /&gt;
    p.add(buildDockingPort(&amp;quot;West&amp;quot;), BorderLayout.WEST);&lt;br /&gt;
    p.add(createDockingPort(), BorderLayout.CENTER);&lt;br /&gt;
    return p;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  private static DefaultDockingPort buildDockingPort(String desc) {&lt;br /&gt;
    // create the DockingPort&lt;br /&gt;
    DefaultDockingPort port = createDockingPort();&lt;br /&gt;
    &lt;br /&gt;
    // create the Dockable panel&lt;br /&gt;
    CompoundDemo cd = new CompoundDemo(desc);&lt;br /&gt;
    DockingManager.registerDockable(cd.getDockable());&lt;br /&gt;
    // dock the panel and return the DockingPort&lt;br /&gt;
    port.dock(cd.getDockable(), DockingPort.CENTER_REGION);&lt;br /&gt;
    return port;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  private static DefaultDockingPort createDockingPort() {&lt;br /&gt;
    DefaultDockingPort port = new DefaultDockingPort();&lt;br /&gt;
    port.setBackground(Color.gray);&lt;br /&gt;
    port.setPreferredSize(new Dimension(100, 100));&lt;br /&gt;
    return port;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    JFrame f = new JFrame(&amp;quot;Compound Docking Demo&amp;quot;);&lt;br /&gt;
    f.setContentPane(createContentPane());&lt;br /&gt;
    f.setSize(600, 400);&lt;br /&gt;
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    f.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Cursor indication for dockable component ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
package net.eleritec.docking.demos;&lt;br /&gt;
import java.awt.BorderLayout;&lt;br /&gt;
import java.awt.Color;&lt;br /&gt;
import java.awt.ruponent;&lt;br /&gt;
import java.awt.Dimension;&lt;br /&gt;
import java.awt.Image;&lt;br /&gt;
import java.awt.Insets;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JLabel;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
import javax.swing.border.LineBorder;&lt;br /&gt;
import net.eleritec.docking.CursorProvider;&lt;br /&gt;
import net.eleritec.docking.Dockable;&lt;br /&gt;
import net.eleritec.docking.DockableAdapter;&lt;br /&gt;
import net.eleritec.docking.DockingManager;&lt;br /&gt;
import net.eleritec.docking.DockingPort;&lt;br /&gt;
import net.eleritec.docking.defaults.DefaultDockingPort;&lt;br /&gt;
import net.eleritec.util.ResourceManager;&lt;br /&gt;
public class CursorDemo extends JPanel {&lt;br /&gt;
  private JLabel titlebar;&lt;br /&gt;
  private CursorProvider cursorProvider;&lt;br /&gt;
  private Dockable dockableImpl;&lt;br /&gt;
  public CursorDemo(String title) {&lt;br /&gt;
    super();&lt;br /&gt;
    titlebar = createTitlebar(&amp;quot; &amp;quot; + title);&lt;br /&gt;
    add(titlebar);&lt;br /&gt;
    setBorder(new LineBorder(Color.black));&lt;br /&gt;
    dockableImpl = new DockableImpl();&lt;br /&gt;
  }&lt;br /&gt;
  private JLabel createTitlebar(String title) {&lt;br /&gt;
    JLabel lbl = new JLabel(title);&lt;br /&gt;
    lbl.setForeground(Color.white);&lt;br /&gt;
    lbl.setBackground(Color.blue);&lt;br /&gt;
    lbl.setOpaque(true);&lt;br /&gt;
    return lbl;&lt;br /&gt;
  }&lt;br /&gt;
  public void doLayout() {&lt;br /&gt;
    Insets in = getInsets();&lt;br /&gt;
    titlebar.setBounds(in.left, in.top, getWidth() - in.left - in.right, 25);&lt;br /&gt;
  }&lt;br /&gt;
  private CursorDemo getThis() {&lt;br /&gt;
    return this;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  private void setCursorProvider(CursorProvider prov) {&lt;br /&gt;
    cursorProvider = prov;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  private Dockable getDockable() {&lt;br /&gt;
    return dockableImpl;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  private class DockableImpl extends DockableAdapter {&lt;br /&gt;
    public CursorProvider getCursorProvider() {&lt;br /&gt;
      return cursorProvider;&lt;br /&gt;
    }&lt;br /&gt;
    public Component getDockable() {&lt;br /&gt;
      return getThis();&lt;br /&gt;
    }&lt;br /&gt;
    public String getDockableDesc() {&lt;br /&gt;
      return titlebar.getText().trim();&lt;br /&gt;
    }&lt;br /&gt;
    public Component getInitiator() {&lt;br /&gt;
      // the titlebar will the the &amp;quot;hot&amp;quot; component that initiates dragging&lt;br /&gt;
      return titlebar;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  private static JPanel createContentPane() {&lt;br /&gt;
    JPanel p = new JPanel(new BorderLayout(5, 5));&lt;br /&gt;
    p.add(buildDockingPort(&amp;quot;North&amp;quot;), BorderLayout.NORTH);&lt;br /&gt;
    p.add(buildDockingPort(&amp;quot;South&amp;quot;), BorderLayout.SOUTH);&lt;br /&gt;
    p.add(buildDockingPort(&amp;quot;East&amp;quot;), BorderLayout.EAST);&lt;br /&gt;
    p.add(buildDockingPort(&amp;quot;West&amp;quot;), BorderLayout.WEST);&lt;br /&gt;
    p.add(createDockingPort(), BorderLayout.CENTER);&lt;br /&gt;
    return p;&lt;br /&gt;
  }&lt;br /&gt;
  private static DefaultDockingPort buildDockingPort(String desc) {&lt;br /&gt;
    // create the DockingPort&lt;br /&gt;
    DefaultDockingPort port = createDockingPort();&lt;br /&gt;
    // create the Dockable panel&lt;br /&gt;
    CursorDemo cd = new CursorDemo(desc);&lt;br /&gt;
    DockingManager.registerDockable(cd.getDockable());&lt;br /&gt;
    // use a custom cursor provider for the north panel&lt;br /&gt;
    if(&amp;quot;North&amp;quot;.equals(desc))&lt;br /&gt;
      cd.setCursorProvider(new CursorDelegate());&lt;br /&gt;
    // dock the panel and return the DockingPort&lt;br /&gt;
    port.dock(cd.getDockable(), DockingPort.CENTER_REGION);&lt;br /&gt;
    return port;&lt;br /&gt;
  }&lt;br /&gt;
  private static DefaultDockingPort createDockingPort() {&lt;br /&gt;
    DefaultDockingPort port = new DefaultDockingPort();&lt;br /&gt;
    port.setBackground(Color.gray);&lt;br /&gt;
    port.setPreferredSize(new Dimension(100, 100));&lt;br /&gt;
    return port;&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    JFrame f = new JFrame(&amp;quot;Custom Cursor Docking Demo&amp;quot;);&lt;br /&gt;
    f.setContentPane(createContentPane());&lt;br /&gt;
    f.setSize(600, 400);&lt;br /&gt;
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    f.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
  private static class CursorDelegate implements CursorProvider {&lt;br /&gt;
    private static final Image NORTH_IMG = createImg(&amp;quot;tileHorizontal16.gif&amp;quot;);&lt;br /&gt;
    private static final Image EAST_IMG = createImg(&amp;quot;tileVertical16.gif&amp;quot;);&lt;br /&gt;
    private static final Image CENTER_IMG = createImg(&amp;quot;cascadeWindows16.gif&amp;quot;);&lt;br /&gt;
    private static final Image BLOCKED_IMG = createImg(&amp;quot;closeAllWindows16.gif&amp;quot;);&lt;br /&gt;
    &lt;br /&gt;
    private static Image createImg(String imgName) {&lt;br /&gt;
      return ResourceManager.createImage(&amp;quot;resources/images/demo/&amp;quot; + imgName);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    public Image getCenterImage() {&lt;br /&gt;
      return CENTER_IMG;&lt;br /&gt;
    }&lt;br /&gt;
    public Image getDisallowedImage() {&lt;br /&gt;
      return BLOCKED_IMG;&lt;br /&gt;
    }&lt;br /&gt;
    public Image getEastImage() {&lt;br /&gt;
      return EAST_IMG;&lt;br /&gt;
    }&lt;br /&gt;
    public Image getNorthImage() {&lt;br /&gt;
      return NORTH_IMG;&lt;br /&gt;
    }&lt;br /&gt;
    public Image getSouthImage() {&lt;br /&gt;
      // same image as north&lt;br /&gt;
      return NORTH_IMG;&lt;br /&gt;
    }&lt;br /&gt;
    public Image getWestImage() {&lt;br /&gt;
      // same image as east&lt;br /&gt;
      return EAST_IMG;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Elegant Dockable framework ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
package net.eleritec.docking.demos.elegant;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
import javax.swing.JSplitPane;&lt;br /&gt;
import javax.swing.UIManager;&lt;br /&gt;
import javax.swing.plaf.basic.BasicSplitPaneDivider;&lt;br /&gt;
import javax.swing.plaf.basic.BasicSplitPaneUI;&lt;br /&gt;
import net.eleritec.docking.Dockable;&lt;br /&gt;
import net.eleritec.docking.DockingPort;&lt;br /&gt;
import net.eleritec.docking.defaults.DefaultDockingPort;&lt;br /&gt;
import net.eleritec.docking.defaults.StandardBorderManager;&lt;br /&gt;
&lt;br /&gt;
public class ElegantDemo extends JFrame {&lt;br /&gt;
  private JSplitPane horizontalSplit;&lt;br /&gt;
  private JSplitPane vertSplitRight;&lt;br /&gt;
  private JSplitPane vertSplitLeft;&lt;br /&gt;
  &lt;br /&gt;
  private ElegantPanel j2eeHierarchyView;&lt;br /&gt;
  private ElegantPanel j2eeNavView;&lt;br /&gt;
  private ElegantPanel consoleView;&lt;br /&gt;
  private ElegantPanel serversView;&lt;br /&gt;
  private ElegantPanel tasksView;&lt;br /&gt;
  private ElegantPanel searchView;&lt;br /&gt;
  private ElegantPanel synchronizeView;&lt;br /&gt;
  private ElegantPanel outlineView;&lt;br /&gt;
  private ElegantPanel editorView;&lt;br /&gt;
  &lt;br /&gt;
  private ElegantDockingPort topLeft;&lt;br /&gt;
  private ElegantDockingPort bottomLeft;&lt;br /&gt;
  private ElegantDockingPort topRight;&lt;br /&gt;
  private ElegantDockingPort bottomRight;&lt;br /&gt;
  &lt;br /&gt;
  public ElegantDemo() {&lt;br /&gt;
    super(&amp;quot;Elegant Docking Demo&amp;quot;);&lt;br /&gt;
    init();&lt;br /&gt;
  }&lt;br /&gt;
  private void init() {&lt;br /&gt;
    createViews();&lt;br /&gt;
    horizontalSplit = createSplitPane(JSplitPane.HORIZONTAL_SPLIT);&lt;br /&gt;
    vertSplitLeft = createSplitPane(JSplitPane.VERTICAL_SPLIT);&lt;br /&gt;
    vertSplitRight = createSplitPane(JSplitPane.VERTICAL_SPLIT);&lt;br /&gt;
    &lt;br /&gt;
    horizontalSplit.setLeftComponent(vertSplitLeft);&lt;br /&gt;
    horizontalSplit.setRightComponent(vertSplitRight);&lt;br /&gt;
    initDockingPorts();&lt;br /&gt;
    &lt;br /&gt;
    setContentPane(horizontalSplit);&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  private void createViews() {&lt;br /&gt;
    j2eeHierarchyView = new ElegantPanel(&amp;quot;J2EE Hierarchy&amp;quot;);&lt;br /&gt;
    j2eeNavView = new ElegantPanel(&amp;quot;J2EE Navigator&amp;quot;);&lt;br /&gt;
    consoleView = new ElegantPanel(&amp;quot;Console&amp;quot;);&lt;br /&gt;
    serversView = new ElegantPanel(&amp;quot;Servers&amp;quot;);&lt;br /&gt;
    tasksView = new ElegantPanel(&amp;quot;Tasks&amp;quot;);&lt;br /&gt;
    searchView = new ElegantPanel(&amp;quot;Search&amp;quot;);&lt;br /&gt;
    synchronizeView = new ElegantPanel(&amp;quot;Synchronize&amp;quot;);&lt;br /&gt;
    outlineView = new ElegantPanel(&amp;quot;Outline&amp;quot;);&lt;br /&gt;
    editorView = new ElegantPanel(&amp;quot;Editor&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  private void initDockingPorts() {&lt;br /&gt;
    topLeft = new ElegantDockingPort();&lt;br /&gt;
    bottomLeft = new ElegantDockingPort();&lt;br /&gt;
    topRight = new ElegantDockingPort();&lt;br /&gt;
    bottomRight = new ElegantDockingPort();&lt;br /&gt;
    &lt;br /&gt;
    topLeft.add(j2eeHierarchyView);&lt;br /&gt;
    topLeft.add(j2eeNavView);&lt;br /&gt;
    bottomLeft.add(outlineView);&lt;br /&gt;
    topRight.add(editorView);&lt;br /&gt;
    bottomRight.add(tasksView);&lt;br /&gt;
    bottomRight.add(serversView);&lt;br /&gt;
    bottomRight.add(consoleView);&lt;br /&gt;
    bottomRight.add(searchView);&lt;br /&gt;
    bottomRight.add(synchronizeView);    &lt;br /&gt;
    vertSplitLeft.setLeftComponent(topLeft);&lt;br /&gt;
    vertSplitLeft.setRightComponent(bottomLeft);&lt;br /&gt;
    vertSplitRight.setLeftComponent(topRight);&lt;br /&gt;
    vertSplitRight.setRightComponent(bottomRight);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  private void postInit() {&lt;br /&gt;
    horizontalSplit.setDividerLocation(0.3d);&lt;br /&gt;
    vertSplitLeft.setDividerLocation(0.75d);&lt;br /&gt;
    vertSplitRight.setDividerLocation(0.75d);&lt;br /&gt;
  }&lt;br /&gt;
  private static JSplitPane createSplitPane(int orientation) {&lt;br /&gt;
    JSplitPane split = new JSplitPane(orientation);&lt;br /&gt;
    // remove the border from the split pane&lt;br /&gt;
    split.setBorder(null);&lt;br /&gt;
         &lt;br /&gt;
    // set the divider size for a more reasonable, less bulky look &lt;br /&gt;
    split.setDividerSize(3);&lt;br /&gt;
    // check the UI.  If we can&amp;quot;t work with the UI any further, then&lt;br /&gt;
    // exit here.&lt;br /&gt;
    if (!(split.getUI() instanceof BasicSplitPaneUI))&lt;br /&gt;
       return split;&lt;br /&gt;
    //  grab the divider from the UI and remove the border from it&lt;br /&gt;
    BasicSplitPaneDivider divider =&lt;br /&gt;
             ((BasicSplitPaneUI) split.getUI()).getDivider();&lt;br /&gt;
    if (divider != null)&lt;br /&gt;
       divider.setBorder(null);&lt;br /&gt;
    return split;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    ElegantDemo demo = new ElegantDemo();&lt;br /&gt;
    demo.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    demo.setSize(800, 600);&lt;br /&gt;
    demo.setVisible(true);&lt;br /&gt;
    &lt;br /&gt;
    // now that we&amp;quot;re visible and validated, move the split pane&lt;br /&gt;
    // dividers to their proper locations.&lt;br /&gt;
    demo.postInit();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Simple demo for dockable windows ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
package net.eleritec.docking.demos;&lt;br /&gt;
import java.awt.BorderLayout;&lt;br /&gt;
import java.awt.Color;&lt;br /&gt;
import java.awt.Dimension;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
import net.eleritec.docking.DockingManager;&lt;br /&gt;
import net.eleritec.docking.DockingPort;&lt;br /&gt;
import net.eleritec.docking.defaults.DefaultDockingPort;&lt;br /&gt;
public class SimpleDemo extends JFrame {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    JFrame f = new SimpleDemo();&lt;br /&gt;
    f.setSize(600, 400);&lt;br /&gt;
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    f.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  public SimpleDemo() {&lt;br /&gt;
    super(&amp;quot;Simple Docking Demo&amp;quot;);&lt;br /&gt;
    setContentPane(createContentPane());&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  private JPanel createContentPane() {&lt;br /&gt;
    JPanel p = new JPanel(new BorderLayout(5, 5));&lt;br /&gt;
    p.add(buildDockingPort(Color.blue, &amp;quot;Blue&amp;quot;), BorderLayout.NORTH);&lt;br /&gt;
    p.add(buildDockingPort(Color.red, &amp;quot;Red&amp;quot;), BorderLayout.SOUTH);&lt;br /&gt;
    p.add(buildDockingPort(Color.green, &amp;quot;Green&amp;quot;), BorderLayout.EAST);&lt;br /&gt;
    p.add(buildDockingPort(Color.yellow, &amp;quot;Yellow&amp;quot;), BorderLayout.WEST);&lt;br /&gt;
    p.add(createDockingPort(), BorderLayout.CENTER);&lt;br /&gt;
    return p;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  private DefaultDockingPort buildDockingPort(Color color, String desc) {&lt;br /&gt;
    // create the DockingPort&lt;br /&gt;
    DefaultDockingPort port = createDockingPort();&lt;br /&gt;
    &lt;br /&gt;
    // create and register the Dockable panel&lt;br /&gt;
    JPanel p = new JPanel();&lt;br /&gt;
    p.setBackground(color);&lt;br /&gt;
    DockingManager.registerDockable(p, desc, true);&lt;br /&gt;
     &lt;br /&gt;
    // dock the panel and return the DockingPort&lt;br /&gt;
    port.dock(p, desc, DockingPort.CENTER_REGION, false);&lt;br /&gt;
    return port;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  private DefaultDockingPort createDockingPort() {&lt;br /&gt;
    DefaultDockingPort port = new DefaultDockingPort();&lt;br /&gt;
    port.setBackground(Color.gray);&lt;br /&gt;
    port.setPreferredSize(new Dimension(100, 100));&lt;br /&gt;
    return port;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SplitPane and dockable component ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
package net.eleritec.docking.demos;&lt;br /&gt;
import java.awt.BorderLayout;&lt;br /&gt;
import java.awt.Color;&lt;br /&gt;
import java.awt.ruponent;&lt;br /&gt;
import java.awt.Dimension;&lt;br /&gt;
import java.awt.Insets;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JLabel;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
import javax.swing.JSplitPane;&lt;br /&gt;
import javax.swing.border.LineBorder;&lt;br /&gt;
import javax.swing.plaf.basic.BasicSplitPaneDivider;&lt;br /&gt;
import javax.swing.plaf.basic.BasicSplitPaneUI;&lt;br /&gt;
import net.eleritec.docking.Dockable;&lt;br /&gt;
import net.eleritec.docking.DockableAdapter;&lt;br /&gt;
import net.eleritec.docking.DockingManager;&lt;br /&gt;
import net.eleritec.docking.DockingPort;&lt;br /&gt;
import net.eleritec.docking.defaults.ruponentProviderAdapter;&lt;br /&gt;
import net.eleritec.docking.defaults.DefaultDockingPort;&lt;br /&gt;
public class SplitPaneDemo extends JPanel {&lt;br /&gt;
  private JLabel titlebar;&lt;br /&gt;
  private Dockable dockableImpl;&lt;br /&gt;
  &lt;br /&gt;
  public SplitPaneDemo(String title) {&lt;br /&gt;
    super();&lt;br /&gt;
    titlebar = createTitlebar(&amp;quot; &amp;quot; + title);&lt;br /&gt;
    add(titlebar);&lt;br /&gt;
    setBorder(new LineBorder(Color.black));&lt;br /&gt;
    dockableImpl = new DockableImpl();&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  private JLabel createTitlebar(String title) {&lt;br /&gt;
    JLabel lbl = new JLabel(title);&lt;br /&gt;
    lbl.setForeground(Color.white);&lt;br /&gt;
    lbl.setBackground(Color.blue);&lt;br /&gt;
    lbl.setOpaque(true);&lt;br /&gt;
    return lbl;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  public void doLayout() {&lt;br /&gt;
    Insets in = getInsets();&lt;br /&gt;
    titlebar.setBounds(in.left, in.top, getWidth()-in.left-in.right, 25);&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  private Dockable getDockable() {&lt;br /&gt;
    return dockableImpl;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  private SplitPaneDemo getThis() {&lt;br /&gt;
    return this;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  private class DockableImpl extends DockableAdapter {&lt;br /&gt;
    public Component getDockable() {&lt;br /&gt;
      return getThis();&lt;br /&gt;
    }&lt;br /&gt;
    public String getDockableDesc() {&lt;br /&gt;
      return titlebar.getText().trim();&lt;br /&gt;
    }&lt;br /&gt;
    public Component getInitiator() {&lt;br /&gt;
      // the titlebar will the the &amp;quot;hot&amp;quot; component that initiates dragging&lt;br /&gt;
      return titlebar;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  private static class ComponentProvider extends ComponentProviderAdapter {&lt;br /&gt;
    public DockingPort createChildPort() {&lt;br /&gt;
      DefaultDockingPort port = new DefaultDockingPort();&lt;br /&gt;
      port.setComponentProvider(this);&lt;br /&gt;
      return port;&lt;br /&gt;
    }&lt;br /&gt;
    public JSplitPane createSplitPane() {&lt;br /&gt;
      JSplitPane split = new JSplitPane();&lt;br /&gt;
      // remove the border from the split pane&lt;br /&gt;
      split.setBorder(null);&lt;br /&gt;
      // set the divider size for a more reasonable, less bulky look &lt;br /&gt;
      split.setDividerSize(3);&lt;br /&gt;
      // check the UI.  If we can&amp;quot;t work with the UI any further, then&lt;br /&gt;
      // exit here.&lt;br /&gt;
      if (!(split.getUI() instanceof BasicSplitPaneUI))&lt;br /&gt;
        return split;&lt;br /&gt;
      //  grab the divider from the UI and remove the border from it&lt;br /&gt;
      BasicSplitPaneDivider divider = ((BasicSplitPaneUI) split.getUI()).getDivider();&lt;br /&gt;
      if (divider != null)&lt;br /&gt;
        divider.setBorder(null);&lt;br /&gt;
      return split;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  private static JPanel createContentPane() {&lt;br /&gt;
    JPanel p = new JPanel(new BorderLayout(5, 5));&lt;br /&gt;
    p.add(buildDockingPort(&amp;quot;North&amp;quot;), BorderLayout.NORTH);&lt;br /&gt;
    p.add(buildDockingPort(&amp;quot;South&amp;quot;), BorderLayout.SOUTH);&lt;br /&gt;
    p.add(buildDockingPort(&amp;quot;East&amp;quot;), BorderLayout.EAST);&lt;br /&gt;
    p.add(buildDockingPort(&amp;quot;West&amp;quot;), BorderLayout.WEST);&lt;br /&gt;
    p.add(createDockingPort(), BorderLayout.CENTER);&lt;br /&gt;
    return p;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  private static DefaultDockingPort buildDockingPort(String desc) {&lt;br /&gt;
    // create the DockingPort&lt;br /&gt;
    DefaultDockingPort port = createDockingPort();&lt;br /&gt;
    &lt;br /&gt;
    // create the Dockable panel&lt;br /&gt;
    SplitPaneDemo spd = new SplitPaneDemo(desc);&lt;br /&gt;
    DockingManager.registerDockable(spd.getDockable());&lt;br /&gt;
    // dock the panel and return the DockingPort&lt;br /&gt;
    port.dock(spd.getDockable(), DockingPort.CENTER_REGION);&lt;br /&gt;
    return port;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  private static DefaultDockingPort createDockingPort() {&lt;br /&gt;
    DefaultDockingPort port = new DefaultDockingPort();&lt;br /&gt;
    port.setBackground(Color.gray);&lt;br /&gt;
    port.setPreferredSize(new Dimension(100, 100));&lt;br /&gt;
    port.setComponentProvider(new ComponentProvider());&lt;br /&gt;
    return port;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    JFrame f = new JFrame(&amp;quot;Split Docking Demo&amp;quot;);&lt;br /&gt;
    f.setContentPane(createContentPane());&lt;br /&gt;
    f.setSize(600, 400);&lt;br /&gt;
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    f.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Swing dockable window ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Swing dock framework ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== TabbedPane and dockable component 2 ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
package net.eleritec.docking.demos;&lt;br /&gt;
import java.awt.BorderLayout;&lt;br /&gt;
import java.awt.Color;&lt;br /&gt;
import java.awt.ruponent;&lt;br /&gt;
import java.awt.Dimension;&lt;br /&gt;
import java.awt.Insets;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JLabel;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
import javax.swing.JTabbedPane;&lt;br /&gt;
import javax.swing.border.LineBorder;&lt;br /&gt;
import net.eleritec.docking.Dockable;&lt;br /&gt;
import net.eleritec.docking.DockableAdapter;&lt;br /&gt;
import net.eleritec.docking.DockingManager;&lt;br /&gt;
import net.eleritec.docking.DockingPort;&lt;br /&gt;
import net.eleritec.docking.defaults.ruponentProviderAdapter;&lt;br /&gt;
import net.eleritec.docking.defaults.DefaultDockingPort;&lt;br /&gt;
&lt;br /&gt;
public class TabbedPaneDemo extends JPanel {&lt;br /&gt;
  private JLabel titlebar;&lt;br /&gt;
  private Dockable dockableImpl;&lt;br /&gt;
  public TabbedPaneDemo(String title) {&lt;br /&gt;
    super();&lt;br /&gt;
    titlebar = createTitlebar(&amp;quot; &amp;quot; + title);&lt;br /&gt;
    add(titlebar);&lt;br /&gt;
    setBorder(new LineBorder(Color.black));&lt;br /&gt;
    dockableImpl = new DockableImpl();&lt;br /&gt;
  }&lt;br /&gt;
  private JLabel createTitlebar(String title) {&lt;br /&gt;
    JLabel lbl = new JLabel(title);&lt;br /&gt;
    lbl.setForeground(Color.white);&lt;br /&gt;
    lbl.setBackground(Color.blue);&lt;br /&gt;
    lbl.setOpaque(true);&lt;br /&gt;
    return lbl;&lt;br /&gt;
  }&lt;br /&gt;
  public void doLayout() {&lt;br /&gt;
    Insets in = getInsets();&lt;br /&gt;
    titlebar.setBounds(in.left, in.top, getWidth() - in.left - in.right, 25);&lt;br /&gt;
  }&lt;br /&gt;
  private TabbedPaneDemo getThis() {&lt;br /&gt;
    return this;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  private Dockable getDockable() {&lt;br /&gt;
    return dockableImpl;&lt;br /&gt;
  }&lt;br /&gt;
  private class DockableImpl extends DockableAdapter {&lt;br /&gt;
    public Component getDockable() {&lt;br /&gt;
      return getThis();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    public String getDockableDesc() {&lt;br /&gt;
      return titlebar.getText().trim();&lt;br /&gt;
    }&lt;br /&gt;
    public Component getInitiator() {&lt;br /&gt;
      // the titlebar will the the &amp;quot;hot&amp;quot; component that initiates dragging&lt;br /&gt;
      return titlebar;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  private static JPanel createContentPane() {&lt;br /&gt;
    JPanel p = new JPanel(new BorderLayout(5, 5));&lt;br /&gt;
    p.add(buildDockingPort(&amp;quot;North&amp;quot;), BorderLayout.NORTH);&lt;br /&gt;
    p.add(buildDockingPort(&amp;quot;South&amp;quot;), BorderLayout.SOUTH);&lt;br /&gt;
    p.add(buildDockingPort(&amp;quot;East&amp;quot;), BorderLayout.EAST);&lt;br /&gt;
    p.add(buildDockingPort(&amp;quot;West&amp;quot;), BorderLayout.WEST);&lt;br /&gt;
    p.add(createDockingPort(&amp;quot;Center&amp;quot;), BorderLayout.CENTER);&lt;br /&gt;
    return p;&lt;br /&gt;
  }&lt;br /&gt;
  private static DefaultDockingPort buildDockingPort(String desc) {&lt;br /&gt;
    // create the DockingPort&lt;br /&gt;
    DefaultDockingPort port = createDockingPort(desc);&lt;br /&gt;
    // create the Dockable panel&lt;br /&gt;
    TabbedPaneDemo cd = new TabbedPaneDemo(desc);&lt;br /&gt;
    DockingManager.registerDockable(cd.getDockable());&lt;br /&gt;
    // dock the panel and return the DockingPort&lt;br /&gt;
    port.dock(cd.getDockable(), DockingPort.CENTER_REGION);&lt;br /&gt;
    return port;&lt;br /&gt;
  }&lt;br /&gt;
  private static int getTabPosition(String desc) {&lt;br /&gt;
    if (&amp;quot;North&amp;quot;.equals(desc))&lt;br /&gt;
      return JTabbedPane.TOP;&lt;br /&gt;
    if (&amp;quot;South&amp;quot;.equals(desc))&lt;br /&gt;
      return JTabbedPane.BOTTOM;&lt;br /&gt;
    if (&amp;quot;East&amp;quot;.equals(desc))&lt;br /&gt;
      return JTabbedPane.RIGHT;&lt;br /&gt;
    if (&amp;quot;West&amp;quot;.equals(desc))&lt;br /&gt;
      return JTabbedPane.LEFT;&lt;br /&gt;
    return JTabbedPane.TOP;&lt;br /&gt;
  }&lt;br /&gt;
  private static DefaultDockingPort createDockingPort(String desc) {&lt;br /&gt;
    DefaultDockingPort port = new DefaultDockingPort();&lt;br /&gt;
    port.setBackground(Color.gray);&lt;br /&gt;
    port.setPreferredSize(new Dimension(200, 100));&lt;br /&gt;
    port.setComponentProvider(new ComponentProvider(getTabPosition(desc)));&lt;br /&gt;
    return port;&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    JFrame f = new JFrame(&amp;quot;Custom Conatainers Docking Demo&amp;quot;);&lt;br /&gt;
    f.setContentPane(createContentPane());&lt;br /&gt;
    f.setSize(600, 400);&lt;br /&gt;
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    f.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
  private static class ComponentProvider extends ComponentProviderAdapter {&lt;br /&gt;
    int tabPosition;&lt;br /&gt;
    private ComponentProvider(int tabs) {&lt;br /&gt;
      tabPosition = tabs;&lt;br /&gt;
    }&lt;br /&gt;
    public JTabbedPane createTabbedPane() {&lt;br /&gt;
      return new JTabbedPane(tabPosition);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;/div&gt;</summary>
			</entry>

	</feed>