Revision: 6580
          http://sourceforge.net/p/jump-pilot/code/6580
Author:   edso
Date:     2020-10-05 19:54:50 +0000 (Mon, 05 Oct 2020)
Log Message:
-----------
move constructor and jbinit to top of class source
add north/south panel getter
make toolbar panel wrap properly and align it left
add a separator line below toolbar if buttons exist

Modified Paths:
--------------
    
core/trunk/src/com/vividsolutions/jump/workbench/ui/toolbox/ToolboxDialog.java

Modified: 
core/trunk/src/com/vividsolutions/jump/workbench/ui/toolbox/ToolboxDialog.java
===================================================================
--- 
core/trunk/src/com/vividsolutions/jump/workbench/ui/toolbox/ToolboxDialog.java  
    2020-10-05 19:43:52 UTC (rev 6579)
+++ 
core/trunk/src/com/vividsolutions/jump/workbench/ui/toolbox/ToolboxDialog.java  
    2020-10-05 19:54:50 UTC (rev 6580)
@@ -42,9 +42,11 @@
 import java.util.List;
 
 import javax.swing.AbstractButton;
+import javax.swing.BorderFactory;
 import javax.swing.Icon;
 import javax.swing.JDialog;
 import javax.swing.JPanel;
+import javax.swing.JSeparator;
 import javax.swing.JToggleButton;
 
 import com.vividsolutions.jump.workbench.WorkbenchContext;
@@ -69,7 +71,119 @@
 // taskframe has been reworked, still it works, so leave it in peace [ede 
