001 package nl.cwi.sen1.gui; 002 003 import javax.swing.SwingUtilities; 004 005 import net.infonode.docking.DockingWindow; 006 import net.infonode.docking.RootWindow; 007 import net.infonode.docking.SplitWindow; 008 import net.infonode.docking.TabWindow; 009 import net.infonode.docking.View; 010 import nl.cwi.sen1.gui.component.StudioComponent; 011 012 public class StudioImplWithPredefinedLayout extends StudioImpl implements 013 StudioWithPredefinedLayout { 014 public static final String BOTTOM_RIGHT = "Bottom Right"; 015 016 public static final String BOTTOM_LEFT = "Bottom Left"; 017 018 public static final String TOP_RIGHT = "Top Right"; 019 020 public static final String TOP_LEFT = "Top Left"; 021 022 public static void main(String args[]) throws Exception { 023 // args = new String[6]; 024 // args[0] = "-TB_HOST_NAME"; 025 // args[1] = "localhost"; 026 // args[2] = "-TB_PORT"; 027 // args[3] = "8999"; 028 // args[4] = "-TB_TOOL_NAME"; 029 // args[5] = "gui"; 030 031 new StudioImplWithPredefinedLayout(args); 032 } 033 034 public StudioImplWithPredefinedLayout(String[] args) { 035 super(args); 036 } 037 038 protected RootWindow createRootWindow() { 039 RootWindow root = super.createRootWindow(); 040 041 TabWindow topleftWindow = new TabWindow(); 042 topleftWindow.setName(TOP_LEFT); 043 TabWindow toprightWindow = new TabWindow(); 044 toprightWindow.setName(TOP_RIGHT); 045 TabWindow bottomleftWindow = new TabWindow(); 046 bottomleftWindow.setName(BOTTOM_LEFT); 047 TabWindow bottomrightWindow = new TabWindow(); 048 bottomrightWindow.setName(BOTTOM_RIGHT); 049 050 SplitWindow leftWindow = new SplitWindow(false, 0.7f, topleftWindow, 051 bottomleftWindow); 052 SplitWindow rightWindow = new SplitWindow(false, 0.8f, toprightWindow, 053 bottomrightWindow); 054 055 root.setWindow(new SplitWindow(true, 0.25f, leftWindow, rightWindow)); 056 057 return root; 058 } 059 060 public void addComponent(StudioComponent component, 061 final String viewPosition) { 062 int id = registerComponent(component); 063 final View view = createView(component, id); 064 SwingUtilities.invokeLater(new Runnable() { 065 public void run() { 066 showView(view, viewPosition); 067 } 068 }); 069 addStudioComponentNameChangedListener(component); 070 addStudioComponentTooltipChangedListener(component); 071 } 072 073 private void showView(View view, String viewPosition) { 074 TabWindow tabWindow = (TabWindow) getDockingWindow(rootWindow, 075 viewPosition); 076 if (tabWindow == null) { 077 tabWindow = new TabWindow(); 078 tabWindow.setName(TOP_RIGHT); 079 if (rootWindow.getChildWindowCount() == 0) { 080 rootWindow.setWindow(tabWindow); 081 } else { 082 System.err.println(rootWindow.getChildWindowCount()); 083 SplitWindow splitWindow = new SplitWindow(true, rootWindow 084 .getWindow(), tabWindow); 085 rootWindow.setWindow(splitWindow); 086 } 087 } 088 089 tabWindow.addTab(view); 090 view.requestFocus(); 091 rootWindow.revalidate(); 092 } 093 094 private DockingWindow getDockingWindow(DockingWindow dockingWindow, 095 String string) { 096 if (string.equals(dockingWindow.getName())) { 097 return dockingWindow; 098 } 099 100 for (int i = 0; i < dockingWindow.getChildWindowCount(); i++) { 101 DockingWindow found = getDockingWindow(dockingWindow 102 .getChildWindow(i), string); 103 if (found != null) { 104 return found; 105 } 106 } 107 108 return null; 109 } 110 }