summaryrefslogtreecommitdiff
path: root/java/src
diff options
context:
space:
mode:
Diffstat (limited to 'java/src')
-rwxr-xr-xjava/src/IceGrid/ListDialog.java150
-rwxr-xr-xjava/src/IceGrid/ParametersDialog.java161
-rwxr-xr-xjava/src/IceGrid/TableDialog.java150
-rwxr-xr-xjava/src/IceGrid/TreeNode/Adapter.java12
-rwxr-xr-xjava/src/IceGrid/TreeNode/AdapterEditor.java28
-rwxr-xr-xjava/src/IceGrid/TreeNode/Application.java52
-rwxr-xr-xjava/src/IceGrid/TreeNode/ApplicationEditor.java2
-rwxr-xr-xjava/src/IceGrid/TreeNode/Nodes.java3
-rwxr-xr-xjava/src/IceGrid/TreeNode/PropertiesHolder.java34
-rwxr-xr-xjava/src/IceGrid/TreeNode/Server.java33
-rwxr-xr-xjava/src/IceGrid/TreeNode/ServerSubEditor.java4
-rwxr-xr-xjava/src/IceGrid/TreeNode/ServerTemplate.java48
-rwxr-xr-xjava/src/IceGrid/TreeNode/Service.java24
-rwxr-xr-xjava/src/IceGrid/TreeNode/ServiceTemplate.java37
14 files changed, 434 insertions, 304 deletions
diff --git a/java/src/IceGrid/ListDialog.java b/java/src/IceGrid/ListDialog.java
index e5ffdc3a8ac..a1d8943e6da 100755
--- a/java/src/IceGrid/ListDialog.java
+++ b/java/src/IceGrid/ListDialog.java
@@ -13,8 +13,6 @@ import java.awt.Dimension;
import java.awt.Frame;
import java.awt.event.ActionEvent;
-import java.awt.event.MouseAdapter;
-import java.awt.event.MouseEvent;
import javax.swing.AbstractAction;
import javax.swing.Action;
@@ -22,9 +20,11 @@ import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JDialog;
import javax.swing.JPanel;
-import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;
import javax.swing.JTable;
+import javax.swing.KeyStroke;
+import javax.swing.event.TableModelEvent;
+import javax.swing.event.TableModelListener;
import javax.swing.table.DefaultTableModel;
import com.jgoodies.forms.factories.Borders;
@@ -35,79 +35,14 @@ import com.jgoodies.forms.factories.ButtonBarFactory;
//
public class ListDialog extends JDialog
-{
- class PopupListener extends MouseAdapter
- {
- public void mousePressed(MouseEvent e)
- {
- maybeShowPopup(e);
- }
-
- public void mouseReleased(MouseEvent e)
- {
- maybeShowPopup(e);
- }
-
- private void maybeShowPopup(MouseEvent e)
- {
- if (e.isPopupTrigger())
- {
- _popup.show(e.getX(), e.getY());
- }
- }
- }
-
- class PopupMenu extends JPopupMenu
- {
- PopupMenu()
- {
- _addRow = new AbstractAction("Add a new element")
- {
- public void actionPerformed(ActionEvent e)
- {
- java.util.Vector newRow = null;
- _model.addRow(newRow);
- }
- };
-
- _deleteRow = new AbstractAction("Delete selected element(s)")
- {
- public void actionPerformed(ActionEvent e)
- {
- for(;;)
- {
- int selectedRow = _list.getSelectedRow();
- if(selectedRow == -1)
- {
- break;
- }
- else
- {
- _model.removeRow(selectedRow);
- }
- }
- }
- };
-
- add(_addRow);
- add(_deleteRow);
- }
-
- void show(int x, int y)
- {
- _deleteRow.setEnabled(_list.getSelectedRowCount() > 0);
- show(_list, x, y);
- }
-
- private Action _addRow;
- private Action _deleteRow;
- }
-
- public ListDialog(Frame parentFrame, String title)
+{
+ public ListDialog(Frame parentFrame, String title, boolean trim)
{
super(parentFrame, title, true);
setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE);
-
+
+ _trim = trim;
+
_columnNames = new java.util.Vector(1);
_columnNames.add("item");
@@ -132,12 +67,35 @@ public class ListDialog extends JDialog
}
};
JButton cancelButton = new JButton(cancel);
+
+ Action deleteRow = new AbstractAction("Delete selected element(s)")
+ {
+ public void actionPerformed(ActionEvent e)
+ {
+ if(_list.isEditing())
+ {
+ _list.getCellEditor().stopCellEditing();
+ }
+
+ for(;;)
+ {
+ int selectedRow = _list.getSelectedRow();
+ if(selectedRow == -1)
+ {
+ break;
+ }
+ else
+ {
+ _model.removeRow(selectedRow);
+ }
+ }
+ }
+ };
+ _list.getActionMap().put("delete", deleteRow);
+ _list.getInputMap().put(KeyStroke.getKeyStroke("DELETE"), "delete");
+
JScrollPane scrollPane = new JScrollPane(_list);
-
- PopupListener popupListener = new PopupListener();
- _list.addMouseListener(popupListener);
- scrollPane.addMouseListener(popupListener);
scrollPane.setBorder(Borders.DIALOG_BORDER);
getContentPane().add(scrollPane, BorderLayout.CENTER);
@@ -163,12 +121,26 @@ public class ListDialog extends JDialog
elt.add(p.next());
vector.add(elt);
}
- if(vector.size() == 0)
- {
- vector.addElement(new java.util.Vector(1));
- }
-
+
+ java.util.Vector newRow = new java.util.Vector(1);
+ newRow.add("");
+ vector.addElement(newRow);
+
_model = new DefaultTableModel(vector, _columnNames);
+
+ _model.addTableModelListener(new TableModelListener()
+ {
+ public void tableChanged(TableModelEvent e)
+ {
+ Object lastKey = _model.getValueAt(
+ _model.getRowCount() - 1 , 0);
+ if(lastKey != null && !lastKey.equals(""))
+ {
+ _model.addRow(new Object[]{""});
+ }
+ }
+ });
+
_list.setModel(_model);
setLocationRelativeTo(onComponent);
@@ -191,9 +163,17 @@ public class ListDialog extends JDialog
java.util.LinkedList result = new java.util.LinkedList();
for(int i = 0; i < _model.getRowCount(); ++i)
{
- if(!_model.getValueAt(i, 0).equals(""))
+ String value = (String)_model.getValueAt(i, 0);
+ if(value != null)
{
- result.add(_model.getValueAt(i, 0));
+ if(_trim)
+ {
+ value = value.trim();
+ }
+ if(!value.equals(""))
+ {
+ result.add(value);
+ }
}
}
return result;
@@ -204,7 +184,7 @@ public class ListDialog extends JDialog
private DefaultTableModel _model;
private JTable _list;
private java.util.Vector _columnNames;
- private PopupMenu _popup = new PopupMenu();
+ private boolean _trim;
}
diff --git a/java/src/IceGrid/ParametersDialog.java b/java/src/IceGrid/ParametersDialog.java
index fa699869ccc..157ac416266 100755
--- a/java/src/IceGrid/ParametersDialog.java
+++ b/java/src/IceGrid/ParametersDialog.java
@@ -13,8 +13,6 @@ import java.awt.Dimension;
import java.awt.Frame;
import java.awt.event.ActionEvent;
-import java.awt.event.MouseAdapter;
-import java.awt.event.MouseEvent;
import javax.swing.AbstractAction;
import javax.swing.Action;
@@ -27,6 +25,9 @@ import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;
import javax.swing.JTable;
+import javax.swing.KeyStroke;
+import javax.swing.event.TableModelEvent;
+import javax.swing.event.TableModelListener;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableColumn;
@@ -41,74 +42,6 @@ import com.jgoodies.forms.factories.ButtonBarFactory;
public class ParametersDialog extends JDialog
{
- class PopupListener extends MouseAdapter
- {
- public void mousePressed(MouseEvent e)
- {
- maybeShowPopup(e);
- }
-
- public void mouseReleased(MouseEvent e)
- {
- maybeShowPopup(e);
- }
-
- private void maybeShowPopup(MouseEvent e)
- {
- if (e.isPopupTrigger())
- {
- _popup.show( e.getX(), e.getY());
- }
- }
- }
-
- class PopupMenu extends JPopupMenu
- {
- PopupMenu()
- {
- _addRow = new AbstractAction("Add a new parameter")
- {
- public void actionPerformed(ActionEvent e)
- {
- java.util.Vector newVector = new java.util.Vector(2);
- newVector.add(null);
- newVector.add(_nullObject);
- _model.addRow(newVector);
- }
- };
-
- _deleteRow = new AbstractAction("Delete selected parameter(s)")
- {
- public void actionPerformed(ActionEvent e)
- {
- for(;;)
- {
- int selectedRow = _table.getSelectedRow();
- if(selectedRow == -1)
- {
- break;
- }
- else
- {
- _model.removeRow(selectedRow);
- }
- }
- }
- };
-
- add(_addRow);
- add(_deleteRow);
- }
-
- void show(int x, int y)
- {
- _deleteRow.setEnabled(_table.getSelectedRowCount() > 0);
- show(_table, x, y);
- }
-
- private Action _addRow;
- private Action _deleteRow;
- }
public ParametersDialog(Frame parentFrame, String title,
String valHeading, boolean editNames,
@@ -156,13 +89,37 @@ public class ParametersDialog extends JDialog
};
JButton cancelButton = new JButton(cancel);
- JScrollPane scrollPane = new JScrollPane(_table);
if(_editNames)
{
- PopupListener popupListener = new PopupListener();
- _table.addMouseListener(popupListener);
- scrollPane.addMouseListener(popupListener);
+ Action deleteRow = new AbstractAction("Delete selected parameter(s)")
+ {
+ public void actionPerformed(ActionEvent e)
+ {
+ for(;;)
+ {
+ if(_table.isEditing())
+ {
+ _table.getCellEditor().stopCellEditing();
+ }
+
+ int selectedRow = _table.getSelectedRow();
+ if(selectedRow == -1)
+ {
+ break;
+ }
+ else
+ {
+ _model.removeRow(selectedRow);
+ }
+ }
+ }
+ };
+ _table.getActionMap().put("delete", deleteRow);
+ _table.getInputMap().put(
+ KeyStroke.getKeyStroke("DELETE"), "delete");
}
+
+ JScrollPane scrollPane = new JScrollPane(_table);
scrollPane.setBorder(Borders.DIALOG_BORDER);
getContentPane().add(scrollPane, BorderLayout.CENTER);
@@ -205,12 +162,12 @@ public class ParametersDialog extends JDialog
vector.add(row);
}
- if(_editNames && vector.size() == 0)
+ if(_editNames)
{
- java.util.Vector newVector = new java.util.Vector(2);
- newVector.add(null);
- newVector.add(_nullObject);
- vector.add(newVector);
+ java.util.Vector newRow = new java.util.Vector(2);
+ newRow.add("");
+ newRow.add(_nullObject);
+ vector.add(newRow);
}
_model = new DefaultTableModel(vector, _columnNames)
@@ -228,6 +185,23 @@ public class ParametersDialog extends JDialog
}
};
+
+ _model.addTableModelListener(new TableModelListener()
+ {
+ public void tableChanged(TableModelEvent e)
+ {
+ if(_editNames)
+ {
+ Object lastKey = _model.getValueAt(
+ _model.getRowCount() - 1 , 0);
+ if(lastKey != null && !lastKey.equals(""))
+ {
+ _model.addRow(new Object[]{"", _nullObject});
+ }
+ }
+ }
+ });
+
_table.setModel(_model);
TableColumn valColumn = _table.getColumnModel().getColumn(1);
@@ -266,20 +240,30 @@ public class ParametersDialog extends JDialog
// Eliminate rows with null or empty names
//
String name = (String)row.elementAt(0);
- if(name != null && name.length() > 0)
+ if(name != null)
{
if(_editNames)
{
- names.add(name);
+ name = name.trim();
}
- Object val = row.elementAt(1);
-
- //
- // Eliminate entries with "default" value
- //
- if(val != _nullObject)
+
+ if(!name.equals(""))
{
- values.put(name, val);
+ if(_editNames)
+ {
+ names.add(name);
+ }
+
+ Object val = row.elementAt(1);
+
+ //
+ // Eliminate entries with "default" value
+ //
+ if(val != _nullObject)
+ {
+ assert val != null;
+ values.put(name, val);
+ }
}
}
}
@@ -293,7 +277,6 @@ public class ParametersDialog extends JDialog
private JTable _table;
private DefaultTableModel _model;
private java.util.Vector _columnNames;
- private PopupMenu _popup = new PopupMenu();
private TableCellEditor _cellEditor;
}
diff --git a/java/src/IceGrid/TableDialog.java b/java/src/IceGrid/TableDialog.java
index 9b7a5376e12..52692c38057 100755
--- a/java/src/IceGrid/TableDialog.java
+++ b/java/src/IceGrid/TableDialog.java
@@ -13,8 +13,6 @@ import java.awt.Dimension;
import java.awt.Frame;
import java.awt.event.ActionEvent;
-import java.awt.event.MouseAdapter;
-import java.awt.event.MouseEvent;
import javax.swing.AbstractAction;
import javax.swing.Action;
@@ -22,9 +20,11 @@ import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JDialog;
import javax.swing.JPanel;
-import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;
import javax.swing.JTable;
+import javax.swing.KeyStroke;
+import javax.swing.event.TableModelEvent;
+import javax.swing.event.TableModelListener;
import javax.swing.table.DefaultTableModel;
import com.jgoodies.forms.factories.Borders;
@@ -37,73 +37,6 @@ import com.jgoodies.forms.factories.ButtonBarFactory;
public class TableDialog extends JDialog
{
- class PopupListener extends MouseAdapter
- {
- public void mousePressed(MouseEvent e)
- {
- maybeShowPopup(e);
- }
-
- public void mouseReleased(MouseEvent e)
- {
- maybeShowPopup(e);
- }
-
- private void maybeShowPopup(MouseEvent e)
- {
- if (e.isPopupTrigger())
- {
- _popup.show( e.getX(), e.getY());
- }
- }
- }
-
- class PopupMenu extends JPopupMenu
- {
- PopupMenu()
- {
- _addRow = new AbstractAction("Add a new row")
- {
- public void actionPerformed(ActionEvent e)
- {
- java.util.Vector newRow = null;
- _model.addRow(newRow);
- }
- };
-
- _deleteRow = new AbstractAction("Delete selected row(s)")
- {
- public void actionPerformed(ActionEvent e)
- {
- for(;;)
- {
- int selectedRow = _table.getSelectedRow();
- if(selectedRow == -1)
- {
- break;
- }
- else
- {
- _model.removeRow(selectedRow);
- }
- }
- }
- };
-
- add(_addRow);
- add(_deleteRow);
- }
-
- void show(int x, int y)
- {
- _deleteRow.setEnabled(_table.getSelectedRowCount() > 0);
- show(_table, x, y);
- }
-
- private Action _addRow;
- private Action _deleteRow;
- }
-
public TableDialog(Frame parentFrame, String title,
String heading0, String heading1, boolean editKeys)
{
@@ -136,17 +69,42 @@ public class TableDialog extends JDialog
};
JButton cancelButton = new JButton(cancel);
- JScrollPane scrollPane = new JScrollPane(_table);
if(_editKeys)
{
- PopupListener popupListener = new PopupListener();
- _table.addMouseListener(popupListener);
- scrollPane.addMouseListener(popupListener);
+ Action deleteRow = new AbstractAction("Delete selected row(s)")
+ {
+ public void actionPerformed(ActionEvent e)
+ {
+ if(_table.isEditing())
+ {
+ _table.getCellEditor().stopCellEditing();
+ }
+
+ for(;;)
+ {
+ int selectedRow = _table.getSelectedRow();
+ if(selectedRow == -1)
+ {
+ break;
+ }
+ else
+ {
+ _model.removeRow(selectedRow);
+ }
+ }
+ }
+ };
+ _table.getActionMap().put("delete", deleteRow);
+ _table.getInputMap().put(
+ KeyStroke.getKeyStroke("DELETE"), "delete");
}
+
+ JScrollPane scrollPane = new JScrollPane(_table);
scrollPane.setBorder(Borders.DIALOG_BORDER);
getContentPane().add(scrollPane, BorderLayout.CENTER);
- JPanel buttonBar = ButtonBarFactory.buildOKCancelBar(okButton, cancelButton);
+ JPanel buttonBar =
+ ButtonBarFactory.buildOKCancelBar(okButton, cancelButton);
buttonBar.setBorder(Borders.DIALOG_BORDER);
getContentPane().add(buttonBar, BorderLayout.SOUTH);
@@ -173,9 +131,12 @@ public class TableDialog extends JDialog
row.add(entry.getValue());
vector.add(row);
}
- if(_editKeys && vector.size() == 0)
+ if(_editKeys)
{
- vector.add(new java.util.Vector(2));
+ java.util.Vector newRow = new java.util.Vector(2);
+ newRow.add("");
+ newRow.add("");
+ vector.add(newRow);
}
_model = new DefaultTableModel(vector, _columnNames)
@@ -193,6 +154,23 @@ public class TableDialog extends JDialog
}
};
+ _model.addTableModelListener(new TableModelListener()
+ {
+ public void tableChanged(TableModelEvent e)
+ {
+ if(_editKeys)
+ {
+ Object lastKey = _model.getValueAt(
+ _model.getRowCount() - 1 , 0);
+ if(lastKey != null && !lastKey.equals(""))
+ {
+ _model.addRow(new Object[]{"", ""});
+ }
+ }
+ }
+ });
+
+
_table.setModel(_model);
setLocationRelativeTo(onComponent);
@@ -223,9 +201,22 @@ public class TableDialog extends JDialog
// Eliminate rows with null or empty keys
//
String key = (String)row.elementAt(0);
- if(key != null && key.length() > 0)
+ if(key != null)
{
- result.put(key, row.elementAt(1));
+ if(_editKeys)
+ {
+ key = key.trim();
+ }
+
+ if(!key.equals(""))
+ {
+ String val = (String) row.elementAt(1);
+ if(val == null)
+ {
+ val = "";
+ }
+ result.put(key, val);
+ }
}
}
return result;
@@ -237,7 +228,6 @@ public class TableDialog extends JDialog
private JTable _table;
private DefaultTableModel _model;
private java.util.Vector _columnNames;
- private PopupMenu _popup = new PopupMenu();
}
diff --git a/java/src/IceGrid/TreeNode/Adapter.java b/java/src/IceGrid/TreeNode/Adapter.java
index 02551d1c0f6..92f6d7ae19f 100755
--- a/java/src/IceGrid/TreeNode/Adapter.java
+++ b/java/src/IceGrid/TreeNode/Adapter.java
@@ -229,13 +229,17 @@ class Adapter extends Leaf
assert ph != null;
return ph.get(_descriptor.name + "." + property);
}
-
- void setProperty(String property, String newName, String newValue)
+ void setProperty(String name, String property, String newValue)
+ {
+ PropertiesHolder ph = getParent().getParent().getPropertiesHolder();
+ assert ph != null;
+ ph.set(name + "." + property, newValue);
+ }
+ void removeProperty(String name, String property)
{
PropertiesHolder ph = getParent().getParent().getPropertiesHolder();
assert ph != null;
- ph.replace(_descriptor.name + "." + property,
- newName + "." + property, newValue);
+ ph.remove(name + "." + property);
}
String getAdapterId()
diff --git a/java/src/IceGrid/TreeNode/AdapterEditor.java b/java/src/IceGrid/TreeNode/AdapterEditor.java
index 4a3378f9d93..3a2f0bb033e 100755
--- a/java/src/IceGrid/TreeNode/AdapterEditor.java
+++ b/java/src/IceGrid/TreeNode/AdapterEditor.java
@@ -227,19 +227,25 @@ class AdapterEditor extends ListElementEditor
//
// Change enclosing properties after successful update
//
- getAdapter().setProperty("Endpoints", _name.getText(),
- _endpoints.getText());
+ String name = _name.getText();
+ Adapter adapter = getAdapter();
+ if(!name.equals(_oldName))
+ {
+ adapter.removeProperty(_oldName, "Endpoints");
+ adapter.removeProperty(_oldName, "PublishedEndpoints");
+ }
+
+ adapter.setProperty(name, "Endpoints", _endpoints.getText());
Object published = _publishedEndpoints.getSelectedItem();
if(published == PUBLISH_ACTUAL)
{
- getAdapter().setProperty("PublishedEndpoints", _name.getText(),
- "");
+ adapter.removeProperty(name, "PublishedEndpoints");
}
else
{
- getAdapter().setProperty("PublishedEndpoints", _name.getText(),
- published.toString());
+ adapter.setProperty(name, "PublishedEndpoints",
+ published.toString());
}
}
@@ -347,8 +353,9 @@ class AdapterEditor extends ListElementEditor
boolean isEditable = adapter.isEditable() && resolver == null;
boolean inIceBox = adapter.inIceBox();
- _name.setText(
- Utils.substitute(descriptor.name, resolver));
+ _oldName = descriptor.name;
+
+ _name.setText(Utils.substitute(descriptor.name, resolver));
_name.setEditable(isEditable && !inIceBox);
_description.setText(
@@ -476,6 +483,9 @@ class AdapterEditor extends ListElementEditor
}
return result;
}
+
+
+ private String _oldName;
private JTextField _name = new JTextField(20);
private JTextArea _description = new JTextArea(3, 20);
@@ -489,8 +499,6 @@ class AdapterEditor extends ListElementEditor
new Object[]{PUBLISH_ACTUAL});
private JTextField _currentEndpoints = new JTextField(20);
-
-
private JCheckBox _registerProcess;
private JCheckBox _waitForActivation;
diff --git a/java/src/IceGrid/TreeNode/Application.java b/java/src/IceGrid/TreeNode/Application.java
index 04df1e024af..c00be603606 100755
--- a/java/src/IceGrid/TreeNode/Application.java
+++ b/java/src/IceGrid/TreeNode/Application.java
@@ -8,6 +8,7 @@
// **********************************************************************
package IceGrid.TreeNode;
+import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPopupMenu;
@@ -63,6 +64,13 @@ public class Application extends EditableParent
actions[APPLICATION_INSTALL_DISTRIBUTION] =
!_descriptor.distrib.icepatch.equals("");
}
+
+ actions[NEW_NODE] = (_nodes != null);
+ actions[NEW_REPLICA_GROUP] = (_replicaGroups != null);
+ actions[NEW_TEMPLATE_SERVER] = (_serverTemplates != null);
+ actions[NEW_TEMPLATE_SERVER_ICEBOX] = (_serverTemplates != null);
+ actions[NEW_TEMPLATE_SERVICE] = (_serviceTemplates != null);
+
return actions;
}
public JPopupMenu getPopupMenu()
@@ -70,6 +78,30 @@ public class Application extends EditableParent
if(_popup == null)
{
_popup = new PopupMenu(_model);
+
+ JMenuItem newNodeItem = new JMenuItem(_model.getActions()[NEW_NODE]);
+ newNodeItem.setText("New node");
+ _popup.add(newNodeItem);
+
+ JMenuItem newReplicaGroupItem = new JMenuItem(_model.getActions()[NEW_REPLICA_GROUP]);
+ newReplicaGroupItem.setText("New replica group");
+ _popup.add(newReplicaGroupItem);
+ _popup.addSeparator();
+
+ JMenuItem newServerItem = new JMenuItem(_model.getActions()[NEW_TEMPLATE_SERVER]);
+ newServerItem.setText("New server template");
+ _popup.add(newServerItem);
+ JMenuItem newIceBoxItem =
+ new JMenuItem(_model.getActions()[NEW_TEMPLATE_SERVER_ICEBOX]);
+ newIceBoxItem.setText("New IceBox server template");
+ _popup.add(newIceBoxItem);
+ _popup.addSeparator();
+
+ JMenuItem newServiceItem = new JMenuItem(_model.getActions()[NEW_TEMPLATE_SERVICE]);
+ newServiceItem.setText("New service template");
+ _popup.add(newServiceItem);
+ _popup.addSeparator();
+
_popup.add(_model.getActions()[APPLICATION_INSTALL_DISTRIBUTION]);
}
return _popup;
@@ -83,6 +115,26 @@ public class Application extends EditableParent
{
_parent.paste();
}
+ public void newNode()
+ {
+ _nodes.newNode();
+ }
+ public void newReplicaGroup()
+ {
+ _replicaGroups.newReplicaGroup();
+ }
+ public void newTemplateServer()
+ {
+ _serverTemplates.newTemplateServer();
+ }
+ public void newTemplateServerIceBox()
+ {
+ _serverTemplates.newTemplateServerIceBox();
+ }
+ public void newTemplateService()
+ {
+ _serviceTemplates.newTemplateService();
+ }
public ApplicationUpdateDescriptor createUpdateDescriptor()
{
diff --git a/java/src/IceGrid/TreeNode/ApplicationEditor.java b/java/src/IceGrid/TreeNode/ApplicationEditor.java
index cec4137d56b..010f9f78535 100755
--- a/java/src/IceGrid/TreeNode/ApplicationEditor.java
+++ b/java/src/IceGrid/TreeNode/ApplicationEditor.java
@@ -180,7 +180,7 @@ class ApplicationEditor extends Editor
_distribDirs.setEditable(false);
_distribDirsDialog = new ListDialog(parentFrame,
- "Directories");
+ "Directories", true);
Action openDistribDirsDialog = new AbstractAction("...")
{
diff --git a/java/src/IceGrid/TreeNode/Nodes.java b/java/src/IceGrid/TreeNode/Nodes.java
index 2829a42bc88..6f0a45ffc9c 100755
--- a/java/src/IceGrid/TreeNode/Nodes.java
+++ b/java/src/IceGrid/TreeNode/Nodes.java
@@ -59,7 +59,8 @@ public class Nodes extends EditableParent
{
_popup = new PopupMenu(_model);
- JMenuItem newNodeItem = new JMenuItem(_model.getActions()[NEW_NODE]);
+ JMenuItem newNodeItem =
+ new JMenuItem(_model.getActions()[NEW_NODE]);
newNodeItem.setText("New node");
_popup.add(newNodeItem);
}
diff --git a/java/src/IceGrid/TreeNode/PropertiesHolder.java b/java/src/IceGrid/TreeNode/PropertiesHolder.java
index a35d3e931d5..745b0a8053a 100755
--- a/java/src/IceGrid/TreeNode/PropertiesHolder.java
+++ b/java/src/IceGrid/TreeNode/PropertiesHolder.java
@@ -35,40 +35,24 @@ class PropertiesHolder
return null;
}
- void replace(String oldKey, String newKey, String newValue)
+ void set(String key, String newValue)
{
- //
- // Each PropertyDescriptor is considered immutable: so always remove + put
- //
- boolean oldKeyRemoved = false;
- boolean newKeyRemoved = false;
- if(oldKey.equals(newKey))
- {
- oldKeyRemoved = true;
- }
+ remove(key);
+ _descriptor.properties.add(new PropertyDescriptor(key, newValue));
+ }
+ void remove(String key)
+ {
java.util.Iterator p = _descriptor.properties.iterator();
- while(p.hasNext() && (!oldKeyRemoved || !newKeyRemoved))
+ while(p.hasNext())
{
PropertyDescriptor pd = (PropertyDescriptor)p.next();
-
- if(!oldKeyRemoved && pd.name.equals(oldKey))
- {
- p.remove();
- oldKeyRemoved = true;
- }
- else if(!newKeyRemoved && pd.name.equals(newKey))
+ if(pd.name.equals(key))
{
p.remove();
- newKeyRemoved = true;
}
}
-
-
- if(!newValue.equals(""))
- {
- _descriptor.properties.add(new PropertyDescriptor(newKey, newValue));
- }
}
+
private CommunicatorDescriptor _descriptor;
}
diff --git a/java/src/IceGrid/TreeNode/Server.java b/java/src/IceGrid/TreeNode/Server.java
index 5ae524ede47..a5f38801e2d 100755
--- a/java/src/IceGrid/TreeNode/Server.java
+++ b/java/src/IceGrid/TreeNode/Server.java
@@ -163,6 +163,13 @@ class Server extends EditableParent
actions[DELETE] = true;
actions[SUBSTITUTE_VARS] = true;
+
+ if(_instanceDescriptor == null)
+ {
+ actions[NEW_ADAPTER] = (_adapters != null && _services == null);
+ actions[NEW_SERVICE] = (_services != null);
+ actions[NEW_DBENV] = (_dbEnvs != null);
+ }
ServerState state = getState();
if(state != null)
@@ -187,6 +194,20 @@ class Server extends EditableParent
if(_popup == null)
{
_popup = new PopupMenu(_model);
+
+ JMenuItem item = new JMenuItem(_model.getActions()[NEW_ADAPTER]);
+ item.setText("New adapter");
+ _popup.add(item);
+
+ item = new JMenuItem(_model.getActions()[NEW_DBENV]);
+ item.setText("New DbEnv");
+ _popup.add(item);
+
+ item = new JMenuItem(_model.getActions()[NEW_SERVICE]);
+ item.setText("New service");
+ _popup.add(item);
+
+ _popup.addSeparator();
_popup.add(_model.getActions()[START]);
_popup.add(_model.getActions()[STOP]);
_popup.addSeparator();
@@ -213,6 +234,18 @@ class Server extends EditableParent
{
_parent.paste();
}
+ public void newAdapter()
+ {
+ _adapters.newAdapter();
+ }
+ public void newDbEnv()
+ {
+ _dbEnvs.newDbEnv();
+ }
+ public void newService()
+ {
+ _services.newService();
+ }
public void start()
{
diff --git a/java/src/IceGrid/TreeNode/ServerSubEditor.java b/java/src/IceGrid/TreeNode/ServerSubEditor.java
index a0153e7545b..c11524a03c9 100755
--- a/java/src/IceGrid/TreeNode/ServerSubEditor.java
+++ b/java/src/IceGrid/TreeNode/ServerSubEditor.java
@@ -73,7 +73,7 @@ class ServerSubEditor extends CommunicatorSubEditor
_envButton = new JButton(openEnvDialog);
_optionDialog = new ListDialog(parentFrame,
- "Command Arguments");
+ "Command Arguments", false);
Action openOptionDialog = new AbstractAction("...")
{
public void actionPerformed(ActionEvent e)
@@ -99,7 +99,7 @@ class ServerSubEditor extends CommunicatorSubEditor
_distribDirs.setEditable(false);
_distribDirsDialog = new ListDialog(parentFrame,
- "Directories");
+ "Directories", true);
Action openDistribDirsDialog = new AbstractAction("...")
{
diff --git a/java/src/IceGrid/TreeNode/ServerTemplate.java b/java/src/IceGrid/TreeNode/ServerTemplate.java
index d9579b012be..4b85ba0714c 100755
--- a/java/src/IceGrid/TreeNode/ServerTemplate.java
+++ b/java/src/IceGrid/TreeNode/ServerTemplate.java
@@ -66,6 +66,11 @@ class ServerTemplate extends EditableParent
actions[PASTE] = true;
}
actions[DELETE] = true;
+
+ actions[NEW_ADAPTER] = (_adapters != null && _services == null);
+ actions[NEW_SERVICE] = (_services != null);
+ actions[NEW_DBENV] = (_dbEnvs != null);
+
return actions;
}
public void copy()
@@ -77,6 +82,40 @@ class ServerTemplate extends EditableParent
{
_parent.paste();
}
+ public void newAdapter()
+ {
+ _adapters.newAdapter();
+ }
+ public void newDbEnv()
+ {
+ _dbEnvs.newDbEnv();
+ }
+ public void newService()
+ {
+ _services.newService();
+ }
+
+ public JPopupMenu getPopupMenu()
+ {
+ if(_popup == null)
+ {
+ _popup = new PopupMenu(_model);
+
+ JMenuItem item = new JMenuItem(_model.getActions()[NEW_ADAPTER]);
+ item.setText("New adapter");
+ _popup.add(item);
+
+ item = new JMenuItem(_model.getActions()[NEW_DBENV]);
+ item.setText("New DbEnv");
+ _popup.add(item);
+
+ item = new JMenuItem(_model.getActions()[NEW_SERVICE]);
+ item.setText("New service");
+ _popup.add(item);
+ }
+ return _popup;
+ }
+
public void displayProperties()
{
@@ -226,9 +265,9 @@ class ServerTemplate extends EditableParent
{
if(_templateDescriptor.descriptor instanceof IceBoxDescriptor)
{
- _iceBoxDescriptor = (IceBoxDescriptor)_templateDescriptor.descriptor;
+ IceBoxDescriptor iceBoxDescriptor = (IceBoxDescriptor)_templateDescriptor.descriptor;
- _services = new Services(_iceBoxDescriptor.services, true, null,
+ _services = new Services(iceBoxDescriptor.services, true, null,
application);
addChild(_services);
@@ -238,7 +277,6 @@ class ServerTemplate extends EditableParent
else
{
_services = null;
- _iceBoxDescriptor = null;
_dbEnvs = new DbEnvs(_templateDescriptor.descriptor.dbEnvs, true,
null, _model);
@@ -260,8 +298,7 @@ class ServerTemplate extends EditableParent
}
private TemplateDescriptor _templateDescriptor;
- private IceBoxDescriptor _iceBoxDescriptor;
-
+
private Services _services;
private Adapters _adapters;
private DbEnvs _dbEnvs;
@@ -270,4 +307,5 @@ class ServerTemplate extends EditableParent
private final boolean _ephemeral;
static private ServerTemplateEditor _editor;
+ static private JPopupMenu _popup;
}
diff --git a/java/src/IceGrid/TreeNode/Service.java b/java/src/IceGrid/TreeNode/Service.java
index 06f3c12608f..f85aa8820e1 100755
--- a/java/src/IceGrid/TreeNode/Service.java
+++ b/java/src/IceGrid/TreeNode/Service.java
@@ -8,6 +8,7 @@
// **********************************************************************
package IceGrid.TreeNode;
+import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import IceGrid.SimpleInternalFrame;
@@ -63,6 +64,12 @@ class Service extends Parent
if(isEditable())
{
actions[DELETE] = true;
+
+ if(_instanceDescriptor.template.equals(""))
+ {
+ actions[NEW_ADAPTER] = (_adapters != null);
+ actions[NEW_DBENV] = (_dbEnvs != null);
+ }
}
if(_resolver != null && !_ephemeral)
@@ -79,6 +86,15 @@ class Service extends Parent
if(_popup == null)
{
_popup = new PopupMenu(_model);
+ JMenuItem item = new JMenuItem(_model.getActions()[NEW_ADAPTER]);
+ item.setText("New adapter");
+ _popup.add(item);
+
+ item = new JMenuItem(_model.getActions()[NEW_DBENV]);
+ item.setText("New DbEnv");
+ _popup.add(item);
+
+ _popup.addSeparator();
_popup.add(_model.getActions()[MOVE_UP]);
_popup.add(_model.getActions()[MOVE_DOWN]);
}
@@ -103,6 +119,14 @@ class Service extends Parent
assert canMoveDown();
((Services)_parent).move(this, false);
}
+ public void newAdapter()
+ {
+ _adapters.newAdapter();
+ }
+ public void newDbEnv()
+ {
+ _dbEnvs.newDbEnv();
+ }
public Object getDescriptor()
{
diff --git a/java/src/IceGrid/TreeNode/ServiceTemplate.java b/java/src/IceGrid/TreeNode/ServiceTemplate.java
index 03ed357f4a5..98a891938cc 100755
--- a/java/src/IceGrid/TreeNode/ServiceTemplate.java
+++ b/java/src/IceGrid/TreeNode/ServiceTemplate.java
@@ -8,11 +8,14 @@
// **********************************************************************
package IceGrid.TreeNode;
-import IceGrid.SimpleInternalFrame;
+import javax.swing.JMenuItem;
+import javax.swing.JPopupMenu;
+import IceGrid.Model;
import IceGrid.ServiceDescriptor;
+import IceGrid.SimpleInternalFrame;
import IceGrid.TemplateDescriptor;
-import IceGrid.Model;
+
class ServiceTemplate extends EditableParent
{
@@ -40,6 +43,10 @@ class ServiceTemplate extends EditableParent
actions[PASTE] = true;
}
actions[DELETE] = true;
+
+ actions[NEW_ADAPTER] = (_adapters != null);
+ actions[NEW_DBENV] = (_dbEnvs != null);
+
return actions;
}
public void copy()
@@ -51,6 +58,31 @@ class ServiceTemplate extends EditableParent
{
_parent.paste();
}
+ public void newAdapter()
+ {
+ _adapters.newAdapter();
+ }
+ public void newDbEnv()
+ {
+ _dbEnvs.newDbEnv();
+ }
+
+ public JPopupMenu getPopupMenu()
+ {
+ if(_popup == null)
+ {
+ _popup = new PopupMenu(_model);
+ JMenuItem item = new JMenuItem(_model.getActions()[NEW_ADAPTER]);
+ item.setText("New adapter");
+ _popup.add(item);
+
+ item = new JMenuItem(_model.getActions()[NEW_DBENV]);
+ item.setText("New DbEnv");
+ _popup.add(item);
+ }
+ return _popup;
+ }
+
public void displayProperties()
{
@@ -204,4 +236,5 @@ class ServiceTemplate extends EditableParent
private final boolean _ephemeral;
static private ServiceTemplateEditor _editor;
+ static private JPopupMenu _popup;
}