01.2013]
 public class ToolboxDialog extends JDialog {
     private ArrayList pluginsTools = new ArrayList();
-  
+
+    public ToolboxDialog(final WorkbenchContext context) {
+      super(context.getWorkbench().getFrame(), "", false);
+      jbInit();
+      this.context = context;
+      setResizable(true);
+      setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE);
+      this.addComponentListener(new ComponentAdapter() {
+        public void componentHidden(ComponentEvent e) {
+          if 
(buttons.contains(context.getWorkbench().getFrame().getToolBar().getSelectedCursorToolButton()))
 {
+            ((AbstractButton) 
context.getWorkbench().getFrame().getToolBar().getButtonGroup().getElements()
+                .nextElement()).doClick();
+          }
+        }
+      });
+    }
+
+    private WorkbenchContext context;
+
+    private JPanel northPanel = new JPanel();
+    private JPanel centerPanel = new JPanel();
+    private JPanel southPanel = new JPanel();
+
+    private JPanel toolbarsPanel = new JPanel();
+    private JSeparator northPanelSeparator = new 
JSeparator(JSeparator.HORIZONTAL);
+
+    private GridLayout gridLayout1 = new GridLayout();
+
+    private void jbInit() {
+      getContentPane().setLayout(new BorderLayout());
+
+      northPanel.setLayout(new BorderLayout());
+      getContentPane().add(northPanel, BorderLayout.NORTH);
+      centerPanel.setLayout(new BorderLayout());
+      getContentPane().add(centerPanel, BorderLayout.CENTER);
+      southPanel.setLayout(new BorderLayout());
+      getContentPane().add(southPanel, BorderLayout.SOUTH);
+
+      toolbarsPanel.setLayout(gridLayout1);
+      // pad toolbar left/right a bit
+      toolbarsPanel.setBorder(BorderFactory.createEmptyBorder(2, 10, 2, 10));
+      gridLayout1.setColumns(1);
+
+      // add toolbar panel to the north panel
+      northPanel.add(toolbarsPanel, BorderLayout.CENTER);
+      // separate toolbar visually from the center panel
+      northPanel.add(northPanelSeparator, BorderLayout.SOUTH);
+      // only shown if there are buttons registered
+      this.addComponentListener(new ComponentAdapter() {
+        @Override
+        public void componentShown(ComponentEvent e) {
+          northPanelSeparator.setVisible(pluginsTools.size()>0);
+        }
+      });
+    }
+
+    public JPanel getNorthPanel() {
+      return northPanel;
+    }
+
+    public JPanel getSouthPanel() {
+      return southPanel;
+    }
+
+    public JPanel getCenterPanel() {
+      return centerPanel;
+    }
+
+    /**
+     * [ede 01.2013] disabled and replaced with ComponentListener above Call 
this
+     * method after all the CursorTools have been added.
+     */
+    public void finishAddingComponents() {
+    }
+
+    public void setVisible(boolean visible) {
+      if (visible && !locationInitializedBeforeMakingDialogVisible) {
+        // here comes a hack
+        addComponentListener(new ComponentListener() {
+          public void componentShown(ComponentEvent e) {
+            // we assume all plugins registered before us, so they will
+            // install before us also, so we pack and unregister ourself
+            pack();
+            removeComponentListener(this);
+          }
+
+          public void componentResized(ComponentEvent e) {
+          }
+
+          public void componentMoved(ComponentEvent e) {
+          }
+
+          public void componentHidden(ComponentEvent e) {
+          }
+        });
+
+        // #initializeLocation was called in #finishAddingComponents,
+        // but the Workbench may have moved since then, so call
+        // #initializeLocation again just before making the dialog
+        // visible. [Jon Aquino 2005-03-14]
+        pack();
+        initializeLocation();
+        locationInitializedBeforeMakingDialogVisible = true;
+      }
+      // TODO: change this strange programming, see above
+      // weird shit.. Plugins register as ComponentListeners to us, so
+      // they can add buttons as soon as we are shown [ede 01.2013]
+      // this leads to the phenomenon that on shown we see the editTooolbar
+      // extending while plugins add their tools to it and pack() it after
+      // each entry in finishAddingComponents()
+      super.setVisible(visible);
+    }
+
     public AbstractButton getButton(Class cursorToolClass) {
         for (Iterator i = toolBars.iterator(); i.hasNext();) {
             WorkbenchToolBar toolBar = (WorkbenchToolBar) i.next();
@@ -149,69 +263,6 @@
         toolbarsPanel.add(getToolBar());
     }
 
-    public ToolboxDialog(final WorkbenchContext context) {
-        super(context.getWorkbench().getFrame(), "", false);
-        try {
-            jbInit();
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        this.context = context;
-        setResizable(true);
-        setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE);
-        this.addComponentListener(new ComponentAdapter() {
-            public void componentHidden(ComponentEvent e) {
-                if (buttons.contains(context.getWorkbench().getFrame()
-                        .getToolBar().getSelectedCursorToolButton())) {
-                    ((AbstractButton) context.getWorkbench().getFrame()
-                            .getToolBar().getButtonGroup().getElements()
-                            .nextElement()).doClick();
-                }
-            }
-        });
-    }
-
-    /**
-     * [ede 01.2013] disabled and replaced with ComponentListener above
-     * Call this method after all the CursorTools have been added.
-     */
-    public void finishAddingComponents() {}
-
-    public void setVisible(boolean visible) {
-        if (visible && !locationInitializedBeforeMakingDialogVisible) {
-            //here comes a hack
-            addComponentListener(new ComponentListener() {
-              public void componentShown(ComponentEvent e) {
-                // we assume all plugins registered before us, so they will
-                // install before us also, so we pack and unregister ourself
-                pack();
-                removeComponentListener(this);
-              }
-              
-              public void componentResized(ComponentEvent e) {}
-              
-              public void componentMoved(ComponentEvent e) {}
-              
-              public void componentHidden(ComponentEvent e) {}
-            });
-          
-            // #initializeLocation was called in #finishAddingComponents,
-            // but the Workbench may have moved since then, so call
-            // #initializeLocation again just before making the dialog
-            // visible. [Jon Aquino 2005-03-14]
-            pack();
-            initializeLocation();
-            locationInitializedBeforeMakingDialogVisible = true;
-        }
-        // TODO: change this strange programming, see above
-        // weird shit.. Plugins register as ComponentListeners to us, so 
-        // they can add buttons as soon as we are shown [ede 01.2013]
-        // this leads to the phenomenon that on shown we see the editTooolbar 
-        //  extending while plugins add their tools to it and pack() it after
-        //  each entry in finishAddingComponents()
-        super.setVisible(visible);
-    }
-    
     private boolean locationInitializedBeforeMakingDialogVisible = false;
 
     private void initializeLocation() {
@@ -222,29 +273,6 @@
     private GUIUtil.Location initialLocation = new GUIUtil.Location(0, false,
             0, false);
 
-    private WorkbenchContext context;
-
-    private JPanel centerPanel = new JPanel();
-    private JPanel floatPanel = new JPanel();
-    private JPanel toolbarsPanel = new JPanel();
-    
-    private GridLayout gridLayout1 = new GridLayout();
-
-    private void jbInit() throws Exception {
-        getContentPane().setLayout(new BorderLayout());
-        toolbarsPanel.setLayout(gridLayout1);
-        gridLayout1.setColumns(1);
-        // float them to the middle
-        floatPanel.add(toolbarsPanel);
-        getContentPane().add(floatPanel, BorderLayout.CENTER);
-        centerPanel.setLayout(new BorderLayout());
-        getContentPane().add(centerPanel, BorderLayout.SOUTH);
-    }
-
-    public JPanel getCenterPanel() {
-        return centerPanel;
-    }
-
     public void updateEnabledState() {
         for (Iterator i = toolBars.iterator(); i.hasNext();) {
             WorkbenchToolBar toolBar = (WorkbenchToolBar) i.next();



_______________________________________________
Jump-pilot-devel mailing list
Jump-pilot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel

Reply via email to