public void addRight(Component component, boolean scroll) {
   if (scroll) {
     rightPanel.add(new DockPanel(component));
   } else {
     rightPanel.add(component);
   }
 }
 public void addLeft(Component component, boolean scroll) {
   if (scroll) {
     leftPanel.add(new DockPanel(component));
   } else {
     leftPanel.add(component);
   }
 }
 public void setRightVisible(boolean v) {
   rightPanel.setVisible(v);
   if (!v) {
     innerSplit.setDividerSize(0);
   } else {
     innerSplit.setDividerSize(5);
   }
 }
 public void setLeftVisible(boolean v) {
   leftPanel.setVisible(v);
   if (!v) {
     outterSplit.setDividerSize(0);
   } else {
     outterSplit.setDividerSize(5);
   }
 }
  public DockingContainerPanel() {

    // Create components
    leftPanel = new SideDockingPanel();
    rightPanel = new SideDockingPanel();

    centerTabPanel = new EmbeddedTabbedPane();
    southTabPanel = new EmbeddedTabbedPane();

    ContainerListener containerListener =
        new ContainerListener() {

          public void componentAdded(ContainerEvent e) {
            log.info("Component Added");
            componentList.add(e.getComponent());
          }

          public void componentRemoved(ContainerEvent e) {
            log.info("Component Removed");
            componentList.remove(e.getComponent());
          }
        };

    leftPanel.addContainerListener(containerListener);
    rightPanel.addContainerListener(containerListener);
    centerTabPanel.addContainerListener(containerListener);
    southTabPanel.addContainerListener(containerListener);

    // Set Layout
    BorderLayout layout = new BorderLayout();
    setLayout(layout);

    // add(leftPanel, BorderLayout.WEST);
    // add(rightPanel, BorderLayout.EAST);
    // add(centerTabPanel, BorderLayout.CENTER);

    verticalSplit = new SplitPane(SplitPane.VERTICAL_SPLIT);
    verticalSplit.setBorder(BorderFactory.createEmptyBorder());
    verticalSplit.setResizeWeight(1);

    outterSplit = new SplitPane(SplitPane.HORIZONTAL_SPLIT);
    outterSplit.setBorder(BorderFactory.createEmptyBorder());
    outterSplit.setResizeWeight(0);
    // outterSplit.setDividerSize(5);

    innerSplit = new SplitPane(SplitPane.HORIZONTAL_SPLIT);
    innerSplit.setBorder(BorderFactory.createEmptyBorder());
    innerSplit.setResizeWeight(1);
    // innerSplit.setDividerSize(5);

    innerSplit.add(centerTabPanel);
    innerSplit.add(rightPanel);

    outterSplit.add(leftPanel);
    outterSplit.add(innerSplit);

    verticalSplit.add(outterSplit);
    verticalSplit.add(southTabPanel);

    add(verticalSplit, BorderLayout.CENTER);
  }