changeset 1003:0e3c1efc6c15

Better widths for the network interface table Reviewed-by: neugens Review-thread: http://icedtea.classpath.org/pipermail/thermostat/2013-February/005855.html PR 1310
author Omair Majid <omajid@redhat.com>
date Tue, 26 Feb 2013 12:04:12 -0500
parents 81508fc5f27b
children b0879f47909f
files host-overview/client-swing/src/main/java/com/redhat/thermostat/host/overview/client/swing/internal/HostOverviewPanel.java
diffstat 1 files changed, 24 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/host-overview/client-swing/src/main/java/com/redhat/thermostat/host/overview/client/swing/internal/HostOverviewPanel.java	Tue Feb 26 10:56:45 2013 -0500
+++ b/host-overview/client-swing/src/main/java/com/redhat/thermostat/host/overview/client/swing/internal/HostOverviewPanel.java	Tue Feb 26 12:04:12 2013 -0500
@@ -48,6 +48,8 @@
 import javax.swing.SwingUtilities;
 import javax.swing.table.DefaultTableModel;
 import javax.swing.table.JTableHeader;
+import javax.swing.table.TableCellRenderer;
+import javax.swing.table.TableColumnModel;
 
 import com.redhat.thermostat.client.swing.ComponentVisibleListener;
 import com.redhat.thermostat.client.swing.SwingComponent;
@@ -83,6 +85,8 @@
     private Object[] networkTableColumns;
     private Object[][] networkTableData;
 
+    private JTable networkTable;
+
     public HostOverviewPanel() {
         super();
         initializePanel();
@@ -188,6 +192,25 @@
             @Override
             public void run() {
                 networkTableModel.setDataVector(networkTableData, networkTableColumns);
+
+                /*
+                 * Compute and set initial (minimum) widths for the table. The
+                 * LayoutManager will give it extra space because the table is
+                 * narrower than what it has to be and that space is distributed
+                 * among all the columns as extra.
+                 */
+                TableColumnModel columnModel = networkTable.getColumnModel();
+                for (int col = 0; col < networkTable.getColumnCount(); col++) {
+                    int maxWidth = Integer.MIN_VALUE;
+
+                    for (int row = 0; row < networkTable.getRowCount(); row++) {
+                        TableCellRenderer renderer = networkTable.getCellRenderer(row, col);
+                        Component component = networkTable.prepareRenderer(renderer, row, col);
+                        maxWidth = Math.max(maxWidth, component.getPreferredSize().width);
+                    }
+
+                    columnModel.getColumn(col).setPreferredWidth(maxWidth);
+                }
             }
         });
     }
@@ -302,7 +325,7 @@
 
         panel.setLayout(new BorderLayout(0, 0));
 
-        JTable networkTable = new JTable(networkTableModel);
+        networkTable = new JTable(networkTableModel);
         panel.add(networkTable);
         JTableHeader header = networkTable.getTableHeader();
         panel.add(header, BorderLayout.PAGE_START);