diff options
author | Jose <jose@zeroc.com> | 2012-11-01 00:16:56 +0100 |
---|---|---|
committer | Jose <jose@zeroc.com> | 2012-11-01 00:16:56 +0100 |
commit | 92067a985f1c7cf25d7b5ce3db8ddf80e89682c9 (patch) | |
tree | 12bab0a8a8dbfbacd6348a619995b42becd41007 /java/src/IceGridGUI/LiveDeployment/MetricsViewEditor.java | |
parent | Fixed IceStorm metrics issues (diff) | |
download | ice-92067a985f1c7cf25d7b5ce3db8ddf80e89682c9.tar.bz2 ice-92067a985f1c7cf25d7b5ce3db8ddf80e89682c9.tar.xz ice-92067a985f1c7cf25d7b5ce3db8ddf80e89682c9.zip |
IceGridGUI metrics fixes:
* Update the GUI to also display disabled metrics
* Add enable/disable popup menu to metris views, correspoding to new
methods enableMetricsView/disableMetricsView in Metrics.ice
* Fixed ICE-4919 ConnectionRefusedException error dialog keeps popping up
* Fixed ICE-4917 bogus IceGrid GUI error message
Diffstat (limited to 'java/src/IceGridGUI/LiveDeployment/MetricsViewEditor.java')
-rw-r--r-- | java/src/IceGridGUI/LiveDeployment/MetricsViewEditor.java | 325 |
1 files changed, 170 insertions, 155 deletions
diff --git a/java/src/IceGridGUI/LiveDeployment/MetricsViewEditor.java b/java/src/IceGridGUI/LiveDeployment/MetricsViewEditor.java index b7aa34c2638..27b7e9e7176 100644 --- a/java/src/IceGridGUI/LiveDeployment/MetricsViewEditor.java +++ b/java/src/IceGridGUI/LiveDeployment/MetricsViewEditor.java @@ -75,7 +75,7 @@ import IceGridGUI.*; public class MetricsViewEditor extends Editor implements MetricsFieldContext { - private class RefreshThread extends Thread + private static class RefreshThread extends Thread { RefreshThread(long period, MetricsView node) { @@ -221,27 +221,24 @@ public class MetricsViewEditor extends Editor implements MetricsFieldContext private final JTable _table; } - private class SelectionListener implements TreeSelectionListener + private static class SelectionListener implements TreeSelectionListener { public void valueChanged(TreeSelectionEvent e) { - // // Stop the refresh thread. // - stopRefreshThread(); + MetricsViewEditor.stopRefreshThread(); // - // If selected node is a MetricsView start the refresh thread. + // If selected node is a MetricsView and it is enabled; start the refresh thread. // - if(e.isAddedPath() && e.getPath().getLastPathComponent() instanceof MetricsView) + if(e.isAddedPath() && e.getPath().getLastPathComponent() instanceof MetricsView && + ((MetricsView )e.getPath().getLastPathComponent()).isEnabled()) { - _node = (MetricsView)e.getPath().getLastPathComponent(); - startRefreshThread(_node); + MetricsViewEditor.startRefreshThread((MetricsView)e.getPath().getLastPathComponent()); } } - - private MetricsView _node; } MetricsViewEditor(Root root) @@ -270,13 +267,14 @@ public class MetricsViewEditor extends Editor implements MetricsFieldContext return _refreshPeriod; } - void startRefreshThread(MetricsView node) + synchronized static void startRefreshThread(MetricsView node) { + assert(_refreshThread == null); _refreshThread = new RefreshThread(_refreshPeriod, node); _refreshThread.start(); } - void stopRefreshThread() + synchronized static void stopRefreshThread() { if(_refreshThread != null) { @@ -324,6 +322,18 @@ public class MetricsViewEditor extends Editor implements MetricsFieldContext } @Override + public String toString() + { + StringBuilder builder = new StringBuilder(); + builder.append(node); + builder.append("/"); + builder.append(server); + builder.append("/"); + builder.append(view); + return builder.toString(); + } + + @Override public int hashCode() { int h = IceInternal.HashUtil.hashAdd(5381, node); @@ -611,148 +621,150 @@ public class MetricsViewEditor extends Editor implements MetricsFieldContext public void show(final MetricsView node, final Map<java.lang.String, IceMX.Metrics[]> data, final long timestamp) { - if(data == null) + boolean rebuildPanel = false; + if(!node.isEnabled()) { - return; + _tables.clear(); + rebuildPanel = true; } - - boolean rebuildPanel = false; - - for(final Map.Entry<String, IceMX.Metrics[]> entry : data.entrySet()) + else if(data != null) { - if(_tables.get(entry.getKey()) != null) + for(final Map.Entry<String, IceMX.Metrics[]> entry : data.entrySet()) { - continue; + if(_tables.get(entry.getKey()) != null) + { + continue; } - IceMX.Metrics[] objects = entry.getValue(); - if(objects == null || objects.length == 0) - { - continue; - } - final TableModel model = new TableModel(entry.getKey()); - String prefix = "IceGridGUI.Metrics." + entry.getKey(); - String[] names = _properties.getPropertyAsList(prefix + ".fields"); - for(String name : names) - { - Field objectField = null; - try + IceMX.Metrics[] objects = entry.getValue(); + if(objects == null || objects.length == 0) { - objectField = objects[0].getClass().getField(name); + continue; } - catch(NoSuchFieldException ex) + final TableModel model = new TableModel(entry.getKey()); + String prefix = "IceGridGUI.Metrics." + entry.getKey(); + String[] names = _properties.getPropertyAsList(prefix + ".fields"); + for(String name : names) { + Field objectField = null; + try + { + objectField = objects[0].getClass().getField(name); + } + catch(NoSuchFieldException ex) + { + } + MetricsField field = createField(node, prefix + "." + name, entry.getKey(), name, objectField, this); + if(field != null) + { + model.addField(field); + } } - MetricsField field = createField(node, prefix + "." + name, entry.getKey(), name, objectField, this); - if(field != null) + if(model.getMetricFields().size() == 0) { - model.addField(field); + continue; } - } - if(model.getMetricFields().size() == 0) - { - continue; - } - final JTable table = new JTable(model) - { - // - //Implement table header tool tips. - // - protected JTableHeader createDefaultTableHeader() + final JTable table = new JTable(model) { - return new JTableHeader(columnModel) + // + //Implement table header tool tips. + // + protected JTableHeader createDefaultTableHeader() { - public String getToolTipText(MouseEvent e) + return new JTableHeader(columnModel) { - int index = columnModel.getColumn(columnModel.getColumnIndexAtX(e.getPoint().x)).getModelIndex(); - return model.getMetricFields().get(index).getColumnToolTip(); - } - }; - } - }; - - // - // Adjust row height for larger fonts - // - int fontSize = table.getFont().getSize(); - int minRowHeight = fontSize + fontSize / 3; - if(table.getRowHeight() < minRowHeight) - { - table.setRowHeight(minRowHeight); - } + public String getToolTipText(MouseEvent e) + { + int index = columnModel.getColumn(columnModel.getColumnIndexAtX(e.getPoint().x)).getModelIndex(); + return model.getMetricFields().get(index).getColumnToolTip(); + } + }; + } + }; - table.setDragEnabled(true); - table.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); - table.setCellSelectionEnabled(true); - table.addMouseListener(new ButtonMouseListener(table)); - table.setAutoCreateRowSorter(true); - table.setTransferHandler(new TransferHandler(node)); - table.addMouseListener(new MouseAdapter() + // + // Adjust row height for larger fonts + // + int fontSize = table.getFont().getSize(); + int minRowHeight = fontSize + fontSize / 3; + if(table.getRowHeight() < minRowHeight) { - @Override - public void mousePressed(MouseEvent e) - { - createAndShowMenu(e); - } + table.setRowHeight(minRowHeight); + } - @Override - public void mouseReleased(MouseEvent e) + table.setDragEnabled(true); + table.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); + table.setCellSelectionEnabled(true); + table.addMouseListener(new ButtonMouseListener(table)); + table.setAutoCreateRowSorter(true); + table.setTransferHandler(new TransferHandler(node)); + table.addMouseListener(new MouseAdapter() { - createAndShowMenu(e); - } + @Override + public void mousePressed(MouseEvent e) + { + createAndShowMenu(e); + } - public void createAndShowMenu(MouseEvent e) - { - if(e.isPopupTrigger()) + @Override + public void mouseReleased(MouseEvent e) { - JPopupMenu popup = new JPopupMenu(); - JMenu addToGraph = new JMenu("Add To Metrics Graph"); - popup.add(addToGraph); - final Map<String, List<MetricsCell>> rows = getSelectedRows(table, true); - addToGraph.setEnabled(rows.size() > 0); - JMenuItem newGraph = new JMenuItem("New Metrics Graph"); - newGraph.addActionListener(new ActionListener() - { - public void actionPerformed(ActionEvent e) - { - GraphView view = node.getCoordinator().createGraphView(); - view.addSeries(new MetricsViewTransferableData(new MetricsViewInfo(node), - entry.getKey(), rows)); - } - }); - addToGraph.add(newGraph); + createAndShowMenu(e); + } - GraphView[] graphs = node.getCoordinator().getGraphViews(); - for(final GraphView view : graphs) + public void createAndShowMenu(MouseEvent e) + { + if(e.isPopupTrigger()) { - JMenuItem item = new JMenuItem(view.getTitle()); - addToGraph.add(item); - item.addActionListener(new ActionListener() - { - public void actionPerformed(ActionEvent e) + JPopupMenu popup = new JPopupMenu(); + JMenu addToGraph = new JMenu("Add To Metrics Graph"); + popup.add(addToGraph); + final Map<String, List<MetricsCell>> rows = getSelectedRows(table, true); + addToGraph.setEnabled(rows.size() > 0); + JMenuItem newGraph = new JMenuItem("New Metrics Graph"); + newGraph.addActionListener(new ActionListener() { - view.addSeries(new MetricsViewTransferableData(new MetricsViewInfo(node), - entry.getKey(), rows)); - } - }); + public void actionPerformed(ActionEvent e) + { + GraphView view = node.getCoordinator().createGraphView(); + view.addSeries(new MetricsViewTransferableData(new MetricsViewInfo(node), + entry.getKey(), rows)); + } + }); + addToGraph.add(newGraph); + + GraphView[] graphs = node.getCoordinator().getGraphViews(); + for(final GraphView view : graphs) + { + JMenuItem item = new JMenuItem(view.getTitle()); + addToGraph.add(item); + item.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent e) + { + view.addSeries(new MetricsViewTransferableData(new MetricsViewInfo(node), + entry.getKey(), rows)); + } + }); + } + popup.show(e.getComponent(), e.getX(), e.getY()); } - popup.show(e.getComponent(), e.getX(), e.getY()); } - } - }); + }); - for(Map.Entry<Integer, MetricsField> fieldEntry : model.getMetricFields().entrySet()) - { - if(fieldEntry.getValue().getCellRenderer() != null) + for(Map.Entry<Integer, MetricsField> fieldEntry : model.getMetricFields().entrySet()) { - table.getColumnModel().getColumn(fieldEntry.getKey().intValue()).setCellRenderer( - fieldEntry.getValue().getCellRenderer()); + if(fieldEntry.getValue().getCellRenderer() != null) + { + table.getColumnModel().getColumn(fieldEntry.getKey().intValue()).setCellRenderer( + fieldEntry.getValue().getCellRenderer()); + } } - } - _tables.put(entry.getKey(), table); - rebuildPanel = true; + _tables.put(entry.getKey(), table); + rebuildPanel = true; + } } if(rebuildPanel) @@ -760,50 +772,53 @@ public class MetricsViewEditor extends Editor implements MetricsFieldContext buildPropertiesPanel(); } - // - // Load the data. - // - for(Map.Entry<String, IceMX.Metrics[]> entry : data.entrySet()) + if(data != null) { - String key = entry.getKey(); - IceMX.Metrics[] values = entry.getValue(); - JTable table = _tables.get(key); - if(table == null) + // + // Load the data. + // + for(Map.Entry<String, IceMX.Metrics[]> entry : data.entrySet()) { - continue; - } - TableModel model = (TableModel)table.getModel(); + String key = entry.getKey(); + IceMX.Metrics[] values = entry.getValue(); + JTable table = _tables.get(key); + if(table == null) + { + continue; + } + TableModel model = (TableModel)table.getModel(); - Map<String, List<MetricsCell>> rows = getSelectedRows(table, false); + Map<String, List<MetricsCell>> rows = getSelectedRows(table, false); - model.getDataVector().removeAllElements(); - model.fireTableDataChanged(); - for(IceMX.Metrics m : values) - { - model.addMetrics(m, timestamp); - } + model.getDataVector().removeAllElements(); + model.fireTableDataChanged(); + for(IceMX.Metrics m : values) + { + model.addMetrics(m, timestamp); + } - int idColumn = table.getColumnModel().getColumnIndex(_properties.getProperty( - "IceGridGUI.Metrics." + key + ".id.columnName")); - if(rows.size() > 0) - { - for(int i = table.getRowCount() - 1; i >= 0; --i) + int idColumn = table.getColumnModel().getColumnIndex(_properties.getProperty( + "IceGridGUI.Metrics." + key + ".id.columnName")); + if(rows.size() > 0) { - String id = (String)table.getValueAt(i, idColumn); - List<MetricsCell> columns = rows.get(id); - if(columns != null) + for(int i = table.getRowCount() - 1; i >= 0; --i) { - for(MetricsCell cell : columns) + String id = (String)table.getValueAt(i, idColumn); + List<MetricsCell> columns = rows.get(id); + if(columns != null) { - int j = table.getColumnModel().getColumnIndex(cell.getField().getColumnName()); + for(MetricsCell cell : columns) + { + int j = table.getColumnModel().getColumnIndex(cell.getField().getColumnName()); - table.getSelectionModel().addSelectionInterval(i, i); - table.getColumnModel().getSelectionModel().addSelectionInterval(j, j); + table.getSelectionModel().addSelectionInterval(i, i); + table.getColumnModel().getSelectionModel().addSelectionInterval(j, j); + } } } } + packColumn(table, idColumn, 2); } - packColumn(table, idColumn, 2); } } @@ -1001,7 +1016,7 @@ public class MetricsViewEditor extends Editor implements MetricsFieldContext Map<Integer, MetricsField> _fields = new HashMap<Integer, MetricsField>(); } - private RefreshThread _refreshThread; + private static RefreshThread _refreshThread; private Map<String, JTable> _tables = new HashMap<String, JTable>(); |