diff options
Diffstat (limited to 'java/src/IceGridGUI/LiveDeployment/RegistryEditor.java')
-rwxr-xr-x | java/src/IceGridGUI/LiveDeployment/RegistryEditor.java | 192 |
1 files changed, 189 insertions, 3 deletions
diff --git a/java/src/IceGridGUI/LiveDeployment/RegistryEditor.java b/java/src/IceGridGUI/LiveDeployment/RegistryEditor.java index 1087e234f2d..b4f0f395bf9 100755 --- a/java/src/IceGridGUI/LiveDeployment/RegistryEditor.java +++ b/java/src/IceGridGUI/LiveDeployment/RegistryEditor.java @@ -9,11 +9,18 @@ package IceGridGUI.LiveDeployment; import java.awt.event.ActionEvent; +import java.awt.event.ActionEvent; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; import javax.swing.AbstractAction; import javax.swing.Action; import javax.swing.JButton; import javax.swing.JLabel; +import javax.swing.JMenuItem; +import javax.swing.JOptionPane; +import javax.swing.JPopupMenu; import javax.swing.JScrollPane; import javax.swing.JTextField; import javax.swing.KeyStroke; @@ -31,6 +38,98 @@ class RegistryEditor extends Editor _hostname.setEditable(false); _endpoints.setEditable(false); + Action openDefinition = new AbstractAction("Open definition") + { + public void actionPerformed(ActionEvent e) + { + int selectedRow = _applications.getSelectedRow(); + if(selectedRow != -1) + { + String appName = (String)_applications.getValueAt(selectedRow, 0); + ApplicationPane app = _target.getCoordinator().openLiveApplication(appName); + + if(app != null && app.getRoot().getSelectedNode() == null) + { + app.getRoot().setSelectedNode(app.getRoot()); + } + } + } + + }; + + Action showDetails = new AbstractAction("Show details") + { + public void actionPerformed(ActionEvent e) + { + int selectedRow = _applications.getSelectedRow(); + if(selectedRow != -1) + { + String appName = (String)_applications.getValueAt(selectedRow, 0); + _target.showApplicationDetails(appName); + } + } + + }; + + Action removeApplication = new AbstractAction("Remove from registry") + { + public void actionPerformed(ActionEvent e) + { + int selectedRow = _applications.getSelectedRow(); + if(selectedRow != -1) + { + String appName = (String)_applications.getValueAt(selectedRow, 0); + + int confirm = JOptionPane.showConfirmDialog( + _target.getCoordinator().getMainFrame(), + "You are about to remove application '" + appName + "' from the IceGrid registry. " + + "Do you want to proceed?", + "Remove Confirmation", + JOptionPane.YES_NO_OPTION); + + if(confirm == JOptionPane.YES_OPTION) + { + _target.getCoordinator().removeApplicationFromRegistry(appName); + } + } + } + }; + + removeApplication.putValue(Action.ACCELERATOR_KEY, + KeyStroke.getKeyStroke("DELETE")); + + _applications.getActionMap().put("delete", removeApplication); + _applications.getInputMap().put( + KeyStroke.getKeyStroke("DELETE"), "delete"); + + final JPopupMenu appPopup = new JPopupMenu(); + appPopup.add(openDefinition); + appPopup.add(showDetails); + appPopup.addSeparator(); + appPopup.add(removeApplication); + + _applications.addMouseListener(new MouseAdapter() + { + public void mousePressed(MouseEvent e) + { + maybeShowPopup(e); + } + + public void mouseReleased(MouseEvent e) + { + maybeShowPopup(e); + } + + private void maybeShowPopup(MouseEvent e) + { + if (e.isPopupTrigger() && _applications.getSelectedRow() != -1) + { + appPopup.show(_applications, e.getX(), e.getY()); + } + } + }); + + Action deleteObject = new AbstractAction("Remove selected object") { public void actionPerformed(ActionEvent e) @@ -45,6 +144,9 @@ class RegistryEditor extends Editor } } }; + deleteObject.putValue(Action.ACCELERATOR_KEY, + KeyStroke.getKeyStroke("DELETE")); + _objects.getActionMap().put("delete", deleteObject); _objects.getInputMap().put( KeyStroke.getKeyStroke("DELETE"), "delete"); @@ -60,6 +162,9 @@ class RegistryEditor extends Editor } } }; + addObject.putValue(Action.ACCELERATOR_KEY, + KeyStroke.getKeyStroke("INSERT")); + _objects.getActionMap().put("insert", addObject); _objects.getInputMap().put( KeyStroke.getKeyStroke("INSERT"), "insert"); @@ -67,6 +172,35 @@ class RegistryEditor extends Editor _objects.setToolTipText("<html>Well-known objects registered through the Admin interface.<br>" + "Well-known objects registered using Adapter or Replica Group<br>" + "definitions are not displayed here.</html>"); + + + final JPopupMenu objectsPopup = new JPopupMenu(); + objectsPopup.add(addObject); + objectsPopup.addSeparator(); + final JMenuItem deleteObjectMenuItem = objectsPopup.add(deleteObject); + + _objects.addMouseListener(new MouseAdapter() + { + public void mousePressed(MouseEvent e) + { + maybeShowPopup(e); + } + + public void mouseReleased(MouseEvent e) + { + maybeShowPopup(e); + } + + private void maybeShowPopup(MouseEvent e) + { + if (e.isPopupTrigger()) + { + deleteObjectMenuItem.setEnabled(_objects.getSelectedRow() != -1); + objectsPopup.show(_objects, e.getX(), e.getY()); + } + } + }); + Action deleteAdapter = new AbstractAction("Remove selected adapter") { @@ -82,10 +216,37 @@ class RegistryEditor extends Editor } } }; + deleteAdapter.putValue(Action.ACCELERATOR_KEY, + KeyStroke.getKeyStroke("DELETE")); + _adapters.getActionMap().put("delete", deleteAdapter); _adapters.getInputMap().put( KeyStroke.getKeyStroke("DELETE"), "delete"); _adapters.setToolTipText("<html>Object adapters registered at run time.</html>"); + + final JPopupMenu adaptersPopup = new JPopupMenu(); + adaptersPopup.add(deleteAdapter); + + _adapters.addMouseListener(new MouseAdapter() + { + public void mousePressed(MouseEvent e) + { + maybeShowPopup(e); + } + + public void mouseReleased(MouseEvent e) + { + maybeShowPopup(e); + } + + private void maybeShowPopup(MouseEvent e) + { + if (e.isPopupTrigger() && _adapters.getSelectedRow() != -1) + { + adaptersPopup.show(_adapters, e.getX(), e.getY()); + } + } + }); } protected void appendProperties(DefaultFormBuilder builder) @@ -100,7 +261,7 @@ class RegistryEditor extends Editor builder.append(_endpoints, 3); builder.nextLine(); - builder.appendSeparator("Dynamic Well-Known Objects"); + builder.appendSeparator("Deployed Applications"); builder.append(""); builder.nextLine(); builder.append(""); @@ -117,13 +278,36 @@ class RegistryEditor extends Editor builder.nextLine(); builder.append(""); builder.nextRow(-14); - JScrollPane scrollPane = new JScrollPane(_objects); - scrollPane.setToolTipText(_objects.getToolTipText()); + JScrollPane scrollPane = new JScrollPane(_applications); + scrollPane.setToolTipText(_applications.getToolTipText()); builder.add(scrollPane, cc.xywh(builder.getColumn(), builder.getRow(), 3, 14)); builder.nextRow(14); builder.nextLine(); + builder.appendSeparator("Dynamic Well-Known Objects"); + builder.append(""); + builder.nextLine(); + builder.append(""); + builder.nextLine(); + builder.append(""); + builder.nextLine(); + builder.append(""); + builder.nextLine(); + builder.append(""); + builder.nextLine(); + builder.append(""); + builder.nextLine(); + builder.append(""); + builder.nextLine(); + builder.append(""); + builder.nextRow(-14); + scrollPane = new JScrollPane(_objects); + scrollPane.setToolTipText(_objects.getToolTipText()); + builder.add(scrollPane, cc.xywh(builder.getColumn(), builder.getRow(), 3, 14)); + builder.nextRow(14); + builder.nextLine(); + builder.appendSeparator("Dynamic Object Adapters"); builder.append(""); builder.nextLine(); @@ -160,12 +344,14 @@ class RegistryEditor extends Editor _target = root; _hostname.setText(root.getRegistryInfo().hostname); _endpoints.setText(root.getRegistryInfo().endpoints); + _applications.setSortedMap(root.getApplicationMap()); _objects.setObjects(root.getObjects()); _adapters.setAdapters(root.getAdapters()); } private JTextField _hostname = new JTextField(20); private JTextField _endpoints = new JTextField(20); + private TableField _applications = new TableField("Name", "Last Update"); private TableField _objects = new TableField("Proxy", "Type"); private TableField _adapters = new TableField("ID", "Endpoints", "Replica Group"); |