Author: aadamchik
Date: Mon Jul 31 16:59:00 2006
New Revision: 427379

URL: http://svn.apache.org/viewvc?rev=427379&view=rev
Log:
CAY-616

Modified:
    
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/ConnectionManager.java
    
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/ObjectEditor.java
    
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/ObjectEditorInput.java
    
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/ROPBrowserPlugin.java
    
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/commands/ExistingObjectCommand.java
    
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/figures/CollectionFigure.java
    
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/figures/ElementFigure.java
    
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/layout/DelegatingLayoutManager.java
    
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/model/CollectionModelElement.java
    
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/model/ElementDiagram.java
    
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/model/SingleModelElement.java
    
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/parts/CollectionEditPart.java
    
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/parts/ConnectionEditPart.java
    
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/parts/ElementDiagramEditPart.java
    
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/parts/ElementEditPart.java
    
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/views/ControlPanelView.java
    
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/wizards/SelectParametersPage.java

Modified: 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/ConnectionManager.java
URL: 
http://svn.apache.org/viewvc/incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/ConnectionManager.java?rev=427379&r1=427378&r2=427379&view=diff
==============================================================================
--- 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/ConnectionManager.java
 (original)
+++ 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/ConnectionManager.java
 Mon Jul 31 16:59:00 2006
