public void setSouthVisible(boolean v) {
   southTabPanel.setVisible(v);
   if (!v) {
     verticalSplit.setDividerSize(0);
   } else {
     verticalSplit.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);
  }
 public void addSouth(String title, Component component) {
   southTabPanel.addTab(title, component);
 }
 public void addCenter(String title, Component component) {
   centerTabPanel.addTab(title, component);
 }
  public void setComponentVisible(Component comp) {
    if (containerHasComponent(centerTabPanel, comp)) centerTabPanel.setSelectedComponent(comp);

    if (containerHasComponent(southTabPanel, comp)) southTabPanel.setSelectedComponent(comp);
  }
 public int getSelectedSouthTabIndex() {
   return southTabPanel.getSelectedIndex();
 }
 public int getSelectedCenterTabIndex() {
   return centerTabPanel.getSelectedIndex();
 }