You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2006/07/23 21:04:39 UTC
svn commit: r424788 - in
/incubator/cayenne/soc/trunk/cayenne-rop/rop-browser: ./ META-INF/ cayenne/
dist/ lib/server/ src/org/apache/cayenne/ropbrowser/
src/org/apache/cayenne/ropbrowser/actions/
src/org/apache/cayenne/ropbrowser/commands/ src/org/apa...
Author: aadamchik
Date: Sun Jul 23 12:04:37 2006
New Revision: 424788
URL: http://svn.apache.org/viewvc?rev=424788&view=rev
Log:
CAY-606 - cleaning client project
Added:
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/actions/RollbackAction.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/SetNameElementCommand.java
Removed:
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/cayenne/
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/dist/
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/lib/server/
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/server/
Modified:
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/.classpath
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/META-INF/MANIFEST.MF
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/ObjectEditorContextMenuProvider.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/actions/DeleteAction.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/CompartmentFigure.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/Connection.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/MemberConnection.java
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/model/ModelElement.java
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/model/RelationshipConnection.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/model/auto/_Artist.java
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/model/auto/_Gallery.java
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/model/auto/_Painting.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
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=424788&r1=424787&r2=424788&view=diff
==============================================================================
--- incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/.classpath (original)
+++ incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/.classpath Sun Jul 23 12:04:37 2006
@@ -1,9 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry excluding="org/apache/cayenne/ropbrowser/Artist.java|org/apache/cayenne/ropbrowser/Gallery.java|org/apache/cayenne/ropbrowser/Painting.java|org/apache/cayenne/ropbrowser/auto/|org/apache/cayenne/ropbrowser/server/|org/apache/cayenne/ropbrowser/ModelTest.java" kind="src" path="src"/>
+ <classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="src" path="cayenne"/>
<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"/>
Modified: incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/META-INF/MANIFEST.MF
URL: http://svn.apache.org/viewvc/incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/META-INF/MANIFEST.MF?rev=424788&r1=424787&r2=424788&view=diff
==============================================================================
--- incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/META-INF/MANIFEST.MF (original)
+++ incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/META-INF/MANIFEST.MF Sun Jul 23 12:04:37 2006
@@ -5,14 +5,14 @@
Bundle-Version: 1.0.0
Bundle-Activator: org.apache.cayenne.ropbrowser.ROPBrowserPlugin
Bundle-Localization: plugin
-Require-Bundle: org.eclipse.ui,
- org.eclipse.core.runtime,
- org.eclipse.ui.forms,
- org.eclipse.ui.views,
- org.eclipse.gef
Eclipse-AutoStart: true
Bundle-ClassPath: lib/hessian-3.0.13.jar,
lib/commons-logging.jar,
lib/commons-lang-2.1.jar,
lib/commons-collections-3.1.jar,
lib/cayenne-client-nodeps-1.2.jar
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.ui,
+ org.eclipse.ui.forms,
+ org.eclipse.gef,
+ org.eclipse.ui.views
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=424788&r1=424787&r2=424788&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 Sun Jul 23 12:04:37 2006
@@ -39,10 +39,10 @@
private static ConnectionManager _ref;
/** All connections made by the application */
- private Hashtable<String, ObjectContext> connections;
+ private Hashtable<String, ClientConnection> connections;
private ConnectionManager() {
- connections = new Hashtable<String, ObjectContext>();
+ connections = new Hashtable<String, ClientConnection>();
}
public static ConnectionManager getInstance() {
@@ -59,16 +59,18 @@
*/
public ObjectContext getObjectContext(String address) {
+ ClientConnection connection;
+
if (connections.containsKey(address)) {
- return connections.get(address);
+ connection = connections.get(address);
+ }
+ else {
+ connection = new HessianConnection(address, null, null, "conference");
+ connections.put(address, connection);
}
-
- ClientConnection connection = new HessianConnection(address, null, null, "conference");
DataChannel channel = new ClientChannel(connection);
// TODO configure query caching
ObjectContext context = new CayenneContext(channel);
-
- connections.put(address, context);
return context;
}
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=424788&r1=424787&r2=424788&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 Sun Jul 23 12:04:37 2006
@@ -21,8 +21,11 @@
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.RollbackAction;
+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;
@@ -52,8 +55,6 @@
public static final String ID = "org.apache.cayenne.ropbrowser.ObjectEditor";
/** Root component of the data model */
private ElementDiagram elementDiagram;
- /** ObjectContext for all the objects in the editor */
- private ObjectContext context;
private boolean dirty;
@@ -100,7 +101,7 @@
* Saves changes made in the editor back to the database.
*/
public void doSave(IProgressMonitor monitor) {
- context.commitChanges();
+ elementDiagram.commitChanges();
dirty = false;
firePropertyChange(IEditorPart.PROP_DIRTY);
}
@@ -127,8 +128,7 @@
*/
protected void setInput(IEditorInput input) {
super.setInput(input);
- this.context = ((ObjectEditorInput) input).getContext();
- elementDiagram = new ElementDiagram(this.context, ((ObjectEditorInput) input).getQuery());
+ elementDiagram = new ElementDiagram(((ObjectEditorInput) input).getContext(), ((ObjectEditorInput) input).getQuery());
}
protected void createActions() {
@@ -146,11 +146,26 @@
getActionRegistry().registerAction(action);
getSelectionActions().add(action.getId());
+ action = new SetNameAction(this);
+ getActionRegistry().registerAction(action);
+ getSelectionActions().add(action.getId());
+
action = new ToggleLayoutAction(this);
getActionRegistry().registerAction(action);
+
+ action = new RollbackAction(this);
+ getActionRegistry().registerAction(action);
}
public ElementDiagram getDiagram() {
return elementDiagram;
+ }
+
+ public void dispose() {
+ super.dispose();
+ // do it directly so as not to fire property change events
+ if (isDirty()) {
+ elementDiagram.getObjectContext().rollbackChanges();
+ }
}
}
Modified: incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/ObjectEditorContextMenuProvider.java
URL: http://svn.apache.org/viewvc/incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/ObjectEditorContextMenuProvider.java?rev=424788&r1=424787&r2=424788&view=diff
==============================================================================
--- incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/ObjectEditorContextMenuProvider.java (original)
+++ incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/ObjectEditorContextMenuProvider.java Sun Jul 23 12:04:37 2006
@@ -19,6 +19,8 @@
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.RollbackAction;
+import org.apache.cayenne.ropbrowser.actions.SetNameAction;
import org.apache.cayenne.ropbrowser.actions.ToggleLayoutAction;
import org.eclipse.gef.ContextMenuProvider;
import org.eclipse.gef.EditPartViewer;
@@ -82,7 +84,17 @@
menu.appendToGroup(GEFActionConstants.GROUP_EDIT, action);
}
+ action = getAction(SetNameAction.ID);
+ if (action.isEnabled()) {
+ menu.appendToGroup(GEFActionConstants.GROUP_EDIT, action);
+ }
+
action = getAction(ToggleLayoutAction.ID);
+ if (action.isEnabled()) {
+ menu.appendToGroup(GEFActionConstants.GROUP_REST, action);
+ }
+
+ action = getAction(RollbackAction.ID);
if (action.isEnabled()) {
menu.appendToGroup(GEFActionConstants.GROUP_REST, action);
}
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=424788&r1=424787&r2=424788&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 Sun Jul 23 12:04:37 2006
@@ -17,6 +17,8 @@
package org.apache.cayenne.ropbrowser;
import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Font;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.osgi.framework.BundleContext;
@@ -27,6 +29,7 @@
//The shared instance.
private static ROPBrowserPlugin plugin;
+ private Font boldFont;
/**
* The constructor.
@@ -40,6 +43,7 @@
*/
public void start(BundleContext context) throws Exception {
super.start(context);
+ boldFont = new Font(null, "Arial", 9, SWT.BOLD);
}
/**
@@ -47,6 +51,7 @@
*/
public void stop(BundleContext context) throws Exception {
super.stop(context);
+ boldFont.dispose();
plugin = null;
}
@@ -66,5 +71,9 @@
*/
public static ImageDescriptor getImageDescriptor(String path) {
return AbstractUIPlugin.imageDescriptorFromPlugin("ropbrowser", path);
+ }
+
+ public Font getBoldFont() {
+ return boldFont;
}
}
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=424788&r1=424787&r2=424788&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 Sun Jul 23 12:04:37 2006
@@ -17,6 +17,7 @@
import java.util.List;
+import org.apache.cayenne.ropbrowser.model.ModelElement;
import org.apache.cayenne.ropbrowser.parts.SingleEditPart;
import org.eclipse.gef.EditPart;
import org.eclipse.gef.Request;
@@ -54,6 +55,9 @@
for (int i=0; i<parts.size(); i++){
Object o = parts.get(i);
if (!(o instanceof SingleEditPart)) {
+ return false;
+ }
+ if (((ModelElement) ((SingleEditPart) o).getModel()).isNull()) {
return false;
}
}
Added: incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/actions/RollbackAction.java
URL: http://svn.apache.org/viewvc/incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/actions/RollbackAction.java?rev=424788&view=auto
==============================================================================
--- incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/actions/RollbackAction.java (added)
+++ incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/actions/RollbackAction.java Sun Jul 23 12:04:37 2006
@@ -0,0 +1,37 @@
+/*
+ * 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.apache.cayenne.ropbrowser.ObjectEditor;
+import org.eclipse.jface.action.Action;
+
+
+public class RollbackAction extends Action {
+
+ private ObjectEditor editor;
+
+ public static final String ID = "org.apache.cayenne.ropbrowser.actions.RollbackAction";
+
+ public RollbackAction(ObjectEditor editor) {
+ this.editor = editor;
+ setId(ID);
+ setText("Rollback Changes");
+ }
+
+ public void run() {
+ editor.getDiagram().rollbackChanges();
+ }
+}
Added: 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=424788&view=auto
==============================================================================
--- incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/actions/SetNameAction.java (added)
+++ incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/actions/SetNameAction.java Sun Jul 23 12:04:37 2006
@@ -0,0 +1,72 @@
+/*
+ * 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 java.util.List;
+
+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.gef.EditPart;
+import org.eclipse.gef.Request;
+import org.eclipse.gef.commands.Command;
+import org.eclipse.gef.commands.CompoundCommand;
+import org.eclipse.gef.ui.actions.SelectionAction;
+import org.eclipse.ui.IWorkbenchPart;
+
+public class SetNameAction extends SelectionAction {
+
+ private Request request;
+
+ public static final String ID = "org.apache.cayenne.ropbrowser.actions.SetNameAction";
+ public static final String SET_NAME_REQUEST = "Set Name";
+
+ public SetNameAction(IWorkbenchPart part) {
+ super(part);
+ setId(ID);
+ setText("Set Name");
+ request = new Request(SET_NAME_REQUEST);
+ }
+
+ protected boolean calculateEnabled() {
+ return canPerformAction();
+ }
+
+ public void run() {
+ execute(getCommand());
+ }
+
+ private boolean canPerformAction() {
+ if (getSelectedObjects().isEmpty() || getSelectedObjects().size() > 1)
+ return false;
+ List parts = getSelectedObjects();
+ Object o = parts.get(0);
+ if (!(o instanceof CollectionEditPart)) {
+ return false;
+ }
+ if (((CollectionModelElement) ((CollectionEditPart) o).getModel()).isRoot()) {
+ return true;
+ }
+ return false;
+ }
+
+ private Command getCommand() {
+ List editparts = getSelectedObjects();
+ EditPart part = (EditPart)editparts.get(0);
+ return part.getCommand(request);
+ }
+}
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=424788&r1=424787&r2=424788&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 Sun Jul 23 12:04:37 2006
@@ -37,7 +37,7 @@
if (element == null) {
throw new IllegalArgumentException();
}
- setLabel("element expunction");
+ setLabel("delete");
this.element = element;
}
@@ -52,7 +52,7 @@
* @see org.eclipse.gef.commands.Command#execute()
*/
public void execute() {
- element.getDiagram().removeObject(element.getCurrentObject());
+ //element.getDiagram().removeObject(element.getCurrentObject());
element.deleteCurrentObject();
}
}
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=424788&r1=424787&r2=424788&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 Sun Jul 23 12:04:37 2006
@@ -38,13 +38,15 @@
return true;
}
+ public boolean canExecute() {
+ return !element.isNull();
+ }
+
/**
* @see org.eclipse.gef.commands.Command#execute()
*/
public void execute() {
- if (element.getCurrentObject() != null) {
- redo();
- }
+ redo();
}
/**
Added: incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/commands/SetNameElementCommand.java
URL: http://svn.apache.org/viewvc/incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/commands/SetNameElementCommand.java?rev=424788&view=auto
==============================================================================
--- incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/commands/SetNameElementCommand.java (added)
+++ incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/commands/SetNameElementCommand.java Sun Jul 23 12:04:37 2006
@@ -0,0 +1,93 @@
+/*
+ * 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.commands;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.cayenne.ropbrowser.model.CollectionModelElement;
+import org.apache.cayenne.ropbrowser.model.Connection;
+import org.apache.cayenne.ropbrowser.model.MemberConnection;
+import org.apache.cayenne.ropbrowser.model.ModelElement;
+import org.apache.cayenne.ropbrowser.model.RelationshipConnection;
+import org.apache.cayenne.ropbrowser.model.SingleModelElement;
+import org.eclipse.gef.commands.Command;
+import org.eclipse.jface.dialogs.InputDialog;
+import org.eclipse.swt.widgets.Display;
+
+/**
+ * Command for deleting an element from the ObjectDiagram.
+ *
+ * @author Marcel Gordon
+ */
+public class SetNameElementCommand extends Command {
+
+ /** ModelElement to remove. */
+ private final ModelElement element;
+
+ private String newName;
+ private String oldName;
+
+ /**
+ * Create a command that will remove the ModelElement from its parent ElementDiagram.
+ * @param parent the ElementDiagram containing the child
+ * @param child the ModelElement to remove
+ * @throws IllegalArgumentException if any parameter is null
+ */
+ public SetNameElementCommand(ModelElement element) {
+ if (element == null) {
+ throw new IllegalArgumentException();
+ }
+ setLabel("set name");
+ this.element = element;
+ }
+
+ /**
+ * @see org.eclipse.gef.commands.Command#canUndo()
+ */
+ public boolean canUndo() {
+ return true;
+ }
+
+ /**
+ * @see org.eclipse.gef.commands.Command#execute()
+ */
+ public void execute() {
+ oldName = element.getName();
+ InputDialog iDialog = new InputDialog(Display.getCurrent().getActiveShell(), "Set Name", "Enter the name of the object", "", null);
+ int result = iDialog.open();
+ if (result == InputDialog.OK) {
+ newName = iDialog.getValue();
+ redo();
+ }
+ }
+
+ /**
+ * @see org.eclipse.gef.commands.Command#redo()
+ */
+ public void redo() {
+ element.setName(newName);
+ }
+
+ /**
+ * @see org.eclipse.gef.commands.Command#undo()
+ */
+ public void undo() {
+ element.setName(oldName);
+ }
+}
\ No newline at end of file
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=424788&r1=424787&r2=424788&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 Sun Jul 23 12:04:37 2006
@@ -29,10 +29,10 @@
protected void setBackgroundColour() {
// root figure should be a different colour
if (getElementCast().isRoot()) {
- setBackgroundColor(ColorConstants.lightBlue);
+ name.setBackgroundColor(ColorConstants.lightBlue);
}
else {
- setBackgroundColor(ColorConstants.yellow);
+ name.setBackgroundColor(ColorConstants.yellow);
}
}
Modified: incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/figures/CompartmentFigure.java
URL: http://svn.apache.org/viewvc/incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/figures/CompartmentFigure.java?rev=424788&r1=424787&r2=424788&view=diff
==============================================================================
--- incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/figures/CompartmentFigure.java (original)
+++ incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/figures/CompartmentFigure.java Sun Jul 23 12:04:37 2006
@@ -17,6 +17,7 @@
package org.apache.cayenne.ropbrowser.figures;
import org.eclipse.draw2d.AbstractBorder;
+import org.eclipse.draw2d.Border;
import org.eclipse.draw2d.Figure;
import org.eclipse.draw2d.Graphics;
import org.eclipse.draw2d.IFigure;
@@ -34,14 +35,14 @@
ToolbarLayout layout = new ToolbarLayout();
layout.setMinorAlignment(ToolbarLayout.ALIGN_TOPLEFT);
layout.setStretchMinorAxis(false);
- layout.setSpacing(2);
+ layout.setSpacing(5);
setLayoutManager(layout);
setBorder(new CompartmentFigureBorder());
}
public class CompartmentFigureBorder extends AbstractBorder {
public Insets getInsets(IFigure figure) {
- return new Insets(1,0,0,0);
+ return new Insets(5,5,5,5);
}
public void paint(IFigure figure, Graphics graphics, Insets insets) {
graphics.drawLine(getPaintRectangle(figure, insets).getTopLeft(), tempRect.getTopRight());
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=424788&r1=424787&r2=424788&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 Sun Jul 23 12:04:37 2006
@@ -18,6 +18,7 @@
import java.util.Iterator;
+import org.apache.cayenne.ropbrowser.ROPBrowserPlugin;
import org.apache.cayenne.ropbrowser.model.AbstractObject;
import org.apache.cayenne.ropbrowser.model.ModelElement;
import org.apache.cayenne.ropbrowser.parts.ElementEditPart;
@@ -26,6 +27,9 @@
import org.eclipse.draw2d.Label;
import org.eclipse.draw2d.LineBorder;
import org.eclipse.draw2d.ToolbarLayout;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Font;
+import org.eclipse.swt.widgets.Display;
import org.objectstyle.cayenne.map.Attribute;
/**
@@ -41,7 +45,7 @@
/** name of the object, or MSG_NULL_RESULT if none can be obtained */
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 ElementEditPart part;
@@ -62,6 +66,8 @@
protected void addComponents() {
name = new Label();
add(name);
+ name.setOpaque(true);
+ name.setFont(ROPBrowserPlugin.getDefault().getBoldFont());
add(attributeFigure);
}
@@ -86,15 +92,18 @@
}
protected void setAttributes(AbstractObject model) {
- getAttributeCompartment().removeAll();
-
if (model != null) {
+ getAttributeCompartment().removeAll();
+
Iterator i = model.getAttributes().iterator();
while (i.hasNext()) {
Attribute a = (Attribute) i.next();
Label l = new Label(a.getName() + " : " + model.getPropertyValue(a.getName()));
+ if (model.isDeleted()) {
+ l.setForegroundColor(ColorConstants.gray);
+ }
getAttributeCompartment().add(l);
- }
+ }
}
}
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=424788&r1=424787&r2=424788&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 Sun Jul 23 12:04:37 2006
@@ -15,16 +15,13 @@
*/
package org.apache.cayenne.ropbrowser.figures;
-import org.apache.cayenne.ropbrowser.model.AbstractObject;
-import org.apache.cayenne.ropbrowser.model.CollectionModelElement;
import org.apache.cayenne.ropbrowser.model.SingleModelElement;
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.objectstyle.cayenne.PersistenceState;
+import org.eclipse.draw2d.CompoundBorder;
+import org.eclipse.draw2d.MarginBorder;
import org.objectstyle.cayenne.map.Relationship;
public class SingleFigure extends ElementFigure {
@@ -38,11 +35,11 @@
protected void setBackgroundColour() {
if (getElementCast().getCurrentObject() != null &&
- getElementCast().getCurrentObject().getPersistenceState() == PersistenceState.DELETED) {
- setBackgroundColor(ColorConstants.red);
+ getElementCast().isDeleted()) {
+ name.setBackgroundColor(ColorConstants.red);
}
else {
- setBackgroundColor(ColorConstants.lightGray);
+ name.setBackgroundColor(ColorConstants.green);
}
}
@@ -66,7 +63,6 @@
if (getElementCast().getCurrentObject() == null) return;
Button relButton;
- String buttonLabel;
for (Object o : getElementCast().getCurrentObject().getRelationships()) {
Relationship relationship = (Relationship) o;
relButton = new Button(relationship.getName() + " -> " + relationship.getTargetEntityName() + (relationship.isToMany() ? " (1-n)" : " (1-1)"));
@@ -74,6 +70,9 @@
relButton.getModel().setUserData(relationship);
relButton.addActionListener((SingleEditPart) part);
relButton.setSelected(((SingleEditPart) part).isRelationshipExpanded(relationship));
+ relButton.setOpaque(true);
+ relButton.setBackgroundColor(ColorConstants.button);
+ relButton.setBorder(new CompoundBorder(relButton.getBorder(), new MarginBorder(1)));
relationshipFigure.add(relButton);
}
}
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=424788&r1=424787&r2=424788&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 Sun Jul 23 12:04:37 2006
@@ -26,6 +26,7 @@
import org.eclipse.ui.views.properties.IPropertyDescriptor;
import org.eclipse.ui.views.properties.TextPropertyDescriptor;
+import org.objectstyle.cayenne.PersistenceState;
import org.objectstyle.cayenne.PersistentObject;
import org.objectstyle.cayenne.map.EntityResolver;
import org.objectstyle.cayenne.map.ObjAttribute;
@@ -46,6 +47,8 @@
/** Delegate used to implemenent property-change-support. */
private transient PropertyChangeSupport pcsDelegate = new PropertyChangeSupport(this);
+ protected Collection attributes;
+
public String getName() {
return this.getClass().getSimpleName();
}
@@ -64,8 +67,12 @@
* @return a collection of {@link org.objectstyle.cayenne.map.Attribute} objects.
*/
public Collection getAttributes() {
- if (objectContext != null) {
- return objectContext.getEntityResolver().getObjEntity(getName()).getAttributes();
+ if (attributes != null) {
+ return attributes;
+ }
+ else if (objectContext != null) {
+ attributes = objectContext.getEntityResolver().getObjEntity(getName()).getAttributes();
+ return attributes;
}
return Collections.EMPTY_LIST;
}
@@ -256,5 +263,9 @@
return properties;
}
return new IPropertyDescriptor[0];
+ }
+
+ public boolean isDeleted() {
+ return (getPersistenceState() == PersistenceState.DELETED);
}
}
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=424788&r1=424787&r2=424788&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 Sun Jul 23 12:04:37 2006
@@ -286,4 +286,23 @@
firePropertyChange(PROP_RECORDS, null, objects);
validateCurrent();
}
+
+ @Override
+ public boolean isNull() {
+ return (objects == null || objects.isEmpty());
+ }
+
+ public void memberObjectChanged() {
+ firePropertyChange(PROP_RECORDS, null, objects);
+ }
+
+ @Override
+ public boolean isContextless() {
+ for (AbstractObject object : objects) {
+ if (object.getObjectContext() != null) {
+ return false;
+ }
+ }
+ return !isNull();
+ }
}
Modified: incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/model/Connection.java
URL: http://svn.apache.org/viewvc/incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/model/Connection.java?rev=424788&r1=424787&r2=424788&view=diff
==============================================================================
--- incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/model/Connection.java (original)
+++ incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/model/Connection.java Sun Jul 23 12:04:37 2006
@@ -24,9 +24,9 @@
public class Connection {
/** Connection's source endpoint. */
- private ModelElement source;
+ protected ModelElement source;
/** Connection's target endpoint. */
- private ModelElement target;
+ protected ModelElement target;
private boolean connected;
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=424788&r1=424787&r2=424788&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 Sun Jul 23 12:04:37 2006
@@ -19,14 +19,9 @@
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import java.util.ArrayList;
-import java.util.EventObject;
-import java.util.Iterator;
+import java.util.Collection;
import java.util.List;
-
-import org.apache.cayenne.ropbrowser.ConnectionManager;
-import org.objectstyle.cayenne.DataChannel;
import org.objectstyle.cayenne.ObjectContext;
-import org.objectstyle.cayenne.event.EventSubject;
import org.objectstyle.cayenne.query.NamedQuery;
/**
@@ -39,21 +34,23 @@
// TODO label connections (not just tooltip)
+ public static final String PROP_COMMIT = "ObjectDiagram.GraphCommitted";
+ public static final String PROP_LAYOUT = "ObjectDiagram.LayoutChanged";
/** property indicating a node (element) has been added */
public static final String PROP_NODE_ADDED = "ObjectDiagram.NodeAdded";
/** property indicating that a node (element) has been removed */
public static final String PROP_NODE_REMOVED = "ObjectDiagram.NodeRemoved";
- public static final String PROP_LAYOUT = "ObjectDiagram.LayoutChanged";
- /** the ModelElements contained in the diagram */
- protected List<ModelElement> elements = new ArrayList<ModelElement>();
+ public static final String PROP_ROLLBACK = "ObjectDiagram.GraphRollback";
+ private boolean autoLayout;
/** the Cayenne context in which the objects represented by the ModelElements exist */
protected ObjectContext context;
+ /** the ModelElements contained in the diagram */
+ protected List<ModelElement> elements = new ArrayList<ModelElement>();
+
/** Delegate used to implemenent property-change-support. */
private transient PropertyChangeSupport pcsDelegate = new PropertyChangeSupport(this);
- private boolean autoLayout;
-
/**
* @param context the Cayenne context in which the objects in the diagram are found
* @param query the name of the query contained in the Cayenne data map from which
@@ -91,35 +88,6 @@
return false;
}
- /**
- * Remove an element from the diagram
- * @param element the element to remove
- * @return true if removed; false otherwise
- */
- public boolean removeElement(ModelElement element) {
- if (element != null) {
- elements.remove(element);
- firePropertyChange(PROP_NODE_REMOVED, null, element);
- return true;
- }
- return false;
- }
-
- /** Return a List of Objects in this diagram. The returned List should not be modified. */
- public List<ModelElement> getElements() {
- return elements;
- }
-
- /**
- * Remove a PropertyChangeListener from this component.
- * @param l a PropertyChangeListener instance
- */
- public synchronized void removePropertyChangeListener(PropertyChangeListener l) {
- if (l != null) {
- pcsDelegate.removePropertyChangeListener(l);
- }
- }
-
/**
* Attach a non-null PropertyChangeListener to this object.
* @param l a non-null PropertyChangeListener instance
@@ -132,6 +100,35 @@
pcsDelegate.addPropertyChangeListener(l);
}
+ public void commitChanges() {
+ removeDeletedObjects();
+ context.commitChanges();
+ firePropertyChange(PROP_COMMIT, false, true);
+ }
+
+ public void createMemberConnections(ModelElement element) {
+ if (element instanceof CollectionModelElement) {
+ for (ModelElement child : elements) {
+ if (child instanceof SingleModelElement) {
+ if (((CollectionModelElement) element).contains(child.getCurrentObject())) {
+ MemberConnection connection = new MemberConnection((CollectionModelElement) element, (SingleModelElement) child);
+ connection.connect();
+ }
+ }
+ }
+ }
+ else if (element instanceof SingleModelElement) {
+ for (ModelElement child : elements) {
+ if (child instanceof CollectionModelElement) {
+ if (((CollectionModelElement) child).contains(element.getCurrentObject())) {
+ MemberConnection connection = new MemberConnection((CollectionModelElement) child, (SingleModelElement) element);
+ connection.connect();
+ }
+ }
+ }
+ }
+ }
+
/**
* Report a property change to registered listeners (for example edit parts).
* @param property the programmatic name of the property that changed
@@ -143,57 +140,76 @@
pcsDelegate.firePropertyChange(property, oldValue, newValue);
}
}
-
- public void removeObject(AbstractObject current) {
+
+ public ModelElement getElement(ModelElement newElement) {
for (ModelElement element : elements) {
- if (element instanceof CollectionModelElement) {
- ((CollectionModelElement) element).removeObject(current);
+ if (element.equals(newElement)) {
+ return element;
}
}
+ return null;
}
- public void toggleAutoLayout() {
- autoLayout = !autoLayout;
- firePropertyChange(PROP_LAYOUT, !autoLayout, autoLayout);
+ /** Return a List of Objects in this diagram. The returned List should not be modified. */
+ public List<ModelElement> getElements() {
+ return elements;
+ }
+
+ public ObjectContext getObjectContext() {
+ return context;
}
public boolean isAutoLayoutDesired() {
return autoLayout;
}
- public ModelElement getElement(ModelElement newElement) {
- for (ModelElement element : elements) {
- if (element.equals(newElement)) {
- return element;
- }
+ private void removeDeletedObjects() {
+ Collection deleted = context.deletedObjects();
+ for (Object o : deleted) {
+ AbstractObject abstractObject = (AbstractObject) o;
+ removeObjectFromDiagram(abstractObject);
}
- return null;
}
- public void createMemberConnections(ModelElement element) {
- if (element instanceof CollectionModelElement) {
- for (ModelElement child : elements) {
- if (child instanceof SingleModelElement) {
- if (((CollectionModelElement) element).contains(child.getCurrentObject())) {
- MemberConnection connection = new MemberConnection(element, child);
- connection.connect();
- }
- }
- }
+ /**
+ * Remove an element from the diagram
+ * @param element the element to remove
+ * @return true if removed; false otherwise
+ */
+ public boolean removeElement(ModelElement element) {
+ if (element != null) {
+ elements.remove(element);
+ firePropertyChange(PROP_NODE_REMOVED, null, element);
+ return true;
}
- else if (element instanceof SingleModelElement) {
- for (ModelElement child : elements) {
- if (child instanceof CollectionModelElement) {
- if (((CollectionModelElement) child).contains(element.getCurrentObject())) {
- MemberConnection connection = new MemberConnection(child, element);
- connection.connect();
- }
- }
+ return false;
+ }
+
+ private void removeObjectFromDiagram(AbstractObject current) {
+ for (ModelElement element : elements) {
+ if (element instanceof CollectionModelElement) {
+ ((CollectionModelElement) element).removeObject(current);
}
}
}
-
- public ObjectContext getObjectContext() {
- return context;
+
+ /**
+ * Remove a PropertyChangeListener from this component.
+ * @param l a PropertyChangeListener instance
+ */
+ public synchronized void removePropertyChangeListener(PropertyChangeListener l) {
+ if (l != null) {
+ pcsDelegate.removePropertyChangeListener(l);
+ }
+ }
+
+ public void rollbackChanges() {
+ context.rollbackChanges();
+ firePropertyChange(PROP_ROLLBACK, false, true);
+ }
+
+ public void toggleAutoLayout() {
+ autoLayout = !autoLayout;
+ firePropertyChange(PROP_LAYOUT, !autoLayout, autoLayout);
}
}
Modified: incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/model/MemberConnection.java
URL: http://svn.apache.org/viewvc/incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/model/MemberConnection.java?rev=424788&r1=424787&r2=424788&view=diff
==============================================================================
--- incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/model/MemberConnection.java (original)
+++ incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/model/MemberConnection.java Sun Jul 23 12:04:37 2006
@@ -29,7 +29,15 @@
* @param target a target endpoint for this connection (non null)
* @throws IllegalArgumentException if any of the parameters are null or source == target
*/
- public MemberConnection(ModelElement source, ModelElement target) {
+ public MemberConnection(CollectionModelElement source, SingleModelElement target) {
super(source, target);
+ }
+
+ public CollectionModelElement getSource() {
+ return (CollectionModelElement) source;
+ }
+
+ public SingleModelElement getTarget() {
+ return (SingleModelElement) target;
}
}
Modified: incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/model/ModelElement.java
URL: http://svn.apache.org/viewvc/incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/model/ModelElement.java?rev=424788&r1=424787&r2=424788&view=diff
==============================================================================
--- incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/model/ModelElement.java (original)
+++ incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/model/ModelElement.java Sun Jul 23 12:04:37 2006
@@ -49,6 +49,8 @@
*/
public static final String PROP_RECORDS = "ModelElement.Records";
+ public static final String PROP_NAME = "ModelElement.Name";
+
protected ElementDiagram diagram;
protected String name;
@@ -245,6 +247,11 @@
public void deleteCurrentObject() {
getCurrentObject().getObjectContext().deleteObject(getCurrentObject());
firePropertyChange(PROP_RECORDS, null, getCurrentObject());
+ for (Connection conn : getTargetConnections()) {
+ if (conn instanceof MemberConnection) {
+ ((MemberConnection) conn).getSource().memberObjectChanged();
+ }
+ }
}
public abstract void addObject(AbstractObject object);
@@ -269,4 +276,19 @@
{
return bounds;
}
+
+ public abstract boolean isNull();
+
+ public void setName(String newName) {
+ String oldName = name;
+ name = newName;
+ firePropertyChange(PROP_NAME, oldName, name);
+ }
+
+ /**
+ * Check if the element has objects, but none with a context.
+ * If isNull returns true, isContextless should return false (ie an element
+ * that is null is not contextless).
+ */
+ public abstract boolean isContextless();
}
Modified: incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/model/RelationshipConnection.java
URL: http://svn.apache.org/viewvc/incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/model/RelationshipConnection.java?rev=424788&r1=424787&r2=424788&view=diff
==============================================================================
--- incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/model/RelationshipConnection.java (original)
+++ incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/model/RelationshipConnection.java Sun Jul 23 12:04:37 2006
@@ -34,7 +34,7 @@
* @param target a target endpoint for this connection (non null)
* @throws IllegalArgumentException if any of the parameters are null or source == target
*/
- public RelationshipConnection(ModelElement source, ModelElement target, Relationship relationship) {
+ public RelationshipConnection(SingleModelElement source, ModelElement target, Relationship relationship) {
super(source, target);
this.relationship = relationship;
}
@@ -44,5 +44,9 @@
*/
public Relationship getRelationship() {
return relationship;
+ }
+
+ public SingleModelElement getSource() {
+ return (SingleModelElement) source;
}
}
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=424788&r1=424787&r2=424788&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 Sun Jul 23 12:04:37 2006
@@ -20,6 +20,7 @@
import java.beans.PropertyChangeListener;
import org.eclipse.ui.views.properties.IPropertyDescriptor;
+import org.objectstyle.cayenne.PersistenceState;
import org.objectstyle.cayenne.map.Relationship;
/**
@@ -156,5 +157,19 @@
}
}
setObject(object);
+ }
+
+ public boolean isDeleted() {
+ return getCurrentObject().isDeleted();
+ }
+
+ @Override
+ public boolean isNull() {
+ return (object == null);
+ }
+
+ @Override
+ public boolean isContextless() {
+ return (getCurrentObject() != null && getCurrentObject().getObjectContext() == null);
}
}
Modified: incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/model/auto/_Artist.java
URL: http://svn.apache.org/viewvc/incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/model/auto/_Artist.java?rev=424788&r1=424787&r2=424788&view=diff
==============================================================================
--- incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/model/auto/_Artist.java (original)
+++ incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/model/auto/_Artist.java Sun Jul 23 12:04:37 2006
@@ -4,7 +4,7 @@
import java.util.List;
import org.apache.cayenne.ropbrowser.model.AbstractObject;
-import org.apache.cayenne.ropbrowser.model.Painting;
+import org.apache.cayenne.ropbrowser.model.Painting;
/**
* A generated persistent class mapped as "Artist" Cayenne entity. It is a good idea to
Modified: incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/model/auto/_Gallery.java
URL: http://svn.apache.org/viewvc/incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/model/auto/_Gallery.java?rev=424788&r1=424787&r2=424788&view=diff
==============================================================================
--- incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/model/auto/_Gallery.java (original)
+++ incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/model/auto/_Gallery.java Sun Jul 23 12:04:37 2006
@@ -3,7 +3,7 @@
import java.util.List;
import org.apache.cayenne.ropbrowser.model.AbstractObject;
-import org.apache.cayenne.ropbrowser.model.Painting;
+import org.apache.cayenne.ropbrowser.model.Painting;
/**
* A generated persistent class mapped as "Gallery" Cayenne entity. It is a good idea to
Modified: incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/model/auto/_Painting.java
URL: http://svn.apache.org/viewvc/incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/model/auto/_Painting.java?rev=424788&r1=424787&r2=424788&view=diff
==============================================================================
--- incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/model/auto/_Painting.java (original)
+++ incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/model/auto/_Painting.java Sun Jul 23 12:04:37 2006
@@ -3,7 +3,7 @@
import org.apache.cayenne.ropbrowser.model.AbstractObject;
import org.apache.cayenne.ropbrowser.model.Artist;
import org.apache.cayenne.ropbrowser.model.Gallery;
-import org.objectstyle.cayenne.ValueHolder;
+import org.objectstyle.cayenne.ValueHolder;
/**
* A generated persistent class mapped as "Painting" Cayenne entity. It is a good idea to
@@ -17,19 +17,19 @@
public static final String PAINTING_ARTIST_PROPERTY = "paintingArtist";
public static final String PAINTING_GALLERY_PROPERTY = "paintingGallery";
- protected Float estimatedPrice;
+ protected Double estimatedPrice;
protected String paintingName;
protected ValueHolder paintingArtist;
protected ValueHolder paintingGallery;
- public Float getEstimatedPrice() {
+ public Double getEstimatedPrice() {
if(objectContext != null) {
objectContext.prepareForAccess(this, "estimatedPrice");
}
return estimatedPrice;
}
- public void setEstimatedPrice(Float estimatedPrice) {
+ public void setEstimatedPrice(Double estimatedPrice) {
if(objectContext != null) {
objectContext.prepareForAccess(this, "estimatedPrice");
}
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=424788&r1=424787&r2=424788&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 Sun Jul 23 12:04:37 2006
@@ -18,8 +18,12 @@
import java.beans.PropertyChangeEvent;
+import org.apache.cayenne.ropbrowser.actions.HideAction;
import org.apache.cayenne.ropbrowser.actions.InsertAction;
+import org.apache.cayenne.ropbrowser.actions.SetNameAction;
+import org.apache.cayenne.ropbrowser.commands.HideElementCommand;
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.ElementFigure;
import org.apache.cayenne.ropbrowser.model.CollectionModelElement;
@@ -78,6 +82,9 @@
}
public Command getCommand(Request request) {
+ if (request.getType().equals(SetNameAction.SET_NAME_REQUEST)) {
+ return new SetNameElementCommand(this.getModelCast());
+ }
// handle requests not in policies; pass the rest along
return super.getCommand(request);
}
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=424788&r1=424787&r2=424788&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 Sun Jul 23 12:04:37 2006
@@ -18,12 +18,15 @@
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
+import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
+import org.apache.cayenne.ropbrowser.commands.HideElementCommand;
import org.apache.cayenne.ropbrowser.layout.DelegatingLayoutManager;
import org.apache.cayenne.ropbrowser.model.ElementDiagram;
import org.apache.cayenne.ropbrowser.model.ModelElement;
+import org.apache.cayenne.ropbrowser.model.SingleModelElement;
import org.eclipse.draw2d.ConnectionLayer;
import org.eclipse.draw2d.Figure;
import org.eclipse.draw2d.FreeformLayer;
@@ -105,7 +108,16 @@
*/
protected List getModelChildren() {
ElementDiagram diagram = (ElementDiagram) this.getModel();
- return diagram.getElements(); // return a list of objects
+ return new ArrayList<ModelElement>(diagram.getElements()); // return a list of objects
+ }
+
+ public void hideNullObjects() {
+ for (Object o : getModelChildren()) {
+ ModelElement element = (ModelElement) o;
+ if (element.isNull() || element.isContextless()) {
+ getViewer().getEditDomain().getCommandStack().execute(new HideElementCommand(element));
+ }
+ }
}
/**
@@ -121,10 +133,20 @@
else if (ElementDiagram.PROP_LAYOUT.equals(prop)) {
getFigure().setLayoutManager(delegatingLayoutManager);
}
+ else if (ElementDiagram.PROP_COMMIT.equals(prop)) {
+ hideNullObjects();
+ }
+ else if (ElementDiagram.PROP_ROLLBACK.equals(prop)) {
+ refreshVisuals();
+ }
}
public boolean isAutoLayoutDesired() {
- return ((ElementDiagram) getModel()).isAutoLayoutDesired();
+ return getModelCast().isAutoLayoutDesired();
+ }
+
+ public ElementDiagram getModelCast() {
+ return (ElementDiagram) getModel();
}
/**