Print

Print


Author: [log in to unmask]
Date: Thu Mar 26 16:04:07 2015
New Revision: 2579

Log:
Improve layout and sizing of plot info panel.

Modified:
    java/trunk/monitoring-app/src/main/java/org/hps/monitoring/application/PlotInfoPanel.java

Modified: java/trunk/monitoring-app/src/main/java/org/hps/monitoring/application/PlotInfoPanel.java
 =============================================================================
--- java/trunk/monitoring-app/src/main/java/org/hps/monitoring/application/PlotInfoPanel.java	(original)
+++ java/trunk/monitoring-app/src/main/java/org/hps/monitoring/application/PlotInfoPanel.java	Thu Mar 26 16:04:07 2015
@@ -27,6 +27,7 @@
 import java.util.TimerTask;
 
 import javax.swing.BorderFactory;
+import javax.swing.Box;
 import javax.swing.BoxLayout;
 import javax.swing.JButton;
 import javax.swing.JComboBox;
@@ -53,11 +54,11 @@
     
     PlotterRegion currentRegion;
     Object currentObject;
-    static final int INSET_SIZE = 5;
-    static final int BORDER_SIZE = 10;
-
+    
+    static final int MAX_ROWS = 13;
+    static final int MIN_WIDTH = 400;
+    static final int MIN_HEIGHT = 300;
     static final String[] COLUMN_NAMES = { "Field", "Value" };
-
     static final String PLOT_SELECTED = "PlotSelected";
 
     Timer timer = new Timer();
@@ -68,20 +69,32 @@
     @SuppressWarnings("unchecked")
     PlotInfoPanel() {
                 
-        setLayout(new FlowLayout(FlowLayout.LEFT));
+        setLayout(new FlowLayout(FlowLayout.CENTER));
 
         JPanel leftPanel = new JPanel();
         leftPanel.setLayout(new BoxLayout(leftPanel, BoxLayout.PAGE_AXIS));
-           
-        JPanel buttonPanel = new JPanel();
+        leftPanel.setPreferredSize(new Dimension(MIN_WIDTH, MIN_HEIGHT));
+        
+        Dimension filler = new Dimension(0, 10);
+        
+        // Save button.
         saveButton = new JButton("Save Plots ...");
         saveButton.setActionCommand(Commands.SAVE_SELECTED_PLOTS);
-        buttonPanel.add(saveButton);       
-        //c.anchor = GridBagConstraints.NORTHWEST;
-        leftPanel.add(buttonPanel);
-
-        plotComboBox = new JComboBox<Object>();
+        saveButton.setAlignmentX(CENTER_ALIGNMENT);
+        leftPanel.add(saveButton);
+        
+        leftPanel.add(new Box.Filler(filler, filler, filler));
+
+        // Combo box for selecting plotted object.
+        plotComboBox = new JComboBox<Object>() {
+            public Dimension getMaximumSize() {
+                Dimension max = super.getMaximumSize();
+                max.height = getPreferredSize().height;
+                return max;
+            }
+        };
         plotComboBox.setActionCommand(PLOT_SELECTED);
+        plotComboBox.setAlignmentX(CENTER_ALIGNMENT);
         plotComboBox.setRenderer(new BasicComboBoxRenderer() {
             @SuppressWarnings("rawtypes")
             public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
@@ -98,12 +111,15 @@
         plotComboBox.addActionListener(this);
         leftPanel.add(plotComboBox);
         
+        leftPanel.add(new Box.Filler(filler, filler, filler));
+        
+        // Table with plot info.
         String data[][] = new String[0][0];
         model = new DefaultTableModel(data, COLUMN_NAMES);
+        model.setColumnIdentifiers(COLUMN_NAMES);
         infoTable.setModel(model);
-        infoTable.getColumn("Field").setMinWidth(25);
-        infoTable.getColumn("Value").setMinWidth(20);
-        infoTable.setMinimumSize(new Dimension(100, 200));
+        ((DefaultTableModel)infoTable.getModel()).setRowCount(MAX_ROWS);
+        infoTable.setAlignmentX(CENTER_ALIGNMENT);
         leftPanel.add(infoTable);
         
         add(leftPanel);
@@ -185,8 +201,6 @@
     synchronized void setCurrentRegion(PlotterRegion region) {
         if (region != currentRegion) {
             currentRegion = region;
-            //if (currentRegion.title() != null)
-            //    setTitle(currentRegion.title());
             updateComboBox();
             setCurrentObject(plotComboBox.getSelectedItem());
             setupContentPane();
@@ -206,8 +220,7 @@
      * Update the info table from the state of the current AIDA object.
      */
     void updateTable() {
-        model.setRowCount(0);
-        model.setColumnIdentifiers(COLUMN_NAMES);
+        model.setRowCount(0);        
         if (currentObject instanceof IHistogram1D) {
             addRows((IHistogram1D) currentObject);
         } else if (currentObject instanceof IHistogram2D) {