import com.jidesoft.docking.DockContext;
import com.jidesoft.docking.DockableFrame;
import com.jidesoft.docking.DockableHolderPanel;

import javax.swing.*;
import java.awt.*;

public class TestTest5 {
   public static void main(String[] args) {
      SwingUtilities.invokeLater(new Runnable(){

         @Override
         public void run() {
            MyFrame frameA = new MyFrame("frame A", false, true);

            JLabel labelA = new JLabel("frame A");
            labelA.setOpaque(true);
            labelA.setBackground(Color.GREEN);

            DockableFrame dFrameA = new DockableFrame();
            dFrameA.setLayout(new BorderLayout());
            dFrameA.setKey("dFrameA");
            dFrameA.setInitSide(DockContext.DOCK_SIDE_NORTH);
            dFrameA.add(labelA, BorderLayout.CENTER);

            frameA.dockableHolderPanel.getDockingManager().addFrame(dFrameA);
            frameA.dockableHolderPanel.getDockingManager().resetToDefault();
             frameA.dockableHolderPanel.getDockingManager().setSidebarRollover(false);
            frameA.setLocation(450,0);
            frameA.setVisible(true);

            JLabel labelD = new JLabel("frame D");
            labelD.setOpaque(true);
            labelD.setBackground(Color.RED);

            DockableFrame dFrameD = new DockableFrame();
            dFrameD.setLayout(new BorderLayout());
            dFrameD.setKey("dFrameD");
            dFrameD.setInitSide(DockContext.DOCK_SIDE_NORTH);
            dFrameD.add(new JScrollPane(labelD), BorderLayout.CENTER);

            MyFrame frameD = new MyFrame("frame D", false, true);
            frameD.dockableHolderPanel.getDockingManager().addFrame(dFrameD);
            frameD.dockableHolderPanel.getDockingManager().resetToDefault();
             frameD.dockableHolderPanel.getDockingManager().setSidebarRollover(false);
            frameD.setLocation(0,400);
            frameD.setVisible(true);
         }

      });
   }


   private static class MyFrame extends JFrame{

      private static final long serialVersionUID = -3420291254514362370L;

      public DockableHolderPanel dockableHolderPanel;

      public MyFrame(String title, boolean showWorkspace, boolean crossDragAndDrop){
         super(title);
         setLayout(new BorderLayout());
         setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
         setSize(450,200);

         dockableHolderPanel = new DockableHolderPanel();
         dockableHolderPanel.getDockingManager().setCrossDraggingAllowed(crossDragAndDrop);
         dockableHolderPanel.getDockingManager().setCrossDroppingAllowed(crossDragAndDrop);
         dockableHolderPanel.getDockingManager().setUseFrameBounds(false);
         dockableHolderPanel.getDockingManager().setUseFrameState(false);
         dockableHolderPanel.getDockingManager().setDragAllTabs(false);
         dockableHolderPanel.getDockingManager().setFloatable(true);
         dockableHolderPanel.getDockingManager().setShowWorkspace(showWorkspace);


         add(dockableHolderPanel, BorderLayout.CENTER);
      }

      @Override
      public void dispose(){
         dockableHolderPanel.dispose();
         super.dispose();
      }
   }
}