summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--java/resources/icons/16x16/metrics_disabled.pngbin0 -> 567 bytes
-rw-r--r--java/src/IceGridGUI/LiveActions.java16
-rw-r--r--java/src/IceGridGUI/LiveDeployment/GraphView.java3
-rw-r--r--java/src/IceGridGUI/LiveDeployment/MetricsView.java199
-rw-r--r--java/src/IceGridGUI/LiveDeployment/MetricsViewEditor.java325
-rw-r--r--java/src/IceGridGUI/LiveDeployment/Node.java2
-rw-r--r--java/src/IceGridGUI/LiveDeployment/Root.java2
-rw-r--r--java/src/IceGridGUI/LiveDeployment/Server.java24
-rw-r--r--java/src/IceGridGUI/LiveDeployment/Service.java24
-rw-r--r--java/src/IceGridGUI/LiveDeployment/Slave.java2
-rw-r--r--java/src/IceGridGUI/LiveDeployment/TreeNode.java10
11 files changed, 408 insertions, 199 deletions
diff --git a/java/resources/icons/16x16/metrics_disabled.png b/java/resources/icons/16x16/metrics_disabled.png
new file mode 100644
index 00000000000..7bedf5eba7a
--- /dev/null
+++ b/java/resources/icons/16x16/metrics_disabled.png
Binary files differ
diff --git a/java/src/IceGridGUI/LiveActions.java b/java/src/IceGridGUI/LiveActions.java
index 185f379e5d5..d950bb0d0ef 100644
--- a/java/src/IceGridGUI/LiveActions.java
+++ b/java/src/IceGridGUI/LiveActions.java
@@ -60,7 +60,6 @@ public class LiveActions
{
_array[i].setEnabled(availableActions[i]);
}
-
return availableActions;
}
@@ -188,6 +187,21 @@ public class LiveActions
}
};
+ _array[TreeNode.ENABLE_METRICS_VIEW] = new AbstractAction("Enable Metrics View")
+ {
+ public void actionPerformed(ActionEvent e)
+ {
+ _target.enableMetricsView(true);
+ }
+ };
+
+ _array[TreeNode.DISABLE_METRICS_VIEW] = new AbstractAction("Disable Metrics View")
+ {
+ public void actionPerformed(ActionEvent e)
+ {
+ _target.enableMetricsView(false);
+ }
+ };
}
private TreeNode _target;
diff --git a/java/src/IceGridGUI/LiveDeployment/GraphView.java b/java/src/IceGridGUI/LiveDeployment/GraphView.java
index 19005db7458..1b6b75e9bbb 100644
--- a/java/src/IceGridGUI/LiveDeployment/GraphView.java
+++ b/java/src/IceGridGUI/LiveDeployment/GraphView.java
@@ -348,7 +348,8 @@ public class GraphView extends JFrame implements MetricsFieldContext
}
}, false);
if(!(e instanceof Ice.ObjectNotExistException) &&
- !(e instanceof Ice.CommunicatorDestroyedException))
+ !(e instanceof Ice.CommunicatorDestroyedException) &&
+ !(e instanceof Ice.ConnectionRefusedException))
{
handleError(m, e.toString());
}
diff --git a/java/src/IceGridGUI/LiveDeployment/MetricsView.java b/java/src/IceGridGUI/LiveDeployment/MetricsView.java
index 5aba867be20..6c7bd9afbe6 100644
--- a/java/src/IceGridGUI/LiveDeployment/MetricsView.java
+++ b/java/src/IceGridGUI/LiveDeployment/MetricsView.java
@@ -18,6 +18,7 @@ import javax.swing.tree.TreeModel;
import javax.swing.tree.TreePath;
import javax.swing.SwingUtilities;
import javax.swing.JOptionPane;
+import javax.swing.JPopupMenu;
import java.util.Map;
import java.util.Enumeration;
@@ -32,6 +33,17 @@ class MetricsView extends TreeNode
return _editor;
}
+ //
+ // Actions
+ //
+ public boolean[] getAvailableActions()
+ {
+ boolean[] actions = new boolean[IceGridGUI.LiveDeployment.TreeNode.ACTION_COUNT];
+ actions[ENABLE_METRICS_VIEW] = !_enabled;
+ actions[DISABLE_METRICS_VIEW] = _enabled;
+ return actions;
+ }
+
public Component getTreeCellRendererComponent(
JTree tree,
Object value,
@@ -44,18 +56,171 @@ class MetricsView extends TreeNode
if(_cellRenderer == null)
{
_cellRenderer = new DefaultTreeCellRenderer();
- _cellRenderer.setLeafIcon(Utils.getIcon("/icons/16x16/metrics.png"));
+
+ _enabledIcon = Utils.getIcon("/icons/16x16/metrics.png");
+ _disabledIcon = Utils.getIcon("/icons/16x16/metrics_disabled.png");
}
- _cellRenderer.setToolTipText(_toolTip);
+
+ Icon icon = _enabled ? _enabledIcon : _disabledIcon;
+ _cellRenderer.setLeafIcon(icon);
return _cellRenderer.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus);
}
- MetricsView(TreeNode parent, String name, IceMX.MetricsAdminPrx admin)
+ MetricsView(TreeNode parent, String name, IceMX.MetricsAdminPrx admin, boolean enabled)
{
super(parent, name);
_name = name;
_admin = admin;
_editor = new MetricsViewEditor(getRoot());
+ _enabled = enabled;
+ }
+
+ public void enableMetricsView(boolean enabled)
+ {
+ IceMX.MetricsAdminPrx metricsAdmin = getMetricsAdmin();
+ if(metricsAdmin != null)
+ {
+ if(enabled)
+ {
+ IceMX.Callback_MetricsAdmin_enableMetricsView cb = new IceMX.Callback_MetricsAdmin_enableMetricsView()
+ {
+ public void response()
+ {
+ SwingUtilities.invokeLater(new Runnable()
+ {
+ public void run()
+ {
+ _enabled = true;
+ getRoot().getTreeModel().nodeChanged(MetricsView.this);
+ if(getRoot().getTree().getLastSelectedPathComponent() == MetricsView.this)
+ {
+ //
+ // If the metrics view is selected when enabled success,
+ // we must start the refresh thread to pull updates.
+ //
+ MetricsViewEditor.startRefreshThread(MetricsView.this);
+ }
+ }
+ });
+ }
+
+ public void exception(final Ice.LocalException e)
+ {
+ MetricsViewEditor.stopRefreshThread();
+ SwingUtilities.invokeLater(new Runnable()
+ {
+ public void run()
+ {
+ if(e instanceof Ice.ObjectNotExistException ||
+ e instanceof Ice.ConnectionRefusedException)
+ {
+ // Server is down.
+ }
+ else if(e instanceof Ice.CommunicatorDestroyedException)
+ {
+ }
+ else
+ {
+ e.printStackTrace();
+ JOptionPane.showMessageDialog(getCoordinator().getMainFrame(),
+ "Error: " + e.toString(), "Error",
+ JOptionPane.ERROR_MESSAGE);
+ }
+ }
+ });
+ }
+
+ public void exception(final Ice.UserException e)
+ {
+ MetricsViewEditor.stopRefreshThread();
+ SwingUtilities.invokeLater(new Runnable()
+ {
+ public void run()
+ {
+ e.printStackTrace();
+ JOptionPane.showMessageDialog(getCoordinator().getMainFrame(),
+ "Error: " + e.toString(), "Error",
+ JOptionPane.ERROR_MESSAGE);
+ }
+ });
+ }
+ };
+ metricsAdmin.begin_enableMetricsView(_name, cb);
+ }
+ else
+ {
+ IceMX.Callback_MetricsAdmin_disableMetricsView cb = new IceMX.Callback_MetricsAdmin_disableMetricsView()
+ {
+ public void response()
+ {
+ SwingUtilities.invokeLater(new Runnable()
+ {
+ public void run()
+ {
+ _enabled = false;
+ _editor.show(MetricsView.this, null, 0);
+ getRoot().getTreeModel().nodeChanged(MetricsView.this);
+ if(getRoot().getTree().getLastSelectedPathComponent() == MetricsView.this)
+ {
+ //
+ // If the metrics view is selected when disabled success,
+ // we stop the refresh.
+ //
+ MetricsViewEditor.stopRefreshThread();
+ }
+ }
+ });
+ }
+
+ public void exception(final Ice.LocalException e)
+ {
+ MetricsViewEditor.stopRefreshThread();
+ SwingUtilities.invokeLater(new Runnable()
+ {
+ public void run()
+ {
+ if(e instanceof Ice.ObjectNotExistException ||
+ e instanceof Ice.ConnectionRefusedException)
+ {
+ // Server is down.
+ }
+ else if(e instanceof Ice.CommunicatorDestroyedException)
+ {
+ }
+ else
+ {
+ e.printStackTrace();
+ JOptionPane.showMessageDialog(getCoordinator().getMainFrame(),
+ "Error: " + e.toString(), "Error",
+ JOptionPane.ERROR_MESSAGE);
+ }
+ }
+ });
+ }
+
+ public void exception(final Ice.UserException e)
+ {
+ MetricsViewEditor.stopRefreshThread();
+ SwingUtilities.invokeLater(new Runnable()
+ {
+ public void run()
+ {
+ e.printStackTrace();
+ JOptionPane.showMessageDialog(getCoordinator().getMainFrame(),
+ "Error: " + e.toString(), "Error",
+ JOptionPane.ERROR_MESSAGE);
+ }
+ });
+ }
+ };
+ metricsAdmin.begin_disableMetricsView(_name, cb);
+ }
+ }
+ }
+
+ public boolean isEnabled()
+ {
+ return _enabled;
}
public String name()
@@ -68,6 +233,21 @@ class MetricsView extends TreeNode
return _admin;
}
+ public JPopupMenu getPopupMenu()
+ {
+ LiveActions la = getCoordinator().getLiveActionsForPopup();
+
+ if(_popup == null)
+ {
+ _popup = new JPopupMenu();
+ _popup.add(la.get(ENABLE_METRICS_VIEW));
+ _popup.add(la.get(DISABLE_METRICS_VIEW));
+ }
+
+ la.setTarget(this);
+ return _popup;
+ }
+
public void fetchMetricsFailures(String map, String id, IceMX.Callback_MetricsAdmin_getMetricsFailures cb)
{
IceMX.MetricsAdminPrx metricsAdmin = getMetricsAdmin();
@@ -106,12 +286,13 @@ class MetricsView extends TreeNode
public void exception(final Ice.LocalException e)
{
+ MetricsViewEditor.stopRefreshThread();
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
- _editor.stopRefreshThread();
- if(e instanceof Ice.ObjectNotExistException)
+ if(e instanceof Ice.ObjectNotExistException ||
+ e instanceof Ice.ConnectionRefusedException)
{
// Server is down.
}
@@ -124,7 +305,6 @@ class MetricsView extends TreeNode
}
else
{
- _editor.stopRefreshThread();
e.printStackTrace();
JOptionPane.showMessageDialog(getCoordinator().getMainFrame(),
"Error: " + e.toString(), "Error",
@@ -136,11 +316,11 @@ class MetricsView extends TreeNode
public void exception(final Ice.UserException e)
{
+ MetricsViewEditor.stopRefreshThread();
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
- _editor.stopRefreshThread();
e.printStackTrace();
JOptionPane.showMessageDialog(getCoordinator().getMainFrame(),
"Error: " + e.toString(), "Error",
@@ -168,7 +348,10 @@ class MetricsView extends TreeNode
private String _name;
private IceMX.MetricsAdminPrx _admin;
- private String _toolTip;
private MetricsViewEditor _editor;
+ private boolean _enabled;
+ static private JPopupMenu _popup;
static private DefaultTreeCellRenderer _cellRenderer;
+ static private Icon _enabledIcon;
+ static private Icon _disabledIcon;
}
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>();
diff --git a/java/src/IceGridGUI/LiveDeployment/Node.java b/java/src/IceGridGUI/LiveDeployment/Node.java
index fbbac08c916..a25ee8be6de 100644
--- a/java/src/IceGridGUI/LiveDeployment/Node.java
+++ b/java/src/IceGridGUI/LiveDeployment/Node.java
@@ -35,7 +35,7 @@ class Node extends ListTreeNode
//
public boolean[] getAvailableActions()
{
- boolean[] actions = new boolean[ACTION_COUNT];
+ boolean[] actions = new boolean[IceGridGUI.LiveDeployment.TreeNode.ACTION_COUNT];
actions[SHUTDOWN_NODE] = _up;
actions[RETRIEVE_STDOUT] = _up;
actions[RETRIEVE_STDERR] = _up;
diff --git a/java/src/IceGridGUI/LiveDeployment/Root.java b/java/src/IceGridGUI/LiveDeployment/Root.java
index c0069e5f4c1..0e919f124d7 100644
--- a/java/src/IceGridGUI/LiveDeployment/Root.java
+++ b/java/src/IceGridGUI/LiveDeployment/Root.java
@@ -202,7 +202,7 @@ public class Root extends ListArrayTreeNode
public boolean[] getAvailableActions()
{
- boolean[] actions = new boolean[ACTION_COUNT];
+ boolean[] actions = new boolean[IceGridGUI.LiveDeployment.TreeNode.ACTION_COUNT];
actions[ADD_OBJECT] = _coordinator.connectedToMaster();
actions[SHUTDOWN_REGISTRY] = true;
actions[RETRIEVE_STDOUT] = true;
diff --git a/java/src/IceGridGUI/LiveDeployment/Server.java b/java/src/IceGridGUI/LiveDeployment/Server.java
index 925127caab8..9e19a7296a5 100644
--- a/java/src/IceGridGUI/LiveDeployment/Server.java
+++ b/java/src/IceGridGUI/LiveDeployment/Server.java
@@ -33,7 +33,7 @@ public class Server extends ListArrayTreeNode
//
public boolean[] getAvailableActions()
{
- boolean[] actions = new boolean[ACTION_COUNT];
+ boolean[] actions = new boolean[IceGridGUI.LiveDeployment.TreeNode.ACTION_COUNT];
if(_state != null)
{
@@ -420,8 +420,14 @@ public class Server extends ListArrayTreeNode
{
public void run()
{
- _metricsNames = enabledViews;
- createMetrics(metricsAdmin);
+ for(String name : enabledViews)
+ {
+ insertSortedChild(new MetricsView(Server.this, name, metricsAdmin, true), _metrics, null);
+ }
+ for(String name : disabledViews)
+ {
+ insertSortedChild(new MetricsView(Server.this, name, metricsAdmin, false), _metrics, null);
+ }
rebuild(Server.this, false);
}
});
@@ -1143,17 +1149,6 @@ public class Server extends ListArrayTreeNode
return Utils.getIntVersion(Utils.substitute(_serverDescriptor.iceVersion, _resolver));
}
- private void createMetrics(IceMX.MetricsAdminPrx metricsAdmin)
- {
- if(_metricsNames != null)
- {
- for(String name : _metricsNames)
- {
- insertSortedChild(new MetricsView(this, name, metricsAdmin), _metrics, null);
- }
- }
- }
-
private void createAdapters()
{
for(AdapterDescriptor p : _serverDescriptor.adapters)
@@ -1293,7 +1288,6 @@ public class Server extends ListArrayTreeNode
private java.util.List<MetricsView> _metrics = new java.util.LinkedList<MetricsView>();
private java.util.Set<String> _startedServices = new java.util.HashSet<String>();
- private String[] _metricsNames;
private ServerState _state;
private boolean _enabled;
diff --git a/java/src/IceGridGUI/LiveDeployment/Service.java b/java/src/IceGridGUI/LiveDeployment/Service.java
index 45ca97df936..8d73709eb29 100644
--- a/java/src/IceGridGUI/LiveDeployment/Service.java
+++ b/java/src/IceGridGUI/LiveDeployment/Service.java
@@ -30,7 +30,7 @@ public class Service extends ListArrayTreeNode
//
public boolean[] getAvailableActions()
{
- boolean[] actions = new boolean[ACTION_COUNT];
+ boolean[] actions = new boolean[IceGridGUI.LiveDeployment.TreeNode.ACTION_COUNT];
ServerState serverState = ((Server)_parent).getState();
@@ -504,8 +504,14 @@ public class Service extends ListArrayTreeNode
{
public void run()
{
- _metricsNames = enabledViews;
- createMetrics(metricsAdmin);
+ for(String name : enabledViews)
+ {
+ insertSortedChild(new MetricsView(Service.this, name, metricsAdmin, true), _metrics, null);
+ }
+ for(String name : disabledViews)
+ {
+ insertSortedChild(new MetricsView(Service.this, name, metricsAdmin, false), _metrics, null);
+ }
rebuild(Service.this);
}
});
@@ -547,17 +553,6 @@ public class Service extends ListArrayTreeNode
}
}
- private void createMetrics(IceMX.MetricsAdminPrx metricsAdmin)
- {
- if(_metricsNames != null)
- {
- for(String name : _metricsNames)
- {
- insertSortedChild(new MetricsView(this, name, metricsAdmin), _metrics, null);
- }
- }
- }
-
void rebuild(Service service)
{
_adapters = service._adapters;
@@ -599,7 +594,6 @@ public class Service extends ListArrayTreeNode
private boolean _started = false;
private boolean _metricsRetrieved = false;
- private String[] _metricsNames;
static private ServiceEditor _editor;
static private DefaultTreeCellRenderer _cellRenderer;
diff --git a/java/src/IceGridGUI/LiveDeployment/Slave.java b/java/src/IceGridGUI/LiveDeployment/Slave.java
index be6dc806de9..79a9498e76a 100644
--- a/java/src/IceGridGUI/LiveDeployment/Slave.java
+++ b/java/src/IceGridGUI/LiveDeployment/Slave.java
@@ -29,7 +29,7 @@ class Slave extends TreeNode
//
public boolean[] getAvailableActions()
{
- boolean[] actions = new boolean[ACTION_COUNT];
+ boolean[] actions = new boolean[IceGridGUI.LiveDeployment.TreeNode.ACTION_COUNT];
actions[SHUTDOWN_REGISTRY] = true;
actions[RETRIEVE_STDOUT] = true;
actions[RETRIEVE_STDERR] = true;
diff --git a/java/src/IceGridGUI/LiveDeployment/TreeNode.java b/java/src/IceGridGUI/LiveDeployment/TreeNode.java
index 60fe0b36b2f..affd94985e3 100644
--- a/java/src/IceGridGUI/LiveDeployment/TreeNode.java
+++ b/java/src/IceGridGUI/LiveDeployment/TreeNode.java
@@ -61,7 +61,10 @@ public abstract class TreeNode extends TreeNodeBase
public static final int OPEN_DEFINITION = 19;
- static public final int ACTION_COUNT = 20;
+ static public final int ENABLE_METRICS_VIEW = 20;
+ static public final int DISABLE_METRICS_VIEW = 21;
+
+ static public final int ACTION_COUNT = 22;
public boolean[] getAvailableActions()
{
@@ -121,6 +124,11 @@ public abstract class TreeNode extends TreeNodeBase
assert false;
}
+ public void enableMetricsView(boolean enabled)
+ {
+ assert false;
+ }
+
//
// Helpers
//