@@ -38,6 +38,8 @@
  */
 public class ConnectionManager {
        
+       // TODO allow configuration of which attributes are displayed in 
elements
+       
        private static ConnectionManager _ref;
        /** All connections made by the application */
        private Hashtable<String, DataChannel> connections;
@@ -60,22 +62,32 @@
         */
        public ObjectContext getNewObjectContext(String address) {
                
-               DataChannel channel;
+               DataChannel channel = null;
                
                if (connections.containsKey(address)) {
                        channel = connections.get(address);
                }
                else {
                        HessianConnection connection = new 
HessianConnection(address, null, null, "conference");
-                       channel = new ClientChannel(connection);
-                       connections.put(address, channel);
+                       try {
+                               channel = new ClientChannel(connection);
+                               connections.put(address, channel);
+                       } catch (Exception e) {
+                               // TODO log
+                               System.out.println("Error connecting to the 
server: " + e.getMessage());
+                       }
                }
                
-               ObjectContext context = new CayenneContext(channel, true, 
false);
-               // TODO XMPP notification of graph changes; DataChannel.* ?
-               channel.getEventManager().addListener(this, "handleXMPP", 
GraphEvent.class, DataChannel.GRAPH_CHANGED_SUBJECT);
-               channel.getEventManager().addListener(this, "handleXMPP", 
GraphEvent.class, DataChannel.GRAPH_FLUSHED_SUBJECT);
-               return context;
+               if (channel != null) {
+                       // TODO XMPP notification of graph changes; 
DataChannel.* ?
+                       // TODO control panel XMPP option
+                       channel.getEventManager().addListener(this, 
"handleXMPP", GraphEvent.class, DataChannel.GRAPH_CHANGED_SUBJECT);
+                       channel.getEventManager().addListener(this, 
"handleXMPP", GraphEvent.class, DataChannel.GRAPH_FLUSHED_SUBJECT);
+                                       
+                       ObjectContext context = new CayenneContext(channel, 
true, false);
+                       return context;
+               }
+               return null;
        }
        
        public void handleXMPP(GraphEvent event) {

Modified: 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/ObjectEditor.java
URL: 
http://svn.apache.org/viewvc/incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/ObjectEditor.java?rev=427379&r1=427378&r2=427379&view=diff
==============================================================================
--- 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/ObjectEditor.java
 (original)
+++ 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/ObjectEditor.java
 Mon Jul 31 16:59:00 2006
@@ -27,7 +27,6 @@
 import org.apache.cayenne.ropbrowser.actions.SetNameAction;
 import org.apache.cayenne.ropbrowser.actions.ToggleLayoutAction;
 import org.apache.cayenne.ropbrowser.model.ElementDiagram;
-import org.apache.cayenne.ropbrowser.parts.ElementDiagramEditPart;
 import org.apache.cayenne.ropbrowser.parts.ElementEditPartFactory;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.gef.ContextMenuProvider;
@@ -39,9 +38,6 @@
 import org.eclipse.jface.action.IAction;
 import org.eclipse.ui.IEditorInput;
 import org.eclipse.ui.IEditorPart;
-import org.objectstyle.cayenne.DataChannel;
-import org.objectstyle.cayenne.ObjectContext;
-import org.objectstyle.cayenne.event.EventSubject;
 
 /**
  * Editor class allowing visual editing of database data via

Modified: 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/ObjectEditorInput.java
URL: 
http://svn.apache.org/viewvc/incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/ObjectEditorInput.java?rev=427379&r1=427378&r2=427379&view=diff
==============================================================================
--- 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/ObjectEditorInput.java
 (original)
+++ 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/ObjectEditorInput.java
 Mon Jul 31 16:59:00 2006
@@ -30,9 +30,12 @@
 public class ObjectEditorInput implements IEditorInput {
        
        private ObjectContext context;
+       
+       private String serverAddress;
 
-       public ObjectEditorInput(ObjectContext context) {
+       public ObjectEditorInput(ObjectContext context, String address) {
                this.context = context;
+               this.serverAddress = address;
        }
        
        public boolean exists() {
@@ -47,7 +50,7 @@
         * The name of the query contained in the Cayenne data map.
         */
        public String getName() {
-               return "Object editor";
+               return serverAddress;
        }
 
        public IPersistableElement getPersistable() {
@@ -55,7 +58,7 @@
        }
 
        public String getToolTipText() {
-               return "Object editor";
+               return serverAddress + " : " + context.hashCode();
        }
 
        public Object getAdapter(Class adapter) {
@@ -71,5 +74,9 @@
 
        public ObjectContext getContext() {
                return context;
+       }
+
+       public String getServerAddress() {
+               return serverAddress;
        }
 }

Modified: 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/ROPBrowserPlugin.java
URL: 
http://svn.apache.org/viewvc/incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/ROPBrowserPlugin.java?rev=427379&r1=427378&r2=427379&view=diff
==============================================================================
--- 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/ROPBrowserPlugin.java
 (original)
+++ 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/ROPBrowserPlugin.java
 Mon Jul 31 16:59:00 2006
@@ -31,6 +31,9 @@
        private static ROPBrowserPlugin plugin;
        private Font boldFont;
        
+       public static final String IMG_DROP_OPEN = "dropdown_open.gif";
+       public static final String IMG_DROP_CLOSED  = "dropdown_closed.gif";
+       
        /**
         * The constructor.
         */
@@ -44,6 +47,8 @@
        public void start(BundleContext context) throws Exception {
                super.start(context);
                boldFont = new Font(null, "Arial", 9, SWT.BOLD);
+               getImageRegistry().put(IMG_DROP_OPEN, 
ROPBrowserPlugin.getImageDescriptor("icons/" + IMG_DROP_OPEN));
+               getImageRegistry().put(IMG_DROP_CLOSED, 
ROPBrowserPlugin.getImageDescriptor("icons/" + IMG_DROP_CLOSED));
        }
 
        /**

Modified: 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/commands/ExistingObjectCommand.java
URL: 
http://svn.apache.org/viewvc/incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/commands/ExistingObjectCommand.java?rev=427379&r1=427378&r2=427379&view=diff
==============================================================================
--- 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/commands/ExistingObjectCommand.java
 (original)
+++ 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/commands/ExistingObjectCommand.java
 Mon Jul 31 16:59:00 2006
@@ -75,10 +75,12 @@
                                                if (conn instanceof 
RelationshipConnection) {
                                                        RelationshipConnection 
relConn = (RelationshipConnection) conn;
                                                        
relConn.getSource().getCurrentObject().setRelationship(relConn.getRelationship(),
 element.getCurrentObject(), object);
+                                                       relConn.disconnect();
                                                        RelationshipConnection 
newConn = new RelationshipConnection(relConn.getSource(), existing, 
relConn.getRelationship());
+                                                       newConn.connect();
                                                }
                                        }
-                                       Command recCommand = new 
HideElementCommand(element);
+                                       HideElementCommand recCommand = new 
HideElementCommand(element);
                                        recCommand.execute();
                                }
                        }

Modified: 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/figures/CollectionFigure.java
URL: 
http://svn.apache.org/viewvc/incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/figures/CollectionFigure.java?rev=427379&r1=427378&r2=427379&view=diff
==============================================================================
--- 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/figures/CollectionFigure.java
 (original)
+++ 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/figures/CollectionFigure.java
 Mon Jul 31 16:59:00 2006
@@ -15,17 +15,50 @@
  */
 package org.apache.cayenne.ropbrowser.figures;
 
+import java.util.Iterator;
+
+import org.apache.cayenne.ropbrowser.ROPBrowserPlugin;
+import 
org.apache.cayenne.ropbrowser.figures.CompartmentFigure.CompartmentFigureBorder;
+import org.apache.cayenne.ropbrowser.model.AbstractObject;
 import org.apache.cayenne.ropbrowser.model.CollectionModelElement;
 import org.apache.cayenne.ropbrowser.model.ModelElement;
 import org.apache.cayenne.ropbrowser.parts.CollectionEditPart;
+import org.apache.cayenne.ropbrowser.parts.SingleEditPart;
+import org.eclipse.draw2d.ActionEvent;
+import org.eclipse.draw2d.ActionListener;
+import org.eclipse.draw2d.Button;
+import org.eclipse.draw2d.Clickable;
 import org.eclipse.draw2d.ColorConstants;
+import org.eclipse.draw2d.CompoundBorder;
+import org.eclipse.draw2d.Figure;
+import org.eclipse.draw2d.FlowLayout;
+import org.eclipse.draw2d.Label;
+import org.eclipse.draw2d.LineBorder;
+import org.eclipse.draw2d.MarginBorder;
+import org.eclipse.draw2d.ToolbarLayout;
+import org.objectstyle.cayenne.map.Attribute;
 
-public class CollectionFigure extends ElementFigure {
+public class CollectionFigure extends ElementFigure implements ActionListener {
+       
+       private CompartmentFigure navFigure;
+       private String lastNavAttribute = null;
        
        public CollectionFigure(CollectionEditPart part) {
                super(part);
        }
        
+       protected void addComponents() {
+               super.addComponents();
+               
+               navFigure = new CompartmentFigure();
+               ToolbarLayout layout = new ToolbarLayout();
+               layout.setMinorAlignment(ToolbarLayout.ALIGN_TOPLEFT);
+               layout.setStretchMinorAxis(false);
+               layout.setSpacing(1);
+               navFigure.setLayoutManager(layout);
+               navFigure.setBorder(null);
+       }
+       
        protected void setBackgroundColour() {
                // root figure should be a different colour
                if (getElementCast().isRoot()) {
@@ -48,6 +81,72 @@
                }
                else {
                        name.setText(MSG_NULL_RESULT);
+               }
+       }
+       
+       protected void setAttributes(AbstractObject model) {
+               getAttributeCompartment().removeAll();
+               
+               if (model != null) {                    
+                       Iterator i = model.getAttributes().iterator();
+                       while (i.hasNext()) {
+                               Attribute a = (Attribute) i.next();
+                               Button b;
+                               if (lastNavAttribute != null && 
a.getName().equals(lastNavAttribute)) {
+                                       b = new Button(a.getName() + " : " + 
model.getPropertyValue(a.getName()) + " ", 
ROPBrowserPlugin.getDefault().getImageRegistry().get(ROPBrowserPlugin.IMG_DROP_OPEN));
+                               }
+                               else {
+                                       b = new Button(a.getName() + " : " + 
model.getPropertyValue(a.getName()) + " ", 
ROPBrowserPlugin.getDefault().getImageRegistry().get(ROPBrowserPlugin.IMG_DROP_CLOSED));
+                               }
+                               if (model.isDeleted()) {
+                                       
b.setForegroundColor(ColorConstants.gray);
+                               }
+                               b.setBorder(null);
+                               b.setOpaque(false);
+                               b.addActionListener(this);
+                               b.getModel().setUserData(a.getName());
+                               getAttributeCompartment().add(b);
+                               
+                               if (lastNavAttribute != null && 
a.getName().equals(lastNavAttribute)) {
+                                       insertDropdown(a.getName());
+                               }
+                       }       
+               }
+       }
+       
+       public void actionPerformed(ActionEvent event) {
+               
+               Button buttonPressed = (Button) event.getSource();
+               String pressed = (String) 
buttonPressed.getModel().getUserData();
+               
+               if (lastNavAttribute != null && 
lastNavAttribute.equals(pressed)) {
+                       lastNavAttribute = null;
+                       navFigure.removeAll();
+                       getAttributeCompartment().remove(navFigure);
+               }
+               else {
+                       lastNavAttribute = pressed;
+               }
+               
+               refresh();
+       }
+       
+       protected void insertDropdown(String pressed) {
+               
+               navFigure.removeAll();
+               getAttributeCompartment().add(navFigure);
+               
+               // TODO sort values
+               
+               Iterator<AbstractObject> i = 
getElementCast().getObjectIterator();
+               while (i.hasNext()) {
+                       AbstractObject o = i.next();
+                       Button b = new 
Button(o.getPropertyValue(pressed).toString());
+                       b.setBorder(new MarginBorder(0, 10, 0, 0));
+                       b.setOpaque(false);
+                       b.getModel().setUserData(o);
+                       b.addActionListener((CollectionEditPart) part);
+                       navFigure.add(b);
                }
        }
 }

Modified: 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/figures/ElementFigure.java
URL: 
http://svn.apache.org/viewvc/incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/figures/ElementFigure.java?rev=427379&r1=427378&r2=427379&view=diff
==============================================================================
--- 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/figures/ElementFigure.java
 (original)
+++ 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/figures/ElementFigure.java
 Mon Jul 31 16:59:00 2006
@@ -54,7 +54,7 @@
                this.part = part;
                
                ToolbarLayout layout = new ToolbarLayout();
-               setLayoutManager(layout);       
+               setLayoutManager(layout);
                setBorder(new LineBorder(ColorConstants.black,1));
                setOpaque(true);
                

Modified: 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/layout/DelegatingLayoutManager.java
URL: 
http://svn.apache.org/viewvc/incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/layout/DelegatingLayoutManager.java?rev=427379&r1=427378&r2=427379&view=diff
==============================================================================
--- 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/layout/DelegatingLayoutManager.java
 (original)
+++ 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/layout/DelegatingLayoutManager.java
 Mon Jul 31 16:59:00 2006
@@ -108,8 +108,6 @@
                }
                else
                {
-                       // TODO allow drag single element onto null single 
element to set relationship
-                       // and single element into collection to add into 
relationship
                        diagram.installEditPolicy(EditPolicy.LAYOUT_ROLE, new 
SelectionHandlesEditPolicy());
                }
        }

Modified: 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/model/CollectionModelElement.java
URL: 
http://svn.apache.org/viewvc/incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/model/CollectionModelElement.java?rev=427379&r1=427378&r2=427379&view=diff
==============================================================================
--- 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/model/CollectionModelElement.java
 (original)
+++ 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/model/CollectionModelElement.java
 Mon Jul 31 16:59:00 2006
@@ -19,6 +19,7 @@
 import java.beans.PropertyChangeEvent;
 import java.beans.PropertyChangeListener;
 import java.util.ArrayList;
+import java.util.Iterator;
 import java.util.List;
 
 import org.eclipse.ui.views.properties.IPropertyDescriptor;
@@ -318,6 +319,19 @@
                        for (AbstractObject object : deleted) {
                                removeObject(object);
                        }
+               }
+       }
+
+       public Iterator<AbstractObject> getObjectIterator() {
+               return objects.iterator();
+       }
+
+       public void setCurrentObject(AbstractObject object) {
+               if (objects != null && objects.contains(object)) {
+                       int oldCurrent = currentRecord;
+                       current = object;
+                       currentRecord = objects.indexOf(object);
+                       firePropertyChange(PROP_CURRENT_RECORD, new 
Integer(oldCurrent), new Integer(currentRecord));
                }
        }
 }

