summaryrefslogtreecommitdiff
path: root/java/src/IceGrid/TreeNode/DbEnvs.java
diff options
context:
space:
mode:
authorBernard Normier <bernard@zeroc.com>2005-10-12 18:10:42 +0000
committerBernard Normier <bernard@zeroc.com>2005-10-12 18:10:42 +0000
commitf5b93fb960c72cacf5d13b8f1bb678237b72f5ff (patch)
tree4b63702a50a9247bc2f5ce1cf76e7eabbbe48fb1 /java/src/IceGrid/TreeNode/DbEnvs.java
parentminor edits (diff)
downloadice-f5b93fb960c72cacf5d13b8f1bb678237b72f5ff.tar.bz2
ice-f5b93fb960c72cacf5d13b8f1bb678237b72f5ff.tar.xz
ice-f5b93fb960c72cacf5d13b8f1bb678237b72f5ff.zip
DbEnv editor + cleanup
Diffstat (limited to 'java/src/IceGrid/TreeNode/DbEnvs.java')
-rwxr-xr-xjava/src/IceGrid/TreeNode/DbEnvs.java124
1 files changed, 117 insertions, 7 deletions
diff --git a/java/src/IceGrid/TreeNode/DbEnvs.java b/java/src/IceGrid/TreeNode/DbEnvs.java
index 96d3b08767c..c68690ff85b 100755
--- a/java/src/IceGrid/TreeNode/DbEnvs.java
+++ b/java/src/IceGrid/TreeNode/DbEnvs.java
@@ -8,11 +8,14 @@
// **********************************************************************
package IceGrid.TreeNode;
+import javax.swing.JMenuItem;
+import javax.swing.JPopupMenu;
+
import IceGrid.DbEnvDescriptor;
import IceGrid.Model;
import IceGrid.Utils;
-class DbEnvs extends Parent
+class DbEnvs extends ListParent
{
static public java.util.LinkedList copyDescriptors(java.util.LinkedList list)
{
@@ -25,7 +28,84 @@ class DbEnvs extends Parent
return copy;
}
+ //
+ // Actions
+ //
+ public boolean[] getAvailableActions()
+ {
+ boolean[] actions = new boolean[ACTION_COUNT];
+
+ Object descriptor = _model.getClipboard();
+ if(descriptor != null)
+ {
+ actions[PASTE] = _isEditable &&
+ descriptor instanceof DbEnvDescriptor;
+ }
+
+ actions[NEW_DBENV] = _isEditable;
+ return actions;
+ }
+
+ public JPopupMenu getPopupMenu()
+ {
+ if(_popup == null)
+ {
+ _popup = new PopupMenu(_model);
+ JMenuItem item = new JMenuItem(_model.getActions()[NEW_DBENV]);
+ item.setText("New DbEnv");
+ _popup.add(item);
+ }
+ if(_isEditable)
+ {
+ return _popup;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ public void newDbEnv()
+ {
+ DbEnvDescriptor descriptor = new DbEnvDescriptor(
+ "NewDbEnv",
+ "",
+ new java.util.LinkedList());
+
+ newDbEnv(descriptor);
+ }
+ public void paste()
+ {
+ Object descriptor = _model.getClipboard();
+ assert _isEditable &&
+ descriptor instanceof DbEnvDescriptor;
+
+ DbEnvDescriptor d = DbEnv.copyDescriptor(
+ (DbEnvDescriptor)descriptor);
+ d.name = makeNewChildId(d.name);
+ newDbEnv(d);
+ }
+
+ CommonBase addNewChild(Object d) throws UpdateFailedException
+ {
+ System.err.println("Adding new child to " + _id);
+
+ DbEnvDescriptor descriptor = (DbEnvDescriptor)d;
+
+ try
+ {
+ DbEnv dbEnv = createDbEnv(descriptor);
+ addChild(dbEnv, true);
+ return dbEnv;
+ }
+ catch(UpdateFailedException e)
+ {
+ e.addParent(this);
+ throw e;
+ }
+ }
+
DbEnvs(java.util.List descriptors,
boolean isEditable,
Utils.Resolver resolver,
@@ -34,15 +114,45 @@ class DbEnvs extends Parent
{
super("DbEnvs", model);
_isEditable = isEditable;
- java.util.Iterator p = descriptors.iterator();
+ _descriptors = descriptors;
+ _resolver = resolver;
+
+ java.util.Iterator p = _descriptors.iterator();
while(p.hasNext())
{
- DbEnvDescriptor descriptor = (DbEnvDescriptor)p.next();
-
- String dbEnvName = Utils.substitute(descriptor.name, resolver);
- addChild(new DbEnv(dbEnvName, descriptor, resolver, _model));
+ addChild(createDbEnv((DbEnvDescriptor)p.next()));
}
}
- private boolean _isEditable;
+ boolean isEditable()
+ {
+ return _isEditable;
+ }
+
+ private DbEnv createDbEnv(DbEnvDescriptor descriptor)
+ {
+ String dbEnvName = Utils.substitute(descriptor.name, _resolver);
+ return new DbEnv(dbEnvName, descriptor, _resolver, _model);
+ }
+
+ private void newDbEnv(DbEnvDescriptor descriptor)
+ {
+ descriptor.name = makeNewChildId(descriptor.name);
+ DbEnv dbEnv = new DbEnv(descriptor.name, descriptor, _model);
+ try
+ {
+ addChild(dbEnv, true);
+ }
+ catch(UpdateFailedException e)
+ {
+ assert false;
+ }
+ _model.setSelectionPath(dbEnv.getPath());
+
+ }
+
+ private final boolean _isEditable;
+ private Utils.Resolver _resolver;
+
+ static private JPopupMenu _popup;
}