package net.eleritec.docking.demos.elegant;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JSplitPane;
import javax.swing.UIManager;
import javax.swing.plaf.basic.BasicSplitPaneDivider;
import javax.swing.plaf.basic.BasicSplitPaneUI;
import net.eleritec.docking.Dockable;
import net.eleritec.docking.DockingPort;
import net.eleritec.docking.defaults.DefaultDockingPort;
import net.eleritec.docking.defaults.StandardBorderManager;
public class ElegantDemo extends JFrame {
private JSplitPane horizontalSplit;
private JSplitPane vertSplitRight;
private JSplitPane vertSplitLeft;
private ElegantPanel j2eeHierarchyView;
private ElegantPanel j2eeNavView;
private ElegantPanel consoleView;
private ElegantPanel serversView;
private ElegantPanel tasksView;
private ElegantPanel searchView;
private ElegantPanel synchronizeView;
private ElegantPanel outlineView;
private ElegantPanel editorView;
private ElegantDockingPort topLeft;
private ElegantDockingPort bottomLeft;
private ElegantDockingPort topRight;
private ElegantDockingPort bottomRight;
public ElegantDemo() {
super("Elegant Docking Demo");
init();
}
private void init() {
createViews();
horizontalSplit = createSplitPane(JSplitPane.HORIZONTAL_SPLIT);
vertSplitLeft = createSplitPane(JSplitPane.VERTICAL_SPLIT);
vertSplitRight = createSplitPane(JSplitPane.VERTICAL_SPLIT);
horizontalSplit.setLeftComponent(vertSplitLeft);
horizontalSplit.setRightComponent(vertSplitRight);
initDockingPorts();
setContentPane(horizontalSplit);
}
private void createViews() {
j2eeHierarchyView = new ElegantPanel("J2EE Hierarchy");
j2eeNavView = new ElegantPanel("J2EE Navigator");
consoleView = new ElegantPanel("Console");
serversView = new ElegantPanel("Servers");
tasksView = new ElegantPanel("Tasks");
searchView = new ElegantPanel("Search");
synchronizeView = new ElegantPanel("Synchronize");
outlineView = new ElegantPanel("Outline");
editorView = new ElegantPanel("Editor");
}
private void initDockingPorts() {
topLeft = new ElegantDockingPort();
bottomLeft = new ElegantDockingPort();
topRight = new ElegantDockingPort();
bottomRight = new ElegantDockingPort();
topLeft.add(j2eeHierarchyView);
topLeft.add(j2eeNavView);
bottomLeft.add(outlineView);
topRight.add(editorView);
bottomRight.add(tasksView);
bottomRight.add(serversView);
bottomRight.add(consoleView);
bottomRight.add(searchView);
bottomRight.add(synchronizeView);
vertSplitLeft.setLeftComponent(topLeft);
vertSplitLeft.setRightComponent(bottomLeft);
vertSplitRight.setLeftComponent(topRight);
vertSplitRight.setRightComponent(bottomRight);
}
private void postInit() {
horizontalSplit.setDividerLocation(0.3d);
vertSplitLeft.setDividerLocation(0.75d);
vertSplitRight.setDividerLocation(0.75d);
}
private static JSplitPane createSplitPane(int orientation) {
JSplitPane split = new JSplitPane(orientation);
// remove the border from the split pane
split.setBorder(null);
// set the divider size for a more reasonable, less bulky look
split.setDividerSize(3);
// check the UI. If we can't work with the UI any further, then
// exit here.
if (!(split.getUI() instanceof BasicSplitPaneUI))
return split;
// grab the divider from the UI and remove the border from it
BasicSplitPaneDivider divider =
((BasicSplitPaneUI) split.getUI()).getDivider();
if (divider != null)
divider.setBorder(null);
return split;
}
public static void main(String[] args) {
ElegantDemo demo = new ElegantDemo();
demo.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
demo.setSize(800, 600);
demo.setVisible(true);
// now that we're visible and validated, move the split pane
// dividers to their proper locations.
demo.postInit();
}
}
|