Modified: 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/model/ElementDiagram.java
URL: 
http://svn.apache.org/viewvc/incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/model/ElementDiagram.java?rev=427379&r1=427378&r2=427379&view=diff
==============================================================================
--- 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/model/ElementDiagram.java
 (original)
+++ 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/model/ElementDiagram.java
 Mon Jul 31 16:59:00 2006
@@ -210,6 +210,9 @@
        public void rollbackChanges() {
                context.rollbackChanges();
                firePropertyChange(PROP_ROLLBACK, false, true);
+               for (ModelElement element : elements) {
+                       element.removeDeletedObjects();
+               }
        }
 
        public void toggleAutoLayout() {

Modified: 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/model/SingleModelElement.java
URL: 
http://svn.apache.org/viewvc/incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/model/SingleModelElement.java?rev=427379&r1=427378&r2=427379&view=diff
==============================================================================
--- 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/model/SingleModelElement.java
 (original)
+++ 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/model/SingleModelElement.java
 Mon Jul 31 16:59:00 2006
@@ -23,6 +23,8 @@
 import org.objectstyle.cayenne.PersistenceState;
 import org.objectstyle.cayenne.map.Relationship;
 
+// TODO allow drag and drop of single model element as insert existing
+
 /**
  * Class representing a collection of AbstractObjects.
  * Used to display a number of records as one element on the

Modified: 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/parts/CollectionEditPart.java
URL: 
http://svn.apache.org/viewvc/incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/parts/CollectionEditPart.java?rev=427379&r1=427378&r2=427379&view=diff
==============================================================================
--- 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/parts/CollectionEditPart.java
 (original)
+++ 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/parts/CollectionEditPart.java
 Mon Jul 31 16:59:00 2006
@@ -17,6 +17,7 @@
 package org.apache.cayenne.ropbrowser.parts;
 
 import java.beans.PropertyChangeEvent;
+import java.util.Iterator;
 
 import org.apache.cayenne.ropbrowser.actions.HideAction;
 import org.apache.cayenne.ropbrowser.actions.InsertAction;
@@ -27,12 +28,20 @@
 import org.apache.cayenne.ropbrowser.commands.ObjectInsertCommand;
 import org.apache.cayenne.ropbrowser.commands.SetNameElementCommand;
 import org.apache.cayenne.ropbrowser.figures.CollectionFigure;
+import org.apache.cayenne.ropbrowser.figures.CompartmentFigure;
 import org.apache.cayenne.ropbrowser.figures.ElementFigure;
+import org.apache.cayenne.ropbrowser.model.AbstractObject;
 import org.apache.cayenne.ropbrowser.model.CollectionModelElement;
 import org.apache.cayenne.ropbrowser.model.ModelElement;
 import org.apache.cayenne.ropbrowser.policies.CollectionDirectEditPolicy;
 import org.apache.cayenne.ropbrowser.policies.CollectionSelectionPolicy;
+import org.eclipse.draw2d.ActionEvent;
+import org.eclipse.draw2d.ActionListener;
+import org.eclipse.draw2d.Button;
+import org.eclipse.draw2d.Figure;
 import org.eclipse.draw2d.IFigure;
+import org.eclipse.draw2d.Label;
+import org.eclipse.draw2d.geometry.Point;
 import org.eclipse.gef.EditPolicy;
 import org.eclipse.gef.Request;
 import org.eclipse.gef.commands.Command;
@@ -43,7 +52,7 @@
  * 
  * @author Marcel Gordon
  */
-public class CollectionEditPart extends ElementEditPart {
+public class CollectionEditPart extends ElementEditPart implements 
ActionListener {
        
        /**
         * Extends super to allow scrolling through records on double-click and
@@ -77,5 +86,9 @@
                }
                // handle requests not in policies; pass the rest along
                return super.getCommand(request); 
+       }
+
+       public void actionPerformed(ActionEvent event) {
+               getModelCast().setCurrentObject((AbstractObject) ((Button) 
event.getSource()).getModel().getUserData());
        }
 }

Modified: 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/parts/ConnectionEditPart.java
URL: 
http://svn.apache.org/viewvc/incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/parts/ConnectionEditPart.java?rev=427379&r1=427378&r2=427379&view=diff
==============================================================================
--- 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/parts/ConnectionEditPart.java
 (original)
+++ 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/parts/ConnectionEditPart.java
 Mon Jul 31 16:59:00 2006
@@ -38,8 +38,6 @@
 
        @Override
        protected void createEditPolicies() {
-               // TODO reconnection?
-               installEditPolicy(EditPolicy.CONNECTION_ENDPOINTS_ROLE, new 
EndpointsEditPolicy());
        }
        
        /**
@@ -56,11 +54,5 @@
                        connection.setToolTip(new 
Label(((RelationshipConnection) getModel()).getRelationship().getName()));
                }
                return connection;
-       }
-       
-       
-       // TODO reconnection?
-       class EndpointsEditPolicy extends ConnectionEndpointEditPolicy {
-               
        }
 }

Modified: 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/parts/ElementDiagramEditPart.java
URL: 
http://svn.apache.org/viewvc/incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/parts/ElementDiagramEditPart.java?rev=427379&r1=427378&r2=427379&view=diff
==============================================================================
--- 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/parts/ElementDiagramEditPart.java
 (original)
+++ 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/parts/ElementDiagramEditPart.java
 Mon Jul 31 16:59:00 2006
@@ -140,11 +140,11 @@
                        hideNullObjects();
                }
                else if (ElementDiagram.PROP_ROLLBACK.equals(prop)) {
-                       // TODO deal with undone new elements, changes etc
                        for (Object o : getChildren()) {
                                ElementFigure figure = (ElementFigure) 
((ElementEditPart) o).getFigure();
                                figure.refresh();
                        }
+                       hideNullObjects();
                }
        }
 

Modified: 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/parts/ElementEditPart.java
URL: 
http://svn.apache.org/viewvc/incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/parts/ElementEditPart.java?rev=427379&r1=427378&r2=427379&view=diff
==============================================================================
--- 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/parts/ElementEditPart.java
 (original)
+++ 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/parts/ElementEditPart.java
 Mon Jul 31 16:59:00 2006
@@ -85,7 +85,6 @@
        protected void createEditPolicies() {
                // allow removal of the associated model element
                installEditPolicy(EditPolicy.COMPONENT_ROLE, new 
ElementEditPolicy());
-               installEditPolicy(EditPolicy.GRAPHICAL_NODE_ROLE, new 
ElementNodeEditPolicy());
        }
        
        /**
@@ -215,30 +214,5 @@
 
        public boolean isRoot() {
                return getModelCast().isRoot();
-       }
-       
-       // TODO allow reconnections?
-       class ElementNodeEditPolicy extends GraphicalNodeEditPolicy {
-
-               @Override
-               protected Command 
getConnectionCompleteCommand(CreateConnectionRequest request) {
-                       return null;
-               }
-
-               @Override
-               protected Command 
getConnectionCreateCommand(CreateConnectionRequest request) {
-                       return null;
-               }
-
-               @Override
-               protected Command getReconnectSourceCommand(ReconnectRequest 
request) {
-                       return null;
-               }
-
-               @Override
-               protected Command getReconnectTargetCommand(ReconnectRequest 
request) {
-                       return null;
-               }
-               
        }
 }

Modified: 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/views/ControlPanelView.java
URL: 
http://svn.apache.org/viewvc/incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/views/ControlPanelView.java?rev=427379&r1=427378&r2=427379&view=diff
==============================================================================
--- 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/views/ControlPanelView.java
 (original)
+++ 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/views/ControlPanelView.java
 Mon Jul 31 16:59:00 2006
@@ -36,6 +36,8 @@
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Text;
 import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IEditorReference;
+import org.eclipse.ui.IWorkbenchPage;
 import org.eclipse.ui.PartInitException;
 import org.eclipse.ui.forms.widgets.ColumnLayout;
 import org.eclipse.ui.forms.widgets.Form;
@@ -86,8 +88,6 @@
 
        /** manages connections to the server */
        private ConnectionManager connectionManager;
-
-       private ObjectEditor lastEditor;
        
        private SelectQueryWizard selectWizard; 
        
@@ -201,24 +201,28 @@
                        while (i.hasNext()) {
                                
namedQueryCombo.add(((Query)i.next()).getName());
                        }
+                       namedQueryCombo.setData(serverCombo.getText());
                        
                        i = entityResolver.getObjEntities().iterator();
                        while (i.hasNext()) {
                                
selectQueryCombo.add(((ObjEntity)i.next()).getName());
                        }
+                       selectQueryCombo.setData(serverCombo.getText());
                }
                else if (e.getSource() == runNamedQueryButton) {
                        if (namedQueryCombo.indexOf(namedQueryCombo.getText()) 
!= -1) {
-                               ObjectContext context = getObjectContext();
+                               ObjectContext context = 
getObjectContext((String) namedQueryCombo.getData());
                                NamedQuery select = new 
NamedQuery(namedQueryCombo.getText());
-                               Object matches = context.performQuery(select);
+                               if (context != null) {
+                                       Object matches = 
context.performQuery(select);
                                
-                               displayInEditor(context, matches);
+                                       displayInEditor(context, (String) 
namedQueryCombo.getData(), matches);
+                               }
                        }
                }
                else if (e.getSource() == parametersButton && 
selectQueryCombo.indexOf(selectQueryCombo.getText()) != -1) {
                        if (selectWizard == null) {
-                               selectWizard = new 
SelectQueryWizard(connectionManager.getNewObjectContext(serverCombo.getText()), 
selectQueryCombo.getText(), SelectQueryWizard.RETURN_PARAMS);
+                               selectWizard = new 
SelectQueryWizard(connectionManager.getNewObjectContext((String) 
selectQueryCombo.getData()), selectQueryCombo.getText(), 
SelectQueryWizard.RETURN_PARAMS);
                        }
                        WizardDialog dialog = new 
WizardDialog(getViewSite().getShell(), selectWizard);
                        dialog.create();
@@ -226,8 +230,8 @@
                }
                else if (e.getSource() == runSelectQueryButton) {
                        if 
(selectQueryCombo.indexOf(selectQueryCombo.getText()) != -1) {
-                               ObjectContext context = getObjectContext();
-                               Object matches; // TODO allow initialisation of 
wizard values
+                               ObjectContext context = 
getObjectContext((String) selectQueryCombo.getData());
+                               Object matches;
                                if (selectWizard != null && 
selectWizard.getEntityName().equals(selectQueryCombo.getText())) {
                                        String [] paramNames = 
selectWizard.getParameterNames();
                                        Object [] paramValues = 
selectWizard.getParameterValues();
@@ -238,36 +242,65 @@
                                        matches = context.performQuery(new 
SelectQuery(selectQueryCombo.getText()));
                                }
                                
-                               displayInEditor(context, matches);
+                               displayInEditor(context, (String) 
selectQueryCombo.getData(), matches);
                        }
                }
        }
 
-       private ObjectContext getObjectContext() {
+       private ObjectContext getObjectContext(String address) {
                // TODO more efficient method?
                ObjectContext context;
                if (newDiagramButton.getSelection()) {
-                       context = 
this.connectionManager.getNewObjectContext(serverCombo.getText());
+                       context = 
this.connectionManager.getNewObjectContext(address);
                }
                else {
-                       context = lastEditor.getDiagram().getObjectContext();
+                       ObjectEditor existingEditor = 
getExistingEditor(address);
+                       if (existingEditor == null) {
+                               context = 
this.connectionManager.getNewObjectContext(address);
+                       }
+                       else {
+                               context = 
existingEditor.getDiagram().getObjectContext();
+                       }
                }
                return context;
        }
 
-       private void displayInEditor(ObjectContext context, Object matches) {
-               // TODO what if the editor has been shut?
-               // TODO can only open in same window if same server
+       private void displayInEditor(ObjectContext context, String address, 
Object matches) {
                // TODO new context option
                // TODO XMPP on/off option
                try {
-                       if (lastEditor == null || 
newDiagramButton.getSelection()) {
-                               lastEditor = (ObjectEditor) 
getViewSite().getPage().openEditor(new ObjectEditorInput(context), 
ObjectEditor.ID, true);
+                       ObjectEditor editor;
+                       if (newDiagramButton.getSelection()) {
+                               editor = getNewEditor(context, address);
                        }
-                       lastEditor.getDiagram().addRootElement(matches);
+                       else {
+                               editor = getExistingEditor(address);
+                               if (editor == null) {
+                                       editor = getNewEditor(context, address);
+                               }
+                       }
+                       editor.getDiagram().addRootElement(matches);
                } catch (PartInitException ex) {
                        System.out.println(ex.getMessage());
                }
+       }
+       
+       private ObjectEditor getNewEditor(ObjectContext context, String 
address) throws PartInitException {
+               return (ObjectEditor) getViewSite().getPage().openEditor(new 
ObjectEditorInput(context, address), ObjectEditor.ID, true);
+       }
+
+       private ObjectEditor getExistingEditor(String address) {
+               for (IEditorReference editor : 
getViewSite().getPage().findEditors(null, ObjectEditor.ID, 
IWorkbenchPage.MATCH_ID)) {
+                       try {
+                               ObjectEditorInput input = (ObjectEditorInput) 
editor.getEditorInput();
+                               if (input.getServerAddress().equals(address)) {
+                                       return (ObjectEditor) 
editor.getEditor(false);
+                               }
+                       } catch (PartInitException e) {
+                               System.out.println("Error restoring editor: " + 
e.getMessage());
+                       }
+               }
+               return null;
        }
 
        public void widgetDefaultSelected(SelectionEvent e) {

Modified: 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/wizards/SelectParametersPage.java
URL: 
http://svn.apache.org/viewvc/incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/wizards/SelectParametersPage.java?rev=427379&r1=427378&r2=427379&view=diff
==============================================================================
--- 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/wizards/SelectParametersPage.java
 (original)
+++ 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/wizards/SelectParametersPage.java
 Mon Jul 31 16:59:00 2006
@@ -58,6 +58,8 @@
        
        private Button setButton;
        
+       private Button clearAllButton;
+       
        private Text parameterValue;
        
        private Label errorLabel;
@@ -116,7 +118,11 @@
                
                errorLabel = new Label(base, SWT.NULL);
                
errorLabel.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_RED));
-               errorLabel.setLayoutData(fillSpan);
+               errorLabel.setLayoutData(fillGrab);
+               
+               clearAllButton = new Button(base, SWT.PUSH | SWT.BORDER);
+               clearAllButton.setText("Clear all");
+               clearAllButton.addSelectionListener(this);
                
                base.setLayout(layout);
                
@@ -135,7 +141,7 @@
        }
        
        private boolean isNextPage() {
-               return (super.getNextPage() == null);
+               return (super.getNextPage() != null);
        }
 
        public void widgetDefaultSelected(SelectionEvent e) {
@@ -155,6 +161,12 @@
                }
                else if (e.getSource() == setButton) {
                        setParameterValue();
+               }
+               else if (e.getSource() == clearAllButton) {
+                       for (TableItem item : attributeTable.getItems()) {
+                               item.setData(null);
+                               
item.setBackground(attributeTable.getBackground());
+                       }
                }
        }
        


Reply via email to