Author: aadamchik
Date: Mon Aug  7 17:43:43 2006
New Revision: 429528

URL: http://svn.apache.org/viewvc?rev=429528&view=rev
Log:
CAY-622 - client patch

Added:
    
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/TypeConverter.java
    
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/actions/ROPActionBarContributor.java
Modified:
    incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/.classpath
    incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/plugin.xml
    
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/actions/DeleteAction.java
    
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/actions/SetNameAction.java
    
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/commands/DeleteObjectCommand.java
    
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/commands/PopOutCommand.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/figures/SingleFigure.java
    
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/model/AbstractObject.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/parts/CollectionEditPart.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/parts/SingleEditPart.java
    
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/policies/ElementEditPolicy.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/.classpath
URL: 
http://svn.apache.org/viewvc/incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/.classpath?rev=429528&r1=429527&r2=429528&view=diff
==============================================================================
--- incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/.classpath (original)
+++ incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/.classpath Mon Aug  7 
17:43:43 2006
@@ -6,9 +6,9 @@
        <classpathentry kind="lib" path="lib/commons-collections-3.1.jar"/>
        <classpathentry kind="lib" path="lib/commons-lang-2.1.jar"/>
        <classpathentry kind="lib" path="lib/commons-logging.jar"/>
-       <classpathentry kind="lib" path="lib/hessian-3.0.13.jar"/>
        <classpathentry kind="lib" path="lib/smackx-2.2.1.jar"/>
        <classpathentry sourcepath="G:/soc/smack-dev-2.2.1/source" kind="lib" 
path="lib/smack-2.2.1.jar"/>
        <classpathentry sourcepath="/cayenne-java/src/cayenne/java" kind="lib" 
path="lib/cayenne-client-nodeps-1.2.jar"/>
+       <classpathentry kind="lib" path="lib/hessian-3.0.13.jar"/>
        <classpathentry kind="output" path="bin"/>
 </classpath>

Modified: incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/plugin.xml
URL: 
http://svn.apache.org/viewvc/incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/plugin.xml?rev=429528&r1=429527&r2=429528&view=diff
==============================================================================
--- incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/plugin.xml (original)
+++ incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/plugin.xml Mon Aug  7 
17:43:43 2006
@@ -17,6 +17,7 @@
          point="org.eclipse.ui.editors">
       <editor
             class="org.apache.cayenne.ropbrowser.ObjectEditor"
+            
contributorClass="org.apache.cayenne.ropbrowser.actions.ROPActionBarContributor"
             default="false"
             icon="icons/sample.gif"
             id="org.apache.cayenne.ropbrowser.ObjectEditor"

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=429528&r1=429527&r2=429528&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 Aug  7 17:43:43 2006
@@ -59,37 +59,33 @@
        
        /**
         * Get an object context for the given host, creating and storing the 
context if none exists.
-        * @param address full address of the Cayenne web service (eg 
http://localhost:8080/rop-browser/rop-browser)
+        * @param address full address of the Cayenne web service (eg 
http://localhost:8080/rop-browser)
+        * @param sharedSession 
         * @return ObjectContext connected to the given address
         */
-       public ObjectContext getNewObjectContext(String address) {
+       public ObjectContext getNewObjectContext(String address, boolean 
sharedSession) {
                
                DataChannel channel = null;
                
-               if (connections.containsKey(address)) {
+               if (sharedSession && connections.containsKey(address)) {
                        channel = connections.get(address);
                }
                else {
-                       HessianConnection connection = new 
HessianConnection(address, null, null, "conference");
-                       channel = new ClientChannel(connection);
-                       connections.put(address, channel);
+                       if (sharedSession) {
+                               HessianConnection connection = new 
HessianConnection(address, null, null, "conference");
+                               channel = new ClientChannel(connection);
+                               connections.put(address, channel);
+                       }
+                       else {
+                               HessianConnection connection = new 
HessianConnection(address);
+                               channel = new ClientChannel(connection);
+                       }
                }
                
                if (channel != null) {
-                       // 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);
-                                       
                        ObjectContext context = new CayenneContext(channel, 
true, false);
                        return context;
                }
                return null;
-       }
-       
-       /**
-        * Deal with XMPP events
-        */
-       public void handleXMPP(GraphEvent event) {
-               System.out.println("XMPP : " + event.toString());
        }
 }

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=429528&r1=429527&r2=429528&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 Aug  7 17:43:43 2006
@@ -38,6 +38,9 @@
 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.graph.GraphEvent;
 
 /**
  * Editor class allowing visual editing of database data via
@@ -48,8 +51,6 @@
  * @author Marcel Gordon
  */
 public class ObjectEditor extends GraphicalEditor {
-
-       // TODO move to Derby 
        
        /** ID of the Editor */
        public static final String ID = 
"org.apache.cayenne.ropbrowser.ObjectEditor";
@@ -141,7 +142,8 @@
        protected void setInput(IEditorInput input) {
                super.setInput(input);
                // create the diagram using the context from the input
-               elementDiagram = new ElementDiagram(((ObjectEditorInput) 
input).getContext());
+               ObjectContext inputContext = ((ObjectEditorInput) 
input).getContext();
+               elementDiagram = new ElementDiagram(inputContext);
        }
        
        /**
@@ -150,8 +152,6 @@
        @Override
        protected void createActions() {
                super.createActions();
-               
-               // TODO enable menu and Ctrl + Z/Y undo/redo
                
                IAction action = new HideAction(this);
                getActionRegistry().registerAction(action);

Added: 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/TypeConverter.java
URL: 
http://svn.apache.org/viewvc/incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/TypeConverter.java?rev=429528&view=auto
==============================================================================
--- 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/TypeConverter.java
 (added)
+++ 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/TypeConverter.java
 Mon Aug  7 17:43:43 2006
@@ -0,0 +1,84 @@
+/*
+ *  Copyright 2006 The Apache Software Foundation
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.cayenne.ropbrowser;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+/**
+ * Class for the conversion of values to and from Strings.
+ * 
+ * @author Marcel Gordon
+ */
+public class TypeConverter {
+       /**
+        * Formatter for displaying [EMAIL PROTECTED] Date} objects as [EMAIL 
PROTECTED] String}s.
+        */
+       protected static final SimpleDateFormat dateFormatter = new 
SimpleDateFormat("dd/MM/yyyy");
+       
+       public static String getStringValue(Object value, String typeName) {
+               String stringValue = null;
+               if (typeName.equals("java.util.Date")) {
+                       try {
+                               stringValue = dateFormatter.format(value);
+                       }
+                       catch (Exception e) {
+                               stringValue = new String("");
+                       }
+               }
+               else {
+                       if (value == null) {
+                               stringValue = new String("");
+                       }
+                       else {
+                               stringValue = value.toString(); 
+                       }
+               }
+               
+               return stringValue;
+       }
+       
+       public static Object getValueFromString(Object value, String typeName) 
throws Exception {
+               if (!(value instanceof String)) {
+                       return value;
+               }
+               
+               String stringValue = (String) value;
+               
+               //      convert from a String to the correct object type
+               Object newValue = null;
+               if (typeName.equals("java.util.Date")) {
+                       newValue = dateFormatter.parse(stringValue);
+               }
+               else if (typeName.equals("java.sql.Date")) {
+                       newValue = java.sql.Date.valueOf(stringValue); 
+               }
+               else if (typeName.equals("java.sql.Time")) {
+                       newValue = java.sql.Time.valueOf(stringValue);
+               }
+               else if (typeName.equals("java.sql.Timestamp")) {
+                       newValue = java.sql.Timestamp.valueOf(stringValue);
+               }
+               else {
+                       // try to use a constructor from a String
+                       Class newClass = Class.forName(typeName);
+                       newValue = 
newClass.getConstructor(Class.forName("java.lang.String")).newInstance(stringValue);
+               }
+               
+               return newValue;
+       }
+}

Modified: 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/actions/DeleteAction.java
URL: 
http://svn.apache.org/viewvc/incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/actions/DeleteAction.java?rev=429528&r1=429527&r2=429528&view=diff
==============================================================================
--- 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/actions/DeleteAction.java
 (original)
+++ 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/actions/DeleteAction.java
 Mon Aug  7 17:43:43 2006
@@ -18,6 +18,8 @@
 import java.util.List;
 
 import org.apache.cayenne.ropbrowser.model.ModelElement;
+import org.apache.cayenne.ropbrowser.parts.CollectionEditPart;
+import org.apache.cayenne.ropbrowser.parts.ElementEditPart;
 import org.apache.cayenne.ropbrowser.parts.SingleEditPart;
 import org.eclipse.gef.EditPart;
 import org.eclipse.gef.Request;
@@ -58,7 +60,7 @@
 
        /**
         * Test whether the action can be performed.
-        * @return true if the selection includes only [EMAIL PROTECTED] 
SingleEditPart} objects
+        * @return true if the selection includes only [EMAIL PROTECTED] 
ElementEditPart} objects
         * which are not storing null values.
         */
        @Override
@@ -68,10 +70,10 @@
                List parts = getSelectedObjects();
                for (int i=0; i<parts.size(); i++){
                        Object o = parts.get(i);
-                       if (!(o instanceof SingleEditPart)) {
+                       if (!(o instanceof SingleEditPart || o instanceof 
CollectionEditPart)) {
                                return false;
                        }
-                       if (((ModelElement) ((SingleEditPart) 
o).getModel()).isNull()) {
+                       if (((ModelElement) ((ElementEditPart) 
o).getModel()).isNull()) {
                                return false;
                        }
                }

Added: 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/actions/ROPActionBarContributor.java
URL: 
http://svn.apache.org/viewvc/incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/actions/ROPActionBarContributor.java?rev=429528&view=auto
==============================================================================
--- 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/actions/ROPActionBarContributor.java
 (added)
+++ 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/actions/ROPActionBarContributor.java
 Mon Aug  7 17:43:43 2006
@@ -0,0 +1,39 @@
+/*
+ *  Copyright 2006 The Apache Software Foundation
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.cayenne.ropbrowser.actions;
+
+import org.eclipse.gef.ui.actions.ActionBarContributor;
+import org.eclipse.ui.actions.ActionFactory;
+import org.eclipse.ui.actions.RetargetAction;
+import org.eclipse.ui.actions.ActionFactory.IWorkbenchAction;
+
+public class ROPActionBarContributor extends ActionBarContributor {
+
+       @Override
+
+       protected void buildActions() {
+               IWorkbenchAction 
undo=ActionFactory.UNDO.create(getPage().getWorkbenchWindow());
+               addRetargetAction((RetargetAction) undo);
+       
+               IWorkbenchAction 
redo=ActionFactory.REDO.create(getPage().getWorkbenchWindow());
+               addRetargetAction((RetargetAction) redo);
+       }
+
+       @Override
+       protected void declareGlobalActionKeys() {
+       }
+
+}

Modified: 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/actions/SetNameAction.java
URL: 
http://svn.apache.org/viewvc/incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/actions/SetNameAction.java?rev=429528&r1=429527&r2=429528&view=diff
==============================================================================
--- 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/actions/SetNameAction.java
 (original)
+++ 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/actions/SetNameAction.java
 Mon Aug  7 17:43:43 2006
@@ -48,7 +48,7 @@
        public SetNameAction(IWorkbenchPart part) {
                super(part);
                setId(ID);
-               setText("Set Name");
+               setText("Set name");
                request = new SetNameElementRequest();
        }
 

Modified: 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/commands/DeleteObjectCommand.java
URL: 
http://svn.apache.org/viewvc/incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/commands/DeleteObjectCommand.java?rev=429528&r1=429527&r2=429528&view=diff
==============================================================================
--- 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/commands/DeleteObjectCommand.java
 (original)
+++ 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/commands/DeleteObjectCommand.java
 Mon Aug  7 17:43:43 2006
@@ -50,7 +50,7 @@
        
        @Override
        public boolean canExecute() {
-               return element.isNull();
+               return !element.isNull();
        }
        
        @Override

Modified: 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/commands/PopOutCommand.java
URL: 
http://svn.apache.org/viewvc/incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/commands/PopOutCommand.java?rev=429528&r1=429527&r2=429528&view=diff
==============================================================================
--- 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/commands/PopOutCommand.java
 (original)
+++ 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/commands/PopOutCommand.java
 Mon Aug  7 17:43:43 2006
@@ -61,14 +61,16 @@
        
        @Override
        public void redo() {
-               newElement = new SingleModelElement(element.getName());
-               newElement.setObject(element.getCurrentObject());
+               if (newElement == null) {
+                       newElement = new SingleModelElement(element.getName());
+                       newElement.setObject(element.getCurrentObject());
+               }
                element.getDiagram().addElement(newElement);
        }
        
        @Override
        public void undo() {
-               Command deleteCommand = new HideElementCommand(newElement);
-               deleteCommand.execute();
+               Command hideCommand = new HideElementCommand(newElement);
+               hideCommand.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=429528&r1=429527&r2=429528&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 Aug  7 17:43:43 2006
@@ -25,6 +25,7 @@
 import org.eclipse.draw2d.ActionListener;
 import org.eclipse.draw2d.Button;
 import org.eclipse.draw2d.ColorConstants;
+import org.eclipse.draw2d.IFigure;
 import org.eclipse.draw2d.MarginBorder;
 import org.eclipse.draw2d.ToolbarLayout;
 import org.objectstyle.cayenne.map.Attribute;
@@ -38,8 +39,6 @@
  */
 public class CollectionFigure extends ElementFigure implements ActionListener {
        
-       // TODO neaten up class separation
-       
        /**
         * Figure to act as a dropdown box to allow quick navigation through 
objects.
         */
@@ -120,12 +119,19 @@
                        while (i.hasNext()) {
                                Attribute a = (Attribute) i.next();
                                Button b;
+                               
+                               String attributeValue = 
model.getPropertyValue(a.getName());
+                               if (attributeValue.length() > 
MAX_ATTRIBUTE_LENGTH) {
+                                       attributeValue = 
attributeValue.substring(0, MAX_ATTRIBUTE_LENGTH - 3);
+                                       attributeValue += "...";
+                               }
+                               
                                // if expanded, use open icon, else closed
                                if (lastNavAttribute != null && 
a.getName().equals(lastNavAttribute)) {
-                                       b = new Button(a.getName() + " : " + 
model.getPropertyValue(a.getName()) + " ", 
ROPBrowserPlugin.getDefault().getImageRegistry().get(ROPBrowserPlugin.IMG_DROP_OPEN));
+                                       b = new Button(a.getName() + " : " + 
attributeValue + " ", 
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));
+                                       b = new Button(a.getName() + " : " + 
attributeValue + " ", 
ROPBrowserPlugin.getDefault().getImageRegistry().get(ROPBrowserPlugin.IMG_DROP_CLOSED));
                                }
                                if (model.isDeleted()) {
                                        
b.setForegroundColor(ColorConstants.gray);
@@ -173,6 +179,8 @@
 
 class DropdownFigure extends CompartmentFigure {
        
+       private static final String LABEL_NULL = "null";
+
        public void populateDropdown(String attributeName, ActionListener 
actionListener, Iterator<AbstractObject> iterator) {
                // remove any existing buttons from the navFigure
                for (Object child : getChildren()) {
@@ -186,7 +194,19 @@
                while (iterator.hasNext()) {
                        AbstractObject o = iterator.next();
                        // label the button with the attribute's value for this 
object
-                       Button b = new 
Button(o.getPropertyValue(attributeName).toString());
+                       String attributeValue = 
o.getPropertyValue(attributeName);
+                       Button b;
+                       if (attributeValue != null) {
+                               if (attributeValue.length() > 
ElementFigure.MAX_ATTRIBUTE_LENGTH) {
+                                       attributeValue = 
attributeValue.substring(0, ElementFigure.MAX_ATTRIBUTE_LENGTH - 3);
+                                       attributeValue += "...";
+                               }
+                               b = new Button(attributeValue);
+                       }
+                       else {
+                               b = new Button(LABEL_NULL);
+                       }
+                               
                        b.setBorder(new MarginBorder(0, 10, 0, 0));
                        b.setOpaque(false);
                        // set the user data to the object for use by the 
action listener

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=429528&r1=429527&r2=429528&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 Aug  7 17:43:43 2006
@@ -27,6 +27,7 @@
 import org.eclipse.draw2d.Label;
 import org.eclipse.draw2d.LineBorder;
 import org.eclipse.draw2d.ToolbarLayout;
+import org.eclipse.swt.widgets.Display;
 import org.objectstyle.cayenne.map.Attribute;
 
 /**
@@ -42,7 +43,8 @@
        /** name of the object */
        protected Label name;
        /** name to be used where no name can be located */
-       public static final String MSG_NULL_RESULT = "NULL"; 
+       public static final String MSG_NULL_RESULT = "NULL";
+       protected static final int MAX_ATTRIBUTE_LENGTH = 16; 
        
        /** the part which the figure represents */
        protected ElementEditPart part;
@@ -58,7 +60,9 @@
                
                addComponents();
                
-               refresh();
+               setBackgroundColour();
+               setName();
+               setAttributes(((ModelElement) 
part.getModel()).getCurrentObject());
        }
        
        /**
@@ -85,14 +89,6 @@
        protected abstract void setName();
        
        /**
-        * Set or change the data which is being displayed in this figure's
-        * relationship and attribute sub-figures
-        */
-       protected void setContents() {
-               setAttributes(((ModelElement) 
part.getModel()).getCurrentObject());
-       }
-       
-       /**
         * @return the sub-figure which contains the displayed object's 
attributes
         */
        public CompartmentFigure getAttributeCompartment() {
@@ -110,7 +106,12 @@
                        Iterator i = model.getAttributes().iterator();
                        while (i.hasNext()) {
                                Attribute a = (Attribute) i.next();
-                               Label l = new Label(a.getName() + " : " + 
model.getPropertyValue(a.getName()));
+                               String attributeValue = 
model.getPropertyValue(a.getName());
+                               if (attributeValue.length() > 
MAX_ATTRIBUTE_LENGTH) {
+                                       attributeValue = 
attributeValue.substring(0, MAX_ATTRIBUTE_LENGTH - 3);
+                                       attributeValue += "...";
+                               }
+                               Label l = new Label(a.getName() + " : " + 
attributeValue);
                                if (model.isDeleted()) {
                                        
l.setForegroundColor(ColorConstants.gray);
                                }
@@ -120,11 +121,10 @@
        }
 
        /**
-        * Refresh the entire figure - name and contents
+        * Refresh the entire figure
         */
        public void refresh() {
-               setBackgroundColour();
                setName();
-               setContents();
+               setAttributes(((ModelElement) 
part.getModel()).getCurrentObject());
        }
 }

Modified: 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/figures/SingleFigure.java
URL: 
http://svn.apache.org/viewvc/incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/figures/SingleFigure.java?rev=429528&r1=429527&r2=429528&view=diff
==============================================================================
--- 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/figures/SingleFigure.java
 (original)
+++ 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/figures/SingleFigure.java
 Mon Aug  7 17:43:43 2006
@@ -22,6 +22,7 @@
 import org.eclipse.draw2d.ColorConstants;
 import org.eclipse.draw2d.CompoundBorder;
 import org.eclipse.draw2d.MarginBorder;
+import org.eclipse.swt.widgets.Display;
 import org.objectstyle.cayenne.map.Relationship;
 
 /**
@@ -38,6 +39,8 @@
        
        public SingleFigure(SingleEditPart part) {
                super(part);
+               
+               setRelationships();
        }
        
        @Override
@@ -111,8 +114,9 @@
        }
        
        @Override
-       protected void setContents() {
-               super.setContents();
+       public void refresh() {
+               super.refresh();
+               setBackgroundColour();
                setRelationships();
        }
 }

Modified: 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/model/AbstractObject.java
URL: 
http://svn.apache.org/viewvc/incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/model/AbstractObject.java?rev=429528&r1=429527&r2=429528&view=diff
==============================================================================
--- 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/model/AbstractObject.java
 (original)
+++ 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/model/AbstractObject.java
 Mon Aug  7 17:43:43 2006
@@ -25,6 +25,7 @@
 import java.util.Date;
 import java.util.Iterator;
 
+import org.apache.cayenne.ropbrowser.TypeConverter;
 import org.eclipse.ui.views.properties.IPropertyDescriptor;
 import org.eclipse.ui.views.properties.TextPropertyDescriptor;
 import org.objectstyle.cayenne.PersistenceState;
@@ -44,10 +45,7 @@
  * @author Marcel Gordon
  */
 public class AbstractObject extends PersistentObject { 
-       /**
-        * Formatter for displaying [EMAIL PROTECTED] Date} objects as [EMAIL 
PROTECTED] String}s.
-        */
-       protected static SimpleDateFormat dateFormatter = new 
SimpleDateFormat("dd/MM/yyyy ");
+       
        /** Property indicating that the object has been deleted */
        public static final String PROP_DELETED = "AbstractObject.Deleted";
        /** Property indicating that the object has been modified */
@@ -96,6 +94,8 @@
                        EntityResolver resolver = 
objectContext.getEntityResolver();
                        ClassDescriptor descriptor = 
resolver.getClassDescriptor(getName());
                        
+                       objectContext.prepareForAccess(this, rel.getName());
+                       
                        Object value = 
descriptor.getProperty(rel.getName()).readProperty(this);
                        
                        return value;
@@ -162,23 +162,8 @@
                        // convert the value of the property to a String for 
display
                        // in a TextPropertyDescriptor
                        Object value = 
descriptor.getProperty(id.toString()).readProperty(this);
-                       String stringValue = null;
-                       if (attribute.getType().equals("java.util.Date")) {
-                               try {
-                                       stringValue = 
dateFormatter.format(value);
-                               }
-                               catch (Exception e) {
-                                       stringValue = new String("");
-                               }
-                       }
-                       else {
-                               if (value == null) {
-                                       stringValue = new String("");
-                               }
-                               else {
-                                       stringValue = value.toString(); 
-                               }
-                       } 
+                       
+                       String stringValue = 
TypeConverter.getStringValue(value, attribute.getType());
                        
                        return stringValue;
                }
@@ -261,38 +246,16 @@
                        ClassDescriptor descriptor = 
resolver.getClassDescriptor(getName());
                        ObjAttribute attribute = (ObjAttribute) 
resolver.getObjEntity(getName()).getAttribute(id.toString());
                        
-                       // convert from a String to the correct object type
-                       Object newValue = null;
-                       if (attribute.getType().equals("java.util.Date")) {
-                               try {
-                                       newValue = 
dateFormatter.parse(value.toString());
-                               }
-                               catch(ParseException e) {
-                                       newValue = value;
-                               }
-                       }
-                       else if (attribute.getType().equals("java.sql.Date")) {
-                               newValue = 
java.sql.Date.valueOf(value.toString()); 
-                       }
-                       else if (attribute.getType().equals("java.sql.Time")) {
-                               newValue = 
java.sql.Time.valueOf(value.toString());
-                       }
-                       else if 
(attribute.getType().equals("java.sql.Timestamp")) {
-                               newValue = 
java.sql.Timestamp.valueOf(value.toString());
-                       }
-                       else {
-                               // try to use a constructor from a String
-                               try {
-                                       Class newClass = 
Class.forName(attribute.getType());
-                                       newValue = 
newClass.getConstructor(Class.forName("java.lang.String")).newInstance(value.toString());
-                               }
-                               catch(Exception e) {
-                                       newValue = value;
-                               }
-                       }
-                       
                        objectContext.prepareForAccess(this, id.toString());
                Object oldValue = 
descriptor.getProperty(id.toString()).readProperty(this);
+               Object newValue = null;
+               
+               try {
+                       newValue = TypeConverter.getValueFromString(value, 
attribute.getType());
+               }
+               catch (Exception e) {
+                       newValue = value;
+               }
                
                descriptor.getProperty(id.toString()).writeProperty(this, 
oldValue, newValue);
                
@@ -309,11 +272,13 @@
         * @param oldValue the old target of the relationship
         * @param newValue the new target of the relationship
         */
-       public void setRelationship(Relationship rel, AbstractObject oldValue, 
AbstractObject newValue) {
+       public void setRelationship(Relationship rel, Object oldValue, Object 
newValue) {
                if (objectContext != null) {
                        
                        EntityResolver resolver = 
objectContext.getEntityResolver();
                        ClassDescriptor descriptor = 
resolver.getClassDescriptor(getName());
+                       
+                       objectContext.prepareForAccess(this, rel.getName());
                        
                        
descriptor.getProperty(rel.getName()).writeProperty(this, oldValue, newValue);
                        

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=429528&r1=429527&r2=429528&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 Aug  7 17:43:43 2006
@@ -22,6 +22,8 @@
 import java.util.Iterator;
 import java.util.List;
 
+import org.objectstyle.cayenne.util.PersistentObjectList;
+
 
 /**
  * Class representing a collection of AbstractObjects.
@@ -50,10 +52,23 @@
                }
                                
                public int compare(AbstractObject arg0, AbstractObject arg1) {
+                       if (arg0 == null) {
+                               return -1;
+                       }
+                       if (arg1 == null) {
+                               return 1;
+                       }
                        
                        Object value0 = arg0.getPropertyValueRaw(sortName);
                        Object value1 = arg1.getPropertyValueRaw(sortName);
                        
+                       if (value0 == null) {
+                               return -1;
+                       }
+                       if (value1 == null) {
+                               return 1;
+                       }
+                       
                        if (!arg0.getClass().equals(arg1.getClass())) {
                                return 
value0.toString().compareTo(value1.toString()); 
                        }
@@ -100,6 +115,13 @@
        public void addObject(AbstractObject object) {
                if (!objects.contains(object)) {
                        objects.add(object);
+                       for (Connection conn : getTargetConnections()) {
+                               if (conn instanceof RelationshipConnection) {
+                                       RelationshipConnection relConn = 
(RelationshipConnection) conn;
+                                       // notify objectContext about simple 
property change
+                                       
relConn.getSource().getCurrentObject().getObjectContext().propertyChanged(relConn.getSource().getCurrentObject(),
 relConn.getRelationship().getName(), null, objects);
+                               }
+                       }
                        object.addPropertyChangeListener(this);
                        getDiagram().createMemberConnections(this, object);
                        firePropertyChange(PROP_TOTAL_RECORDS, null, objects);
@@ -232,6 +254,11 @@
                                for (Connection conn : getSourceConnections()) {
                                        if (conn instanceof MemberConnection && 
conn.getTarget().contains(object)) { // should always be true
                                                conn.disconnect();
+                                       }
+                                       if (conn instanceof 
RelationshipConnection) {
+                                               RelationshipConnection relConn 
= (RelationshipConnection) conn;
+                                               // notify objectContext about 
simple property change
+                                               
relConn.getSource().getCurrentObject().getObjectContext().propertyChanged(relConn.getSource().getCurrentObject(),
 relConn.getRelationship().getName(), null, objects);
                                        }
                                }
                                validateCurrent();

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=429528&r1=429527&r2=429528&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 Aug  7 17:43:43 2006
@@ -19,9 +19,13 @@
 import java.beans.PropertyChangeListener;
 import java.beans.PropertyChangeSupport;
 import java.util.ArrayList;
+import java.util.EventObject;
 import java.util.List;
 
+import org.objectstyle.cayenne.DataChannel;
 import org.objectstyle.cayenne.ObjectContext;
+import org.objectstyle.cayenne.event.EventSubject;
+import org.objectstyle.cayenne.graph.GraphEvent;
 
 /**
  * The root component in the model - a diagram of [EMAIL PROTECTED] 
ModelElement}s and 
@@ -32,15 +36,17 @@
 public class ElementDiagram {
        
        /** property indicating that changes have been committed to the 
database */
-       public static final String PROP_COMMIT = "ObjectDiagram.GraphCommitted";
+       public static final String PROP_COMMIT = 
"ElementDiagram.GraphCommitted";
        /** property indicating that the layout has changed between automatic 
and manual */
-       public static final String PROP_LAYOUT = "ObjectDiagram.LayoutChanged";
+       public static final String PROP_LAYOUT = "ElementDiagram.LayoutChanged";
        /** property indicating a node (element) has been added */
-       public static final String PROP_NODE_ADDED = "ObjectDiagram.NodeAdded";
+       public static final String PROP_NODE_ADDED = "ElementDiagram.NodeAdded";
        /** property indicating that a node (element) has been removed */
-       public static final String PROP_NODE_REMOVED = 
"ObjectDiagram.NodeRemoved";
+       public static final String PROP_NODE_REMOVED = 
"ElementDiagram.NodeRemoved";
        /** property indicating that changes have been rolled back */
-       public static final String PROP_ROLLBACK = 
"ObjectDiagram.GraphRollback";
+       public static final String PROP_ROLLBACK = 
"ElementDiagram.GraphRollback";
+       /** property indicating that there has been an external change to the 
model */
+       public static final String PROP_EXT_CHANGE = 
"ElementDiagram.ExternalChange";
        /** whether automatic layout is being used (rather than manual) */
        private boolean autoLayout;
        /** the Cayenne context in which the objects represented by the 
ModelElements exist */

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=429528&r1=429527&r2=429528&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 Aug  7 17:43:43 2006
@@ -66,15 +66,6 @@
        private CollectionModelElement getModelCast() {
                return (CollectionModelElement) getModel();
        }
-       
-       @Override
-       public Command getCommand(Request request) {
-               if 
(request.getType().equals(SetNameElementRequest.SET_NAME_REQUEST)) {
-                       return new SetNameElementCommand(this.getModelCast(), 
((SetNameElementRequest) request).getName());
-               }
-               // handle requests not in policies; pass the rest along
-               return super.getCommand(request); 
-       }
 
        /**
         * Handle action events from dropdown buttons in the figure,

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=429528&r1=429527&r2=429528&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 Aug  7 17:43:43 2006
@@ -152,6 +152,9 @@
                        }
                        hideNullObjects();
                }
+               else if (ElementDiagram.PROP_EXT_CHANGE.equals(prop)) {
+                       refreshChildren();
+               }
        }
 
        /**

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=429528&r1=429527&r2=429528&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 Aug  7 17:43:43 2006
@@ -20,14 +20,18 @@
 import java.beans.PropertyChangeListener;
 import java.util.List;
 
+import org.apache.cayenne.ropbrowser.actions.DeleteAction;
 import org.apache.cayenne.ropbrowser.actions.HideAction;
 import org.apache.cayenne.ropbrowser.actions.InsertAction;
 import org.apache.cayenne.ropbrowser.actions.RemoveAction;
+import org.apache.cayenne.ropbrowser.commands.DeleteObjectCommand;
 import org.apache.cayenne.ropbrowser.commands.ExistingObjectCommand;
 import org.apache.cayenne.ropbrowser.commands.ExistingObjectRequest;
 import org.apache.cayenne.ropbrowser.commands.HideElementCommand;
 import org.apache.cayenne.ropbrowser.commands.ObjectInsertCommand;
 import org.apache.cayenne.ropbrowser.commands.RemoveObjectCommand;
+import org.apache.cayenne.ropbrowser.commands.SetNameElementCommand;
+import org.apache.cayenne.ropbrowser.commands.SetNameElementRequest;
 import org.apache.cayenne.ropbrowser.figures.ElementFigure;
 import org.apache.cayenne.ropbrowser.model.ModelElement;
 import org.apache.cayenne.ropbrowser.policies.ElementEditPolicy;
@@ -44,6 +48,7 @@
 import org.eclipse.gef.RequestConstants;
 import org.eclipse.gef.commands.Command;
 import org.eclipse.gef.editparts.AbstractGraphicalEditPart;
+import org.eclipse.swt.widgets.Display;
 
 /**
  * Base abstract EditPart class corresponding to [EMAIL PROTECTED] 
ModelElement}.
@@ -111,7 +116,9 @@
                }
                else {
                        // for any other kind of property change, refresh the 
figure
-                       ((ElementFigure) getFigure()).refresh();
+                       if (Display.getCurrent() != null) {
+                               ((ElementFigure) getFigure()).refresh();
+                       }
                }
        }
        
@@ -214,6 +221,12 @@
                }
                if 
(request.getType().equals(ExistingObjectRequest.EXISTING_REQUEST)) {
                        return new ExistingObjectCommand(this.getModelCast(), 
((ExistingObjectRequest) request).getSelectedObject());
+               }
+               if (request.getType().equals(DeleteAction.DELETE_REQUEST)) {
+                       return new DeleteObjectCommand(this.getModelCast());
+               }
+               if 
(request.getType().equals(SetNameElementRequest.SET_NAME_REQUEST)) {
+                       return new SetNameElementCommand(this.getModelCast(), 
((SetNameElementRequest) request).getName());
                }
                return super.getCommand(request); 
        }

Modified: 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/parts/SingleEditPart.java
URL: 
http://svn.apache.org/viewvc/incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/parts/SingleEditPart.java?rev=429528&r1=429527&r2=429528&view=diff
==============================================================================
--- 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/parts/SingleEditPart.java
 (original)
+++ 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/parts/SingleEditPart.java
 Mon Aug  7 17:43:43 2006
@@ -55,14 +55,6 @@
                return (SingleModelElement) getModel();
        }
 
-       @Override
-       public Command getCommand(Request request) {
-               if (request.getType().equals(DeleteAction.DELETE_REQUEST)) {
-                       return new DeleteObjectCommand(this.getModelCast());
-               }
-               return super.getCommand(request); 
-       }
-
        /**
         * Handles action events from its figure's relationship buttons,
         * expanding or contracting a relationship.

Modified: 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/policies/ElementEditPolicy.java
URL: 
http://svn.apache.org/viewvc/incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/policies/ElementEditPolicy.java?rev=429528&r1=429527&r2=429528&view=diff
==============================================================================
--- 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/policies/ElementEditPolicy.java
 (original)
+++ 
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/policies/ElementEditPolicy.java
 Mon Aug  7 17:43:43 2006
@@ -20,6 +20,7 @@
 import org.apache.cayenne.ropbrowser.model.CollectionModelElement;
 import org.apache.cayenne.ropbrowser.model.ElementDiagram;
 import org.apache.cayenne.ropbrowser.model.ModelElement;
+import org.eclipse.gef.Request;
 import org.eclipse.gef.commands.Command;
 import org.eclipse.gef.editpolicies.ComponentEditPolicy;
 import org.eclipse.gef.requests.GroupRequest;

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=429528&r1=429527&r2=429528&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 Aug  7 17:43:43 2006
@@ -106,7 +106,10 @@
        private SelectQueryWizard selectWizard;
 
        /** server to connect to */
-       private Combo serverCombo; 
+       private Combo serverCombo;
+       
+       /** whether to use shared session mode */
+       private Button sharedSessionButton;
        
        public ControlPanelView() {
                connectionManager = ConnectionManager.getInstance();
@@ -126,7 +129,7 @@
                ObjectContext currentContext = null;
                
                try {
-                       currentContext = 
connectionManager.getNewObjectContext(serverCombo.getText());
+                       currentContext = 
connectionManager.getNewObjectContext(serverCombo.getText(), 
sharedSessionButton.getSelection());
                }
                catch (Exception ex) {
                        ROPBrowserPlugin.getDefault().getLog().log(new 
Status(Status.ERROR, ROPBrowserPlugin.ID, Status.OK, ex.getMessage(), ex));
@@ -214,6 +217,10 @@
                newDiagramButton.setText("Display in new editor");
                newDiagramButton.setSelection(true);
                
+               sharedSessionButton = new Button(miscGroup, SWT.CHECK);
+               sharedSessionButton.setText("Shared session");
+               sharedSessionButton.setSelection(true);
+               
                parent.pack();
        }
 
@@ -278,12 +285,12 @@
        private ObjectContext getObjectContext(String address) {
                ObjectContext context;
                if (newDiagramButton.getSelection()) {
-                       context = 
this.connectionManager.getNewObjectContext(address);
+                       context = 
this.connectionManager.getNewObjectContext(address, 
sharedSessionButton.getSelection());
                }
                else {
                        ObjectEditor existingEditor = 
getExistingEditor(address);
                        if (existingEditor == null) {
-                               context = 
this.connectionManager.getNewObjectContext(address);
+                               context = 
this.connectionManager.getNewObjectContext(address, 
sharedSessionButton.getSelection());
                        }
                        else {
                                context = 
existingEditor.getDiagram().getObjectContext();
@@ -292,11 +299,12 @@
                return context;
        }
 
-       private void openParametersWizard() {
-               selectWizard = new 
SelectQueryWizard(connectionManager.getNewObjectContext((String) 
selectQueryCombo.getData()), selectQueryCombo.getText(), 
SelectQueryWizard.RETURN_PARAMS);
+       private boolean openParametersWizard() {
+               selectWizard = new 
SelectQueryWizard(connectionManager.getNewObjectContext((String) 
selectQueryCombo.getData(), sharedSessionButton.getSelection()), 
selectQueryCombo.getText(), SelectQueryWizard.RETURN_PARAMS);
                WizardDialog dialog = new 
WizardDialog(getViewSite().getShell(), selectWizard);
                dialog.create();
                dialog.open();
+               return (dialog.getReturnCode() == WizardDialog.OK);
        }
 
        private void runNamedQuery() {
@@ -359,8 +367,9 @@
                        runNamedQuery();
                }
                else if (e.getSource() == parametersButton && 
selectQueryCombo.indexOf(selectQueryCombo.getText()) != -1) {
-                       openParametersWizard();
-                       runSelectQuery();
+                       if (openParametersWizard()) {
+                               runSelectQuery();
+                       }
                }
                else if (e.getSource() == runSelectQueryButton) {
                        runSelectQuery();

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=429528&r1=429527&r2=429528&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 Aug  7 17:43:43 2006
@@ -19,6 +19,7 @@
 import java.util.HashMap;
 import java.util.Hashtable;
 
+import org.apache.cayenne.ropbrowser.TypeConverter;
 import org.eclipse.jface.viewers.CellEditor;
 import org.eclipse.jface.viewers.ColumnWeightData;
 import org.eclipse.jface.viewers.ComboBoxCellEditor;
@@ -116,7 +117,12 @@
                GREATER_THAN (Expression.GREATER_THAN),
                GREATER_THAN_EQUAL_TO (Expression.GREATER_THAN_EQUAL_TO),
                LESS_THAN (Expression.LESS_THAN),
-               LESS_THAN_EQUAL_TO (Expression.LESS_THAN_EQUAL_TO);
+               LESS_THAN_EQUAL_TO (Expression.LESS_THAN_EQUAL_TO),
+               LIKE (Expression.LIKE),
+               LIKE_IGNORE_CASE (Expression.LIKE_IGNORE_CASE),
+               NOT_EQUAL_TO (Expression.NOT_EQUAL_TO),
+               NOT_LIKE (Expression.NOT_LIKE),
+               NOT_LIKE_IGNORE_CASE (Expression.NOT_LIKE_IGNORE_CASE);
                
                private final int cayenneValue;
                
@@ -253,8 +259,6 @@
                        attributeTable.refresh();
                }
        }
-               
-               // TODO make a util class for converting to and from Strings, 
use here and AO
 
        /**
         * @return the names and values of the parameters which have been set.
@@ -300,7 +304,7 @@
                                        case 2 : Operator operator = 
operatorMap.get(attribute.getName());
                                                         return (operator == 
null ? new String("") : operator.toString());
                                        case 3 : Object paramValue = 
paramMap.get(attribute.getName());
-                                                        return (paramValue == 
null ? new String("") : paramValue.toString());
+                                                        return (paramValue == 
null ? new String("") : TypeConverter.getStringValue(paramValue, 
paramValue.getClass().getCanonicalName()));
                                }
                        }
                        return new String("");
@@ -340,7 +344,7 @@
                                }
                                if (property.equals(COLUMN_NAMES[3])) {
                                        Object paramValue = 
paramMap.get(((ObjAttribute) element).getName());
-                                       return (paramValue == null ? new 
String("") : paramValue.toString());
+                                       return (paramValue == null ? new 
String("") : TypeConverter.getStringValue(paramValue, 
paramValue.getClass().getCanonicalName()));
                                }
                        }
                        return null;
@@ -360,9 +364,7 @@
                                        }
                                        else {
                                                try {
-                                                       // try to use a 
constructor with a String parameter to translate to the correct type
-                                                       Class typeClass = 
Class.forName(attribute.getText(1));
-                                                       Object typedValue = 
typeClass.getConstructor(Class.forName("java.lang.String")).newInstance(value.toString());
+                                                       Object typedValue = 
TypeConverter.getValueFromString(value, attribute.getText(1));
                                                        
paramMap.put(attribute.getText(0), typedValue);
                                                }
                                                catch (Exception ex) {


Reply via email to