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/08/01 01:59:01 UTC
svn commit: r427379 - in
/incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser:
./ commands/ figures/ layout/ model/ parts/ views/ wizards/
Author: aadamchik
Date: Mon Jul 31 16:59:00 2006
New Revision: 427379
URL: http://svn.apache.org/viewvc?rev=427379&view=rev
Log:
CAY-616
Modified:
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/ConnectionManager.java
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/ObjectEditor.java
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/ObjectEditorInput.java
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/ROPBrowserPlugin.java
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/commands/ExistingObjectCommand.java
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/figures/CollectionFigure.java
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/figures/ElementFigure.java
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/layout/DelegatingLayoutManager.java
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/model/CollectionModelElement.java
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/model/ElementDiagram.java
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/model/SingleModelElement.java
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/parts/CollectionEditPart.java
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/parts/ConnectionEditPart.java
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/parts/ElementDiagramEditPart.java
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/parts/ElementEditPart.java
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/views/ControlPanelView.java
incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/wizards/SelectParametersPage.java
Modified: incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/ConnectionManager.java
URL: http://svn.apache.org/viewvc/incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/ConnectionManager.java?rev=427379&r1=427378&r2=427379&view=diff
==============================================================================
--- incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/ConnectionManager.java (original)
+++ incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/ConnectionManager.java Mon Jul 31 16:59:00 2006
@@ -38,6 +38,8 @@
*/
public class ConnectionManager {
+ // TODO allow configuration of which attributes are displayed in elements
+
private static ConnectionManager _ref;
/** All connections made by the application */
private Hashtable<String, DataChannel> connections;
@@ -60,22 +62,32 @@
*/
public ObjectContext getNewObjectContext(String address) {
- DataChannel channel;
+ DataChannel channel = null;
if (connections.containsKey(address)) {
channel = connections.get(address);
}
else {
HessianConnection connection = new HessianConnection(address, null, null, "conference");
- channel = new ClientChannel(connection);
- connections.put(address, channel);
+ try {
+ channel = new ClientChannel(connection);
+ connections.put(address, channel);
+ } catch (Exception e) {
+ // TODO log
+ System.out.println("Error connecting to the server: " + e.getMessage());
+ }
}
- ObjectContext context = new CayenneContext(channel, true, false);
- // TODO XMPP notification of graph changes; DataChannel.* ?
- channel.getEventManager().addListener(this, "handleXMPP", GraphEvent.class, DataChannel.GRAPH_CHANGED_SUBJECT);
- channel.getEventManager().addListener(this, "handleXMPP", GraphEvent.class, DataChannel.GRAPH_FLUSHED_SUBJECT);
- return context;
+ if (channel != null) {
+ // TODO XMPP notification of graph changes; DataChannel.* ?
+ // TODO control panel XMPP option
+ channel.getEventManager().addListener(this, "handleXMPP", GraphEvent.class, DataChannel.GRAPH_CHANGED_SUBJECT);
+ channel.getEventManager().addListener(this, "handleXMPP", GraphEvent.class, DataChannel.GRAPH_FLUSHED_SUBJECT);
+
+ ObjectContext context = new CayenneContext(channel, true, false);
+ return context;
+ }
+ return null;
}
public void handleXMPP(GraphEvent event) {
Modified: incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/ObjectEditor.java
URL: http://svn.apache.org/viewvc/incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/ObjectEditor.java?rev=427379&r1=427378&r2=427379&view=diff
==============================================================================
--- incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/ObjectEditor.java (original)
+++ incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/ObjectEditor.java Mon Jul 31 16:59:00 2006
@@ -27,7 +27,6 @@
import org.apache.cayenne.ropbrowser.actions.SetNameAction;
import org.apache.cayenne.ropbrowser.actions.ToggleLayoutAction;
import org.apache.cayenne.ropbrowser.model.ElementDiagram;
-import org.apache.cayenne.ropbrowser.parts.ElementDiagramEditPart;
import org.apache.cayenne.ropbrowser.parts.ElementEditPartFactory;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.gef.ContextMenuProvider;
@@ -39,9 +38,6 @@
import org.eclipse.jface.action.IAction;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorPart;
-import org.objectstyle.cayenne.DataChannel;
-import org.objectstyle.cayenne.ObjectContext;
-import org.objectstyle.cayenne.event.EventSubject;
/**
* Editor class allowing visual editing of database data via
Modified: incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/ObjectEditorInput.java
URL: http://svn.apache.org/viewvc/incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/ObjectEditorInput.java?rev=427379&r1=427378&r2=427379&view=diff
==============================================================================
--- incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/ObjectEditorInput.java (original)
+++ incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/ObjectEditorInput.java Mon Jul 31 16:59:00 2006
@@ -30,9 +30,12 @@
public class ObjectEditorInput implements IEditorInput {
private ObjectContext context;
+
+ private String serverAddress;
- public ObjectEditorInput(ObjectContext context) {
+ public ObjectEditorInput(ObjectContext context, String address) {
this.context = context;
+ this.serverAddress = address;
}
public boolean exists() {
@@ -47,7 +50,7 @@
* The name of the query contained in the Cayenne data map.
*/
public String getName() {
- return "Object editor";
+ return serverAddress;
}
public IPersistableElement getPersistable() {
@@ -55,7 +58,7 @@
}
public String getToolTipText() {
- return "Object editor";
+ return serverAddress + " : " + context.hashCode();
}
public Object getAdapter(Class adapter) {
@@ -71,5 +74,9 @@
public ObjectContext getContext() {
return context;
+ }
+
+ public String getServerAddress() {
+ return serverAddress;
}
}
Modified: incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/ROPBrowserPlugin.java
URL: http://svn.apache.org/viewvc/incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/ROPBrowserPlugin.java?rev=427379&r1=427378&r2=427379&view=diff
==============================================================================
--- incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/ROPBrowserPlugin.java (original)
+++ incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/ROPBrowserPlugin.java Mon Jul 31 16:59:00 2006
@@ -31,6 +31,9 @@
private static ROPBrowserPlugin plugin;
private Font boldFont;
+ public static final String IMG_DROP_OPEN = "dropdown_open.gif";
+ public static final String IMG_DROP_CLOSED = "dropdown_closed.gif";
+
/**
* The constructor.
*/
@@ -44,6 +47,8 @@
public void start(BundleContext context) throws Exception {
super.start(context);
boldFont = new Font(null, "Arial", 9, SWT.BOLD);
+ getImageRegistry().put(IMG_DROP_OPEN, ROPBrowserPlugin.getImageDescriptor("icons/" + IMG_DROP_OPEN));
+ getImageRegistry().put(IMG_DROP_CLOSED, ROPBrowserPlugin.getImageDescriptor("icons/" + IMG_DROP_CLOSED));
}
/**
Modified: incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/commands/ExistingObjectCommand.java
URL: http://svn.apache.org/viewvc/incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/commands/ExistingObjectCommand.java?rev=427379&r1=427378&r2=427379&view=diff
==============================================================================
--- incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/commands/ExistingObjectCommand.java (original)
+++ incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/commands/ExistingObjectCommand.java Mon Jul 31 16:59:00 2006
@@ -75,10 +75,12 @@
if (conn instanceof RelationshipConnection) {
RelationshipConnection relConn = (RelationshipConnection) conn;
relConn.getSource().getCurrentObject().setRelationship(relConn.getRelationship(), element.getCurrentObject(), object);
+ relConn.disconnect();
RelationshipConnection newConn = new RelationshipConnection(relConn.getSource(), existing, relConn.getRelationship());
+ newConn.connect();
}
}
- Command recCommand = new HideElementCommand(element);
+ HideElementCommand recCommand = new HideElementCommand(element);
recCommand.execute();
}
}
Modified: incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/figures/CollectionFigure.java
URL: http://svn.apache.org/viewvc/incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/figures/CollectionFigure.java?rev=427379&r1=427378&r2=427379&view=diff
==============================================================================
--- incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/figures/CollectionFigure.java (original)
+++ incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/figures/CollectionFigure.java Mon Jul 31 16:59:00 2006
@@ -15,17 +15,50 @@
*/
package org.apache.cayenne.ropbrowser.figures;
+import java.util.Iterator;
+
+import org.apache.cayenne.ropbrowser.ROPBrowserPlugin;
+import org.apache.cayenne.ropbrowser.figures.CompartmentFigure.CompartmentFigureBorder;
+import org.apache.cayenne.ropbrowser.model.AbstractObject;
import org.apache.cayenne.ropbrowser.model.CollectionModelElement;
import org.apache.cayenne.ropbrowser.model.ModelElement;
import org.apache.cayenne.ropbrowser.parts.CollectionEditPart;
+import org.apache.cayenne.ropbrowser.parts.SingleEditPart;
+import org.eclipse.draw2d.ActionEvent;
+import org.eclipse.draw2d.ActionListener;
+import org.eclipse.draw2d.Button;
+import org.eclipse.draw2d.Clickable;
import org.eclipse.draw2d.ColorConstants;
+import org.eclipse.draw2d.CompoundBorder;
+import org.eclipse.draw2d.Figure;
+import org.eclipse.draw2d.FlowLayout;
+import org.eclipse.draw2d.Label;
+import org.eclipse.draw2d.LineBorder;
+import org.eclipse.draw2d.MarginBorder;
+import org.eclipse.draw2d.ToolbarLayout;
+import org.objectstyle.cayenne.map.Attribute;
-public class CollectionFigure extends ElementFigure {
+public class CollectionFigure extends ElementFigure implements ActionListener {
+
+ private CompartmentFigure navFigure;
+ private String lastNavAttribute = null;
public CollectionFigure(CollectionEditPart part) {
super(part);
}
+ protected void addComponents() {
+ super.addComponents();
+
+ navFigure = new CompartmentFigure();
+ ToolbarLayout layout = new ToolbarLayout();
+ layout.setMinorAlignment(ToolbarLayout.ALIGN_TOPLEFT);
+ layout.setStretchMinorAxis(false);
+ layout.setSpacing(1);
+ navFigure.setLayoutManager(layout);
+ navFigure.setBorder(null);
+ }
+
protected void setBackgroundColour() {
// root figure should be a different colour
if (getElementCast().isRoot()) {
@@ -48,6 +81,72 @@
}
else {
name.setText(MSG_NULL_RESULT);
+ }
+ }
+
+ protected void setAttributes(AbstractObject model) {
+ getAttributeCompartment().removeAll();
+
+ if (model != null) {
+ Iterator i = model.getAttributes().iterator();
+ while (i.hasNext()) {
+ Attribute a = (Attribute) i.next();
+ Button b;
+ if (lastNavAttribute != null && a.getName().equals(lastNavAttribute)) {
+ b = new Button(a.getName() + " : " + model.getPropertyValue(a.getName()) + " ", ROPBrowserPlugin.getDefault().getImageRegistry().get(ROPBrowserPlugin.IMG_DROP_OPEN));
+ }
+ else {
+ b = new Button(a.getName() + " : " + model.getPropertyValue(a.getName()) + " ", ROPBrowserPlugin.getDefault().getImageRegistry().get(ROPBrowserPlugin.IMG_DROP_CLOSED));
+ }
+ if (model.isDeleted()) {
+ b.setForegroundColor(ColorConstants.gray);
+ }
+ b.setBorder(null);
+ b.setOpaque(false);
+ b.addActionListener(this);
+ b.getModel().setUserData(a.getName());
+ getAttributeCompartment().add(b);
+
+ if (lastNavAttribute != null && a.getName().equals(lastNavAttribute)) {
+ insertDropdown(a.getName());
+ }
+ }
+ }
+ }
+
+ public void actionPerformed(ActionEvent event) {
+
+ Button buttonPressed = (Button) event.getSource();
+ String pressed = (String) buttonPressed.getModel().getUserData();
+
+ if (lastNavAttribute != null && lastNavAttribute.equals(pressed)) {
+ lastNavAttribute = null;
+ navFigure.removeAll();
+ getAttributeCompartment().remove(navFigure);
+ }
+ else {
+ lastNavAttribute = pressed;
+ }
+
+ refresh();
+ }
+
+ protected void insertDropdown(String pressed) {
+
+ navFigure.removeAll();
+ getAttributeCompartment().add(navFigure);
+
+ // TODO sort values
+
+ Iterator<AbstractObject> i = getElementCast().getObjectIterator();
+ while (i.hasNext()) {
+ AbstractObject o = i.next();
+ Button b = new Button(o.getPropertyValue(pressed).toString());
+ b.setBorder(new MarginBorder(0, 10, 0, 0));
+ b.setOpaque(false);
+ b.getModel().setUserData(o);
+ b.addActionListener((CollectionEditPart) part);
+ navFigure.add(b);
}
}
}
Modified: incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/figures/ElementFigure.java
URL: http://svn.apache.org/viewvc/incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/figures/ElementFigure.java?rev=427379&r1=427378&r2=427379&view=diff
==============================================================================
--- incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/figures/ElementFigure.java (original)
+++ incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/figures/ElementFigure.java Mon Jul 31 16:59:00 2006
@@ -54,7 +54,7 @@
this.part = part;
ToolbarLayout layout = new ToolbarLayout();
- setLayoutManager(layout);
+ setLayoutManager(layout);
setBorder(new LineBorder(ColorConstants.black,1));
setOpaque(true);
Modified: incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/layout/DelegatingLayoutManager.java
URL: http://svn.apache.org/viewvc/incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/layout/DelegatingLayoutManager.java?rev=427379&r1=427378&r2=427379&view=diff
==============================================================================
--- incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/layout/DelegatingLayoutManager.java (original)
+++ incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/layout/DelegatingLayoutManager.java Mon Jul 31 16:59:00 2006
@@ -108,8 +108,6 @@
}
else
{
- // TODO allow drag single element onto null single element to set relationship
- // and single element into collection to add into relationship
diagram.installEditPolicy(EditPolicy.LAYOUT_ROLE, new SelectionHandlesEditPolicy());
}
}
Modified: incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/model/CollectionModelElement.java
URL: http://svn.apache.org/viewvc/incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/model/CollectionModelElement.java?rev=427379&r1=427378&r2=427379&view=diff
==============================================================================
--- incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/model/CollectionModelElement.java (original)
+++ incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/model/CollectionModelElement.java Mon Jul 31 16:59:00 2006
@@ -19,6 +19,7 @@
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.ArrayList;
+import java.util.Iterator;
import java.util.List;
import org.eclipse.ui.views.properties.IPropertyDescriptor;
@@ -318,6 +319,19 @@
for (AbstractObject object : deleted) {
removeObject(object);
}
+ }
+ }
+
+ public Iterator<AbstractObject> getObjectIterator() {
+ return objects.iterator();
+ }
+
+ public void setCurrentObject(AbstractObject object) {
+ if (objects != null && objects.contains(object)) {
+ int oldCurrent = currentRecord;
+ current = object;
+ currentRecord = objects.indexOf(object);
+ firePropertyChange(PROP_CURRENT_RECORD, new Integer(oldCurrent), new Integer(currentRecord));
}
}
}
Modified: incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/model/ElementDiagram.java
URL: http://svn.apache.org/viewvc/incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/model/ElementDiagram.java?rev=427379&r1=427378&r2=427379&view=diff
==============================================================================
--- incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/model/ElementDiagram.java (original)
+++ incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/model/ElementDiagram.java Mon Jul 31 16:59:00 2006
@@ -210,6 +210,9 @@
public void rollbackChanges() {
context.rollbackChanges();
firePropertyChange(PROP_ROLLBACK, false, true);
+ for (ModelElement element : elements) {
+ element.removeDeletedObjects();
+ }
}
public void toggleAutoLayout() {
Modified: incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/model/SingleModelElement.java
URL: http://svn.apache.org/viewvc/incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/model/SingleModelElement.java?rev=427379&r1=427378&r2=427379&view=diff
==============================================================================
--- incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/model/SingleModelElement.java (original)
+++ incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/model/SingleModelElement.java Mon Jul 31 16:59:00 2006
@@ -23,6 +23,8 @@
import org.objectstyle.cayenne.PersistenceState;
import org.objectstyle.cayenne.map.Relationship;
+// TODO allow drag and drop of single model element as insert existing
+
/**
* Class representing a collection of AbstractObjects.
* Used to display a number of records as one element on the
Modified: incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/parts/CollectionEditPart.java
URL: http://svn.apache.org/viewvc/incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/parts/CollectionEditPart.java?rev=427379&r1=427378&r2=427379&view=diff
==============================================================================
--- incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/parts/CollectionEditPart.java (original)
+++ incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/parts/CollectionEditPart.java Mon Jul 31 16:59:00 2006
@@ -17,6 +17,7 @@
package org.apache.cayenne.ropbrowser.parts;
import java.beans.PropertyChangeEvent;
+import java.util.Iterator;
import org.apache.cayenne.ropbrowser.actions.HideAction;
import org.apache.cayenne.ropbrowser.actions.InsertAction;
@@ -27,12 +28,20 @@
import org.apache.cayenne.ropbrowser.commands.ObjectInsertCommand;
import org.apache.cayenne.ropbrowser.commands.SetNameElementCommand;
import org.apache.cayenne.ropbrowser.figures.CollectionFigure;
+import org.apache.cayenne.ropbrowser.figures.CompartmentFigure;
import org.apache.cayenne.ropbrowser.figures.ElementFigure;
+import org.apache.cayenne.ropbrowser.model.AbstractObject;
import org.apache.cayenne.ropbrowser.model.CollectionModelElement;
import org.apache.cayenne.ropbrowser.model.ModelElement;
import org.apache.cayenne.ropbrowser.policies.CollectionDirectEditPolicy;
import org.apache.cayenne.ropbrowser.policies.CollectionSelectionPolicy;
+import org.eclipse.draw2d.ActionEvent;
+import org.eclipse.draw2d.ActionListener;
+import org.eclipse.draw2d.Button;
+import org.eclipse.draw2d.Figure;
import org.eclipse.draw2d.IFigure;
+import org.eclipse.draw2d.Label;
+import org.eclipse.draw2d.geometry.Point;
import org.eclipse.gef.EditPolicy;
import org.eclipse.gef.Request;
import org.eclipse.gef.commands.Command;
@@ -43,7 +52,7 @@
*
* @author Marcel Gordon
*/
-public class CollectionEditPart extends ElementEditPart {
+public class CollectionEditPart extends ElementEditPart implements ActionListener {
/**
* Extends super to allow scrolling through records on double-click and
@@ -77,5 +86,9 @@
}
// handle requests not in policies; pass the rest along
return super.getCommand(request);
+ }
+
+ public void actionPerformed(ActionEvent event) {
+ getModelCast().setCurrentObject((AbstractObject) ((Button) event.getSource()).getModel().getUserData());
}
}
Modified: incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/parts/ConnectionEditPart.java
URL: http://svn.apache.org/viewvc/incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/parts/ConnectionEditPart.java?rev=427379&r1=427378&r2=427379&view=diff
==============================================================================
--- incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/parts/ConnectionEditPart.java (original)
+++ incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/parts/ConnectionEditPart.java Mon Jul 31 16:59:00 2006
@@ -38,8 +38,6 @@
@Override
protected void createEditPolicies() {
- // TODO reconnection?
- installEditPolicy(EditPolicy.CONNECTION_ENDPOINTS_ROLE, new EndpointsEditPolicy());
}
/**
@@ -56,11 +54,5 @@
connection.setToolTip(new Label(((RelationshipConnection) getModel()).getRelationship().getName()));
}
return connection;
- }
-
-
- // TODO reconnection?
- class EndpointsEditPolicy extends ConnectionEndpointEditPolicy {
-
}
}
Modified: incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/parts/ElementDiagramEditPart.java
URL: http://svn.apache.org/viewvc/incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/parts/ElementDiagramEditPart.java?rev=427379&r1=427378&r2=427379&view=diff
==============================================================================
--- incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/parts/ElementDiagramEditPart.java (original)
+++ incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/parts/ElementDiagramEditPart.java Mon Jul 31 16:59:00 2006
@@ -140,11 +140,11 @@
hideNullObjects();
}
else if (ElementDiagram.PROP_ROLLBACK.equals(prop)) {
- // TODO deal with undone new elements, changes etc
for (Object o : getChildren()) {
ElementFigure figure = (ElementFigure) ((ElementEditPart) o).getFigure();
figure.refresh();
}
+ hideNullObjects();
}
}
Modified: incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/parts/ElementEditPart.java
URL: http://svn.apache.org/viewvc/incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/parts/ElementEditPart.java?rev=427379&r1=427378&r2=427379&view=diff
==============================================================================
--- incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/parts/ElementEditPart.java (original)
+++ incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/parts/ElementEditPart.java Mon Jul 31 16:59:00 2006
@@ -85,7 +85,6 @@
protected void createEditPolicies() {
// allow removal of the associated model element
installEditPolicy(EditPolicy.COMPONENT_ROLE, new ElementEditPolicy());
- installEditPolicy(EditPolicy.GRAPHICAL_NODE_ROLE, new ElementNodeEditPolicy());
}
/**
@@ -215,30 +214,5 @@
public boolean isRoot() {
return getModelCast().isRoot();
- }
-
- // TODO allow reconnections?
- class ElementNodeEditPolicy extends GraphicalNodeEditPolicy {
-
- @Override
- protected Command getConnectionCompleteCommand(CreateConnectionRequest request) {
- return null;
- }
-
- @Override
- protected Command getConnectionCreateCommand(CreateConnectionRequest request) {
- return null;
- }
-
- @Override
- protected Command getReconnectSourceCommand(ReconnectRequest request) {
- return null;
- }
-
- @Override
- protected Command getReconnectTargetCommand(ReconnectRequest request) {
- return null;
- }
-
}
}
Modified: incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/views/ControlPanelView.java
URL: http://svn.apache.org/viewvc/incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/views/ControlPanelView.java?rev=427379&r1=427378&r2=427379&view=diff
==============================================================================
--- incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/views/ControlPanelView.java (original)
+++ incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/views/ControlPanelView.java Mon Jul 31 16:59:00 2006
@@ -36,6 +36,8 @@
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IEditorReference;
+import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.forms.widgets.ColumnLayout;
import org.eclipse.ui.forms.widgets.Form;
@@ -86,8 +88,6 @@
/** manages connections to the server */
private ConnectionManager connectionManager;
-
- private ObjectEditor lastEditor;
private SelectQueryWizard selectWizard;
@@ -201,24 +201,28 @@
while (i.hasNext()) {
namedQueryCombo.add(((Query)i.next()).getName());
}
+ namedQueryCombo.setData(serverCombo.getText());
i = entityResolver.getObjEntities().iterator();
while (i.hasNext()) {
selectQueryCombo.add(((ObjEntity)i.next()).getName());
}
+ selectQueryCombo.setData(serverCombo.getText());
}
else if (e.getSource() == runNamedQueryButton) {
if (namedQueryCombo.indexOf(namedQueryCombo.getText()) != -1) {
- ObjectContext context = getObjectContext();
+ ObjectContext context = getObjectContext((String) namedQueryCombo.getData());
NamedQuery select = new NamedQuery(namedQueryCombo.getText());
- Object matches = context.performQuery(select);
+ if (context != null) {
+ Object matches = context.performQuery(select);
- displayInEditor(context, matches);
+ displayInEditor(context, (String) namedQueryCombo.getData(), matches);
+ }
}
}
else if (e.getSource() == parametersButton && selectQueryCombo.indexOf(selectQueryCombo.getText()) != -1) {
if (selectWizard == null) {
- selectWizard = new SelectQueryWizard(connectionManager.getNewObjectContext(serverCombo.getText()), selectQueryCombo.getText(), SelectQueryWizard.RETURN_PARAMS);
+ selectWizard = new SelectQueryWizard(connectionManager.getNewObjectContext((String) selectQueryCombo.getData()), selectQueryCombo.getText(), SelectQueryWizard.RETURN_PARAMS);
}
WizardDialog dialog = new WizardDialog(getViewSite().getShell(), selectWizard);
dialog.create();
@@ -226,8 +230,8 @@
}
else if (e.getSource() == runSelectQueryButton) {
if (selectQueryCombo.indexOf(selectQueryCombo.getText()) != -1) {
- ObjectContext context = getObjectContext();
- Object matches; // TODO allow initialisation of wizard values
+ ObjectContext context = getObjectContext((String) selectQueryCombo.getData());
+ Object matches;
if (selectWizard != null && selectWizard.getEntityName().equals(selectQueryCombo.getText())) {
String [] paramNames = selectWizard.getParameterNames();
Object [] paramValues = selectWizard.getParameterValues();
@@ -238,36 +242,65 @@
matches = context.performQuery(new SelectQuery(selectQueryCombo.getText()));
}
- displayInEditor(context, matches);
+ displayInEditor(context, (String) selectQueryCombo.getData(), matches);
}
}
}
- private ObjectContext getObjectContext() {
+ private ObjectContext getObjectContext(String address) {
// TODO more efficient method?
ObjectContext context;
if (newDiagramButton.getSelection()) {
- context = this.connectionManager.getNewObjectContext(serverCombo.getText());
+ context = this.connectionManager.getNewObjectContext(address);
}
else {
- context = lastEditor.getDiagram().getObjectContext();
+ ObjectEditor existingEditor = getExistingEditor(address);
+ if (existingEditor == null) {
+ context = this.connectionManager.getNewObjectContext(address);
+ }
+ else {
+ context = existingEditor.getDiagram().getObjectContext();
+ }
}
return context;
}
- private void displayInEditor(ObjectContext context, Object matches) {
- // TODO what if the editor has been shut?
- // TODO can only open in same window if same server
+ private void displayInEditor(ObjectContext context, String address, Object matches) {
// TODO new context option
// TODO XMPP on/off option
try {
- if (lastEditor == null || newDiagramButton.getSelection()) {
- lastEditor = (ObjectEditor) getViewSite().getPage().openEditor(new ObjectEditorInput(context), ObjectEditor.ID, true);
+ ObjectEditor editor;
+ if (newDiagramButton.getSelection()) {
+ editor = getNewEditor(context, address);
}
- lastEditor.getDiagram().addRootElement(matches);
+ else {
+ editor = getExistingEditor(address);
+ if (editor == null) {
+ editor = getNewEditor(context, address);
+ }
+ }
+ editor.getDiagram().addRootElement(matches);
} catch (PartInitException ex) {
System.out.println(ex.getMessage());
}
+ }
+
+ private ObjectEditor getNewEditor(ObjectContext context, String address) throws PartInitException {
+ return (ObjectEditor) getViewSite().getPage().openEditor(new ObjectEditorInput(context, address), ObjectEditor.ID, true);
+ }
+
+ private ObjectEditor getExistingEditor(String address) {
+ for (IEditorReference editor : getViewSite().getPage().findEditors(null, ObjectEditor.ID, IWorkbenchPage.MATCH_ID)) {
+ try {
+ ObjectEditorInput input = (ObjectEditorInput) editor.getEditorInput();
+ if (input.getServerAddress().equals(address)) {
+ return (ObjectEditor) editor.getEditor(false);
+ }
+ } catch (PartInitException e) {
+ System.out.println("Error restoring editor: " + e.getMessage());
+ }
+ }
+ return null;
}
public void widgetDefaultSelected(SelectionEvent e) {
Modified: incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/wizards/SelectParametersPage.java
URL: http://svn.apache.org/viewvc/incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/wizards/SelectParametersPage.java?rev=427379&r1=427378&r2=427379&view=diff
==============================================================================
--- incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/wizards/SelectParametersPage.java (original)
+++ incubator/cayenne/soc/trunk/cayenne-rop/rop-browser/src/org/apache/cayenne/ropbrowser/wizards/SelectParametersPage.java Mon Jul 31 16:59:00 2006
@@ -58,6 +58,8 @@
private Button setButton;
+ private Button clearAllButton;
+
private Text parameterValue;
private Label errorLabel;
@@ -116,7 +118,11 @@
errorLabel = new Label(base, SWT.NULL);
errorLabel.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_RED));
- errorLabel.setLayoutData(fillSpan);
+ errorLabel.setLayoutData(fillGrab);
+
+ clearAllButton = new Button(base, SWT.PUSH | SWT.BORDER);
+ clearAllButton.setText("Clear all");
+ clearAllButton.addSelectionListener(this);
base.setLayout(layout);
@@ -135,7 +141,7 @@
}
private boolean isNextPage() {
- return (super.getNextPage() == null);
+ return (super.getNextPage() != null);
}
public void widgetDefaultSelected(SelectionEvent e) {
@@ -155,6 +161,12 @@
}
else if (e.getSource() == setButton) {
setParameterValue();
+ }
+ else if (e.getSource() == clearAllButton) {
+ for (TableItem item : attributeTable.getItems()) {
+ item.setData(null);
+ item.setBackground(attributeTable.getBackground());
+ }
}
}