summaryrefslogtreecommitdiff
path: root/java/src/IceGrid/TreeNode/Adapters.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/src/IceGrid/TreeNode/Adapters.java')
-rwxr-xr-xjava/src/IceGrid/TreeNode/Adapters.java336
1 files changed, 184 insertions, 152 deletions
diff --git a/java/src/IceGrid/TreeNode/Adapters.java b/java/src/IceGrid/TreeNode/Adapters.java
index acb19c48cad..3402e29687b 100755
--- a/java/src/IceGrid/TreeNode/Adapters.java
+++ b/java/src/IceGrid/TreeNode/Adapters.java
@@ -1,152 +1,184 @@
-// **********************************************************************
-//
-// Copyright (c) 2003-2005 ZeroC, Inc. All rights reserved.
-//
-// This copy of Ice is licensed to you under the terms described in the
-// ICE_LICENSE file included in this distribution.
-//
-// **********************************************************************
-package IceGrid.TreeNode;
-
-import IceGrid.AdapterDescriptor;
-import IceGrid.Model;
-import IceGrid.Utils;
-
-
-class Adapters extends Parent
-{
- public void unregister()
- {
- java.util.Iterator p = _children.iterator();
- while(p.hasNext())
- {
- Adapter adapter = (Adapter)p.next();
- adapter.unregister();
- }
- }
-
-
- Adapters(java.util.List descriptors, boolean isEditable,
- boolean inIceBox, Utils.Resolver resolver,
- Application application, Model model)
- throws DuplicateIdException
- {
- super("Adapters", model);
- _descriptors = descriptors;
- _isEditable = isEditable;
- _inIceBox = inIceBox;
- _resolver = resolver;
-
- java.util.Iterator p = _descriptors.iterator();
- while(p.hasNext())
- {
- AdapterDescriptor descriptor = (AdapterDescriptor)p.next();
-
- String adapterName = Utils.substitute(descriptor.name,
- _resolver);
-
- addChild(new Adapter(adapterName, descriptor,
- _resolver, application, _model));
- }
- }
-
- boolean canHaveNewChild()
- {
- return _isEditable && !_inIceBox;
- }
-
- boolean isEditable()
- {
- return _isEditable;
- }
-
- boolean inIceBox()
- {
- return _inIceBox;
- }
-
- void newChild()
- {
- newAdapter(null);
- }
-
- void newAdapter(AdapterDescriptor descriptor)
- {
- //
- // Generate a unique child name; ignore substitution for simplicity
- //
- String baseName = descriptor == null ? "NewAdapter" : descriptor.name;
- String name = baseName;
-
- int i = 0;
- while(findChild(name) != null || findChild("*" + name) != null)
- {
- name = baseName + "-" + (++i);
- }
-
- if(descriptor == null)
- {
- CommonBase parent = getParent();
- String defaultId = (parent instanceof Service || parent instanceof ServiceTemplate) ?
- "${server}.${service}." + name : "${server}." + name;
-
- descriptor = new AdapterDescriptor(
- name,
- defaultId,
- false,
- true,
- new java.util.LinkedList());
- }
- else
- {
- descriptor.name = name;
- }
-
- Adapter adapter = new Adapter(name, descriptor, _resolver, _model);
- try
- {
- addChild(adapter, true);
- }
- catch(DuplicateIdException e)
- {
- assert false;
- }
- adapter.setParent(this);
- _model.setSelectionPath(adapter.getPath());
- }
-
- public void paste(Object descriptor)
- {
- if(canHaveNewChild() && descriptor instanceof AdapterDescriptor)
- {
- AdapterDescriptor d = (AdapterDescriptor)descriptor;
- newAdapter((AdapterDescriptor)d.clone());
- }
- }
-
- void addDescriptor(AdapterDescriptor descriptor)
- {
- _descriptors.add(descriptor);
- }
-
- void removeDescriptor(AdapterDescriptor descriptor)
- {
- //
- // A straight remove uses equals(), which is not the desired behavior
- //
- java.util.Iterator p = _descriptors.iterator();
- while(p.hasNext())
- {
- if(descriptor == p.next())
- {
- p.remove();
- break;
- }
- }
- }
-
- private java.util.List _descriptors;
- private Utils.Resolver _resolver;
- private boolean _isEditable;
- private boolean _inIceBox;
-}
+// **********************************************************************
+//
+// Copyright (c) 2003-2005 ZeroC, Inc. All rights reserved.
+//
+// This copy of Ice is licensed to you under the terms described in the
+// ICE_LICENSE file included in this distribution.
+//
+// **********************************************************************
+package IceGrid.TreeNode;
+
+import java.awt.event.ActionEvent;
+
+import javax.swing.AbstractAction;
+import javax.swing.Action;
+import javax.swing.JPopupMenu;
+
+import IceGrid.AdapterDescriptor;
+import IceGrid.Model;
+import IceGrid.Utils;
+
+class Adapters extends SimpleContainer
+{
+ static class NewPopupMenu extends JPopupMenu
+ {
+ NewPopupMenu()
+ {
+ _new = new AbstractAction("New adapter")
+ {
+ public void actionPerformed(ActionEvent e)
+ {
+ _parent.newAdapter(null);
+ }
+ };
+
+ add(_new);
+ }
+
+ void setParent(Adapters parent)
+ {
+ _parent = parent;
+ }
+
+ private Adapters _parent;
+ private Action _new;
+ }
+
+ public JPopupMenu getPopupMenu()
+ {
+ if(canHaveNewChild())
+ {
+ if(_popup == null)
+ {
+ _popup = new NewPopupMenu();
+ }
+ _popup.setParent(this);
+ return _popup;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ public void unregister()
+ {
+ java.util.Iterator p = _children.iterator();
+ while(p.hasNext())
+ {
+ Adapter adapter = (Adapter)p.next();
+ adapter.unregister();
+ }
+ }
+
+ static public java.util.LinkedList
+ copyDescriptors(java.util.LinkedList descriptors)
+ {
+ java.util.LinkedList copy = new java.util.LinkedList();
+ java.util.Iterator p = descriptors.iterator();
+ while(p.hasNext())
+ {
+ copy.add(Adapter.copyDescriptor((AdapterDescriptor)p.next()));
+ }
+ return copy;
+ }
+
+ Adapters(java.util.List descriptors, boolean isEditable,
+ boolean inIceBox, Utils.Resolver resolver,
+ Application application, Model model)
+ throws DuplicateIdException
+ {
+ super("Adapters", model);
+ _descriptors = descriptors;
+ _isEditable = isEditable;
+ _inIceBox = inIceBox;
+ _resolver = resolver;
+
+ java.util.Iterator p = _descriptors.iterator();
+ while(p.hasNext())
+ {
+ AdapterDescriptor descriptor = (AdapterDescriptor)p.next();
+
+ String adapterName = Utils.substitute(descriptor.name, _resolver);
+
+ addChild(new Adapter(adapterName, descriptor,
+ _resolver, application, _model));
+ }
+ }
+
+ boolean isEditable()
+ {
+ return _isEditable;
+ }
+
+ boolean inIceBox()
+ {
+ return _inIceBox;
+ }
+
+ boolean canHaveNewChild()
+ {
+ return _isEditable && !_inIceBox;
+ }
+
+ void newAdapter(AdapterDescriptor descriptor)
+ {
+ //
+ // Generate a unique child name; ignore substitution for simplicity
+ //
+ String baseName = descriptor == null ? "NewAdapter" : descriptor.name;
+ String name = baseName;
+
+ int i = 0;
+ while(findChild(name) != null || findChild("*" + name) != null)
+ {
+ name = baseName + "-" + (++i);
+ }
+
+ if(descriptor == null)
+ {
+ CommonBase parent = getParent();
+ String defaultId = (parent instanceof Service ||
+ parent instanceof ServiceTemplate) ?
+ "${server}.${service}." + name : "${server}." + name;
+
+ descriptor = new AdapterDescriptor(
+ name,
+ defaultId,
+ false,
+ true,
+ new java.util.LinkedList());
+ }
+ else
+ {
+ descriptor.name = name;
+ }
+
+ Adapter adapter = new Adapter(name, descriptor, _model);
+ try
+ {
+ addChild(adapter, true);
+ }
+ catch(DuplicateIdException e)
+ {
+ assert false;
+ }
+ adapter.setParent(this);
+ _model.setSelectionPath(adapter.getPath());
+ }
+
+ public void paste(Object descriptor)
+ {
+ if(canHaveNewChild() && descriptor instanceof AdapterDescriptor)
+ {
+ AdapterDescriptor d = (AdapterDescriptor)descriptor;
+ newAdapter(Adapter.copyDescriptor(d));
+ }
+ }
+
+ private Utils.Resolver _resolver;
+ private boolean _isEditable;
+ private boolean _inIceBox;
+
+ static private NewPopupMenu _popup;
+}