summaryrefslogtreecommitdiff
path: root/java/src/IceGridGUI/LiveDeployment/MetricsViewEditor.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/src/IceGridGUI/LiveDeployment/MetricsViewEditor.java')
-rw-r--r--java/src/IceGridGUI/LiveDeployment/MetricsViewEditor.java325
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>();