Author: DartPeng
Date: 2009-08-20 05:51:23 -0400 (Thu, 20 Aug 2009)
New Revision: 17182
Added:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/ConnectionModelFactory.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/ConnectionModelFactoryImpl.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/GraphicalModelFactory.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/GraphicalModelFactoryImpl.java
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/validate/SelectorValidator.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/edimap/editor/EDIMapFormPage.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/gef/model/AbstractSmooksGraphicalModel.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/gef/tree/model/TreeNodeModel.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/SmooksGraphicalEditorPart.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/editparts/SmooksGraphUtil.java
Log:
JBIDE-4648
Fix a bug of synchronizing EMF model and GEF model
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/validate/SelectorValidator.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/validate/SelectorValidator.java 2009-08-20
09:31:30 UTC (rev 17181)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/validate/SelectorValidator.java 2009-08-20
09:51:23 UTC (rev 17182)
@@ -21,6 +21,7 @@
import org.eclipse.core.runtime.Path;
import org.eclipse.emf.common.util.Diagnostic;
import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.edit.domain.EditingDomain;
import org.jboss.tools.smooks.configuration.SmooksConfigurationActivator;
@@ -46,6 +47,8 @@
import org.jboss.tools.smooks.model.javabean.JavabeanPackage;
import org.jboss.tools.smooks.model.javabean.ValueType;
import org.jboss.tools.smooks.model.javabean.WiringType;
+import org.jboss.tools.smooks.model.javabean12.BeanType;
+import org.jboss.tools.smooks.model.javabean12.Javabean12Package;
import org.jboss.tools.smooks.model.jmsrouting.JmsRouter;
import org.jboss.tools.smooks.model.jmsrouting.JmsroutingPackage;
import org.jboss.tools.smooks.model.smooks.DocumentRoot;
@@ -86,40 +89,47 @@
*/
@Override
protected Diagnostic validateModel(Object model, EditingDomain editingDomain) {
- EAttribute feature = getAttribute(model);
- String path = getPath(model);
- if (path == null) {
- return null;
- }
- // if(feature != null && path == null){
- // return newWaringDiagnostic("Selector '" +path+ "' isn't
available",
- // model, feature);
- // }
- String sperator = "/";
- if (path.indexOf('/') == -1) {
- sperator = " ";
- }
- if (feature != null && path != null) {
- Object node = null;
- for (Iterator<?> iterator = list.iterator(); iterator.hasNext();) {
- Object obj = (Object) iterator.next();
- if (obj instanceof IXMLStructuredObject) {
- if (node == null) {
- try {
- node = SmooksUIUtils
- .localXMLNodeWithPath(path, (IXMLStructuredObject) obj, sperator, false);
- } catch (Throwable e) {
- SmooksConfigurationActivator.getDefault().log(e);
+ if (model instanceof EObject) {
+ EAttribute feature = getAttribute(model);
+ Object data = ((EObject)model).eGet(feature);
+ if(data == null){
+ return null;
+ }
+ String path = data.toString();
+// if (path == null) {
+// return null;
+// }
+ // if(feature != null && path == null){
+ // return newWaringDiagnostic("Selector '" +path+
+ // "' isn't available",
+ // model, feature);
+ // }
+ String sperator = "/";
+ if (path.indexOf('/') == -1) {
+ sperator = " ";
+ }
+ if (feature != null && path != null) {
+ Object node = null;
+ for (Iterator<?> iterator = list.iterator(); iterator.hasNext();) {
+ Object obj = (Object) iterator.next();
+ if (obj instanceof IXMLStructuredObject) {
+ if (node == null) {
+ try {
+ node = SmooksUIUtils.localXMLNodeWithPath(path, (IXMLStructuredObject) obj,
sperator,
+ false);
+ } catch (Throwable e) {
+ SmooksConfigurationActivator.getDefault().log(e);
+ }
}
+ if (node != null) {
+ return null;
+ }
}
- if (node != null) {
- return null;
- }
}
+ if (node == null) {
+ return newWaringDiagnostic("Selector '" + path + "' isn't
available", model, feature);
+ }
}
- if (node == null) {
- return newWaringDiagnostic("Selector '" + path + "' isn't
available", model, feature);
- }
}
return super.validateModel(model, editingDomain);
}
@@ -170,9 +180,27 @@
if (model instanceof ValueType) {
return JavabeanPackage.Literals.VALUE_TYPE__DATA;
}
+
+ if(model instanceof BeanType){
+ return Javabean12Package.Literals.BEAN_TYPE__CREATE_ON_ELEMENT;
+ }
+ if (model instanceof org.jboss.tools.smooks.model.javabean12.WiringType) {
+ return Javabean12Package.Literals.WIRING_TYPE__WIRE_ON_ELEMENT;
+ }
+ if (model instanceof org.jboss.tools.smooks.model.javabean12.ExpressionType) {
+ return Javabean12Package.Literals.EXPRESSION_TYPE__EXEC_ON_ELEMENT;
+ }
+ if (model instanceof org.jboss.tools.smooks.model.javabean12.ValueType) {
+ return Javabean12Package.Literals.VALUE_TYPE__DATA;
+ }
return null;
}
+ /**
+ * @deprecated
+ * @param model
+ * @return
+ */
private String getPath(Object model) {
if (model instanceof ExpressionType) {
return ((ExpressionType) model).getExecOnElement();
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/edimap/editor/EDIMapFormPage.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/edimap/editor/EDIMapFormPage.java 2009-08-20
09:31:30 UTC (rev 17181)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/edimap/editor/EDIMapFormPage.java 2009-08-20
09:51:23 UTC (rev 17182)
@@ -1123,7 +1123,7 @@
if (data == model) {
return treeNodeModel;
}
- AbstractSmooksGraphicalModel m = findEDIGraphicalModel(model,
treeNodeModel.getChildren());
+ AbstractSmooksGraphicalModel m = findEDIGraphicalModel(model,
treeNodeModel.getChildrenWithoutDynamic());
if (m != null) {
return m;
}
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/gef/model/AbstractSmooksGraphicalModel.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/gef/model/AbstractSmooksGraphicalModel.java 2009-08-20
09:31:30 UTC (rev 17181)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/gef/model/AbstractSmooksGraphicalModel.java 2009-08-20
09:51:23 UTC (rev 17182)
@@ -93,6 +93,13 @@
}
return children;
}
+
+ public List<AbstractSmooksGraphicalModel> getChildrenWithoutDynamic() {
+ if (children == null) {
+ children = new ArrayList<AbstractSmooksGraphicalModel>();
+ }
+ return children;
+ }
public static void disconnectAllConnections(AbstractSmooksGraphicalModel node) {
List<TreeNodeConnection> sourceConnections = node.getSourceConnections();
@@ -180,16 +187,16 @@
}
public void addChild(AbstractSmooksGraphicalModel node) {
- if (getChildren().indexOf(node) == -1) {
- getChildren().add(node);
+ if (getChildrenWithoutDynamic().indexOf(node) == -1) {
+ getChildrenWithoutDynamic().add(node);
node.setParent(this);
support.firePropertyChange(PRO_ADD_CHILD, null, node);
}
}
public void removeChild(AbstractSmooksGraphicalModel node) {
- if (getChildren().indexOf(node) != -1) {
- getChildren().remove(node);
+ if (getChildrenWithoutDynamic().indexOf(node) != -1) {
+ getChildrenWithoutDynamic().remove(node);
node.setParent(null);
support.firePropertyChange(PRO_REMOVE_CHILD, node, null);
}
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/gef/tree/model/TreeNodeModel.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/gef/tree/model/TreeNodeModel.java 2009-08-20
09:31:30 UTC (rev 17181)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/gef/tree/model/TreeNodeModel.java 2009-08-20
09:51:23 UTC (rev 17182)
@@ -5,6 +5,7 @@
import java.util.Iterator;
import java.util.List;
+import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.swt.graphics.Image;
@@ -73,6 +74,7 @@
if (models != null) {
for (int i = 0; i < models.length; i++) {
Object model = models[i];
+// model = AdapterFactoryEditingDomain.unwrap(model);
if (!childExsit(model)) {
TreeNodeModel n = createChildModel(model, contentProvider, labelProvider);
children.add(n);
Added:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/ConnectionModelFactory.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/ConnectionModelFactory.java
(rev 0)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/ConnectionModelFactory.java 2009-08-20
09:51:23 UTC (rev 17182)
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * Copyright (c) 2008 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at
http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.smooks.graphical.editors;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.jboss.tools.smooks.gef.common.RootModel;
+import org.jboss.tools.smooks.gef.model.AbstractSmooksGraphicalModel;
+import org.jboss.tools.smooks.gef.tree.model.TreeNodeConnection;
+
+/**
+ * @author Dart
+ *
+ */
+public interface ConnectionModelFactory {
+
+ public boolean hasBeanIDReferenceConnection(AbstractSmooksGraphicalModel model);
+
+ public TreeNodeConnection createBeanIDReferenceConnection(EObject rootModel, RootModel
root,
+ AbstractSmooksGraphicalModel model);
+
+ public List<TreeNodeConnection> createSelectorConnection(List<Object>
inputDataList, RootModel root,
+ AbstractSmooksGraphicalModel model);
+
+ public boolean hasSelectorConnection(AbstractSmooksGraphicalModel model);
+}
Property changes on:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/ConnectionModelFactory.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/ConnectionModelFactoryImpl.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/ConnectionModelFactoryImpl.java
(rev 0)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/ConnectionModelFactoryImpl.java 2009-08-20
09:51:23 UTC (rev 17182)
@@ -0,0 +1,92 @@
+/*******************************************************************************
+ * Copyright (c) 2008 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at
http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.smooks.graphical.editors;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
+import org.jboss.tools.smooks.configuration.editors.IXMLStructuredObject;
+import org.jboss.tools.smooks.gef.common.RootModel;
+import org.jboss.tools.smooks.gef.model.AbstractSmooksGraphicalModel;
+import org.jboss.tools.smooks.gef.tree.model.TreeNodeConnection;
+import org.jboss.tools.smooks.graphical.editors.editparts.SmooksGraphUtil;
+
+/**
+ * @author Dart
+ *
+ */
+public class ConnectionModelFactoryImpl implements ConnectionModelFactory {
+
+ public TreeNodeConnection createBeanIDReferenceConnection(EObject rootModel , RootModel
root,
+ AbstractSmooksGraphicalModel model) {
+ return null;
+ }
+
+ public boolean hasBeanIDReferenceConnection(AbstractSmooksGraphicalModel model) {
+ return false;
+ }
+
+ public boolean hasSelectorConnection(AbstractSmooksGraphicalModel model) {
+ Object data = model.getData();
+ data = AdapterFactoryEditingDomain.unwrap(data);
+ if (data instanceof EObject) {
+ return (SmooksGraphUtil.getSelectorFeature((EObject) data) != null);
+ }
+ return false;
+ }
+
+ public List<TreeNodeConnection> createSelectorConnection(List<Object>
inputDataList, RootModel root,
+ AbstractSmooksGraphicalModel model) {
+ Object data = model.getData();
+ data = AdapterFactoryEditingDomain.unwrap(data);
+ List<TreeNodeConnection> connections = new
ArrayList<TreeNodeConnection>();
+ if (data != null && data instanceof EObject) {
+ EStructuralFeature feature = SmooksGraphUtil.getSelectorFeature((EObject) data);
+ Object sd = ((EObject) data).eGet(feature);
+ if (sd != null) {
+ String selector = sd.toString();
+ if (inputDataList != null) {
+ for (Iterator<?> iterator = inputDataList.iterator(); iterator.hasNext();) {
+ Object obj = (Object) iterator.next();
+ if (obj instanceof IXMLStructuredObject) {
+ AbstractSmooksGraphicalModel sourceGraphModel =
SmooksGraphUtil.findInputGraphModel(
+ selector, (IXMLStructuredObject) obj, root);
+ if (sourceGraphModel != null) {
+ boolean canCreate = true;
+ List<TreeNodeConnection> tcs = model.getTargetConnections();
+ for (Iterator<?> iterator2 = tcs.iterator(); iterator2.hasNext();) {
+ TreeNodeConnection treeNodeConnection = (TreeNodeConnection) iterator2.next();
+ if (treeNodeConnection.getSourceNode() == sourceGraphModel) {
+ canCreate = false;
+ }
+ }
+ if (!canCreate) {
+ break;
+ }
+ TreeNodeConnection connection = new TreeNodeConnection(sourceGraphModel, model);
+ sourceGraphModel.getSourceConnections().add(connection);
+ sourceGraphModel.fireConnectionChanged();
+ model.getTargetConnections().add(connection);
+ model.fireConnectionChanged();
+ connections.add(connection);
+ }
+ }
+ }
+ }
+ }
+ }
+ return connections;
+ }
+}
Property changes on:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/ConnectionModelFactoryImpl.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/GraphicalModelFactory.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/GraphicalModelFactory.java
(rev 0)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/GraphicalModelFactory.java 2009-08-20
09:51:23 UTC (rev 17182)
@@ -0,0 +1,21 @@
+/*******************************************************************************
+ * Copyright (c) 2008 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at
http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.smooks.graphical.editors;
+
+import org.jboss.tools.smooks.editor.ISmooksModelProvider;
+
+/**
+ * @author Dart
+ *
+ */
+public interface GraphicalModelFactory {
+ public Object createGraphicalModel(Object model, ISmooksModelProvider provider);
+}
Property changes on:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/GraphicalModelFactory.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/GraphicalModelFactoryImpl.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/GraphicalModelFactoryImpl.java
(rev 0)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/GraphicalModelFactoryImpl.java 2009-08-20
09:51:23 UTC (rev 17182)
@@ -0,0 +1,52 @@
+/*******************************************************************************
+ * Copyright (c) 2008 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at
http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.smooks.graphical.editors;
+
+import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.jboss.tools.smooks.editor.ISmooksModelProvider;
+import org.jboss.tools.smooks.gef.model.AbstractSmooksGraphicalModel;
+import org.jboss.tools.smooks.graphical.editors.model.JavaBeanGraphModel;
+import org.jboss.tools.smooks.model.common.AbstractAnyType;
+import org.jboss.tools.smooks.model.javabean.BindingsType;
+import org.jboss.tools.smooks.model.javabean12.BeanType;
+
+/**
+ * @author Dart
+ *
+ */
+public class GraphicalModelFactoryImpl implements GraphicalModelFactory{
+ public Object createGraphicalModel(Object model, ISmooksModelProvider provider) {
+ AbstractSmooksGraphicalModel graphModel = null;
+ if (model instanceof BindingsType || model instanceof BeanType) {
+ AdapterFactoryEditingDomain editingDomain = (AdapterFactoryEditingDomain) provider
+ .getEditingDomain();
+ ITreeContentProvider contentProvider = new
AdapterFactoryContentProvider(editingDomain.getAdapterFactory());
+ ILabelProvider labelProvider = new
AdapterFactoryLabelProvider(editingDomain.getAdapterFactory()) {
+ @Override
+ public String getText(Object object) {
+ Object obj = AdapterFactoryEditingDomain.unwrap(object);
+ if (obj instanceof AbstractAnyType) {
+ return super.getText(obj);
+ }
+ return super.getText(object);
+ }
+
+ };
+ graphModel = new JavaBeanGraphModel(model, contentProvider, labelProvider, provider);
+ ((JavaBeanGraphModel) graphModel).setHeaderVisable(true);
+ }
+ return graphModel;
+ }
+}
Property changes on:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/GraphicalModelFactoryImpl.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/SmooksGraphicalEditorPart.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/SmooksGraphicalEditorPart.java 2009-08-20
09:31:30 UTC (rev 17181)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/SmooksGraphicalEditorPart.java 2009-08-20
09:51:23 UTC (rev 17182)
@@ -26,8 +26,6 @@
import org.eclipse.emf.edit.command.DeleteCommand;
import org.eclipse.emf.edit.command.SetCommand;
import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
-import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider;
-import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
import org.eclipse.gef.DefaultEditDomain;
import org.eclipse.gef.EditPart;
import org.eclipse.gef.commands.CommandStackEvent;
@@ -71,11 +69,9 @@
import org.jboss.tools.smooks.graphical.editors.model.InputDataTreeNodeModel;
import org.jboss.tools.smooks.graphical.editors.model.JavaBeanChildGraphModel;
import org.jboss.tools.smooks.graphical.editors.model.JavaBeanGraphModel;
-import org.jboss.tools.smooks.model.common.AbstractAnyType;
import org.jboss.tools.smooks.model.graphics.ext.FigureType;
import org.jboss.tools.smooks.model.graphics.ext.GraphType;
import org.jboss.tools.smooks.model.graphics.ext.SmooksGraphicsExtType;
-import org.jboss.tools.smooks.model.javabean.BindingsType;
import org.jboss.tools.smooks.model.smooks.DocumentRoot;
import org.jboss.tools.smooks.model.smooks.SmooksResourceListType;
import org.jboss.tools.smooks10.model.smooks.util.SmooksModelUtils;
@@ -84,8 +80,15 @@
* @author Dart
*
*/
-public class SmooksGraphicalEditorPart extends GraphicalEditor implements
ISelectionChangedListener ,ISourceSynchronizeListener {
+public class SmooksGraphicalEditorPart extends GraphicalEditor implements
ISelectionChangedListener,
+ ISourceSynchronizeListener {
+ public static final int EXECUTE_COMMAND = 0;
+
+ public static final int REDO_COMMAND = 1;
+
+ public static final int UNDO_COMMAND = 2;
+
private DefaultEditDomain editDomain = null;
private ISmooksModelProvider smooksModelProvider = null;
@@ -96,6 +99,10 @@
private List<Object> inputDataList = null;
+ private GraphicalModelFactory graphicalModelFactory;
+
+ private ConnectionModelFactory connectionModelFactory;
+
public SmooksGraphicalEditorPart(ISmooksModelProvider provider) {
super();
this.editDomain = new DefaultEditDomain(this);
@@ -114,16 +121,27 @@
public void commandStackChanged(EventObject event) {
final Command mostRecentCommand = ((org.eclipse.emf.common.command.CommandStack)
event.getSource())
.getMostRecentCommand();
+ final EventObject fe = event;
getEditorSite().getShell().getDisplay().asyncExec(new Runnable() {
public void run() {
if (mostRecentCommand != null) {
Command rawCommand = mostRecentCommand;
+ int commandType = EXECUTE_COMMAND;
+ if (rawCommand == ((org.eclipse.emf.common.command.CommandStack) fe.getSource())
+ .getUndoCommand()) {
+ commandType = EXECUTE_COMMAND;
+ }
+ if (rawCommand == ((org.eclipse.emf.common.command.CommandStack) fe.getSource())
+ .getRedoCommand()) {
+ commandType = UNDO_COMMAND;
+ }
while (rawCommand instanceof CommandWrapper) {
rawCommand = ((CommandWrapper) rawCommand).getCommand();
}
if (rawCommand instanceof SetCommand || rawCommand instanceof AddCommand
|| rawCommand instanceof DeleteCommand) {
- refershRecentAffectedModel(rawCommand, mostRecentCommand.getAffectedObjects());
+ refershRecentAffectedModel(rawCommand, mostRecentCommand.getAffectedObjects(),
+ commandType);
}
}
}
@@ -133,6 +151,36 @@
});
}
+ public ConnectionModelFactory getConnectionModelFactory() {
+ if (connectionModelFactory == null) {
+ connectionModelFactory = createConnectionModelFactory();
+ }
+ return connectionModelFactory;
+ }
+
+ private ConnectionModelFactory createConnectionModelFactory() {
+ return new ConnectionModelFactoryImpl();
+ }
+
+ public void setConnectionModelFactory(ConnectionModelFactory connectionModelFactory) {
+ this.connectionModelFactory = connectionModelFactory;
+ }
+
+ public GraphicalModelFactory getGraphicalModelFactory() {
+ if (graphicalModelFactory == null) {
+ graphicalModelFactory = createGraphicalModelFactory();
+ }
+ return graphicalModelFactory;
+ }
+
+ private GraphicalModelFactory createGraphicalModelFactory() {
+ return new GraphicalModelFactoryImpl();
+ }
+
+ public void setGraphicalModelFactory(GraphicalModelFactoryImpl graphicalModelFactory) {
+ this.graphicalModelFactory = graphicalModelFactory;
+ }
+
@Override
protected void createActions() {
super.createActions();
@@ -172,82 +220,112 @@
}
}
- protected void refershRecentAffectedModel(Command command, Collection<?>
affectedObjects) {
+ protected void refershRecentAffectedModel(Command command, Collection<?>
affectedObjects, int commandType) {
for (Iterator<?> iterator = affectedObjects.iterator(); iterator.hasNext();) {
Object object = (Object) iterator.next();
object = AdapterFactoryEditingDomain.unwrap(object);
- if (object == this.smooksResourceList) {
- if (command instanceof AddCommand) {
- Collection<?> colletion = ((AddCommand) command).getCollection();
- for (Iterator<?> iterator2 = colletion.iterator(); iterator2.hasNext();) {
- Object childModel = (Object) iterator2.next();
- childModel = AdapterFactoryEditingDomain.unwrap(childModel);
- AbstractSmooksGraphicalModel graphModel = createGraphModel(childModel);
- if (graphModel == null)
+ if (commandType == EXECUTE_COMMAND || commandType == REDO_COMMAND) {
+ if (object instanceof SmooksResourceListType) {
+ if (command instanceof AddCommand) {
+ Collection<?> colletion = ((AddCommand) command).getCollection();
+ for (Iterator<?> iterator2 = colletion.iterator(); iterator2.hasNext();) {
+ Object childModel = (Object) iterator2.next();
+ childModel = AdapterFactoryEditingDomain.unwrap(childModel);
+ AbstractSmooksGraphicalModel graphModel = createGraphModel(childModel);
+ if (graphModel == null)
+ continue;
+ root.addTreeNode(graphModel);
+ List<TreeNodeConnection> connections = createAllConnection(graphModel);
+ expandConnectedModels(connections);
+ }
+ }
+ if (command instanceof DeleteCommand) {
+ Collection<?> colletion = ((DeleteCommand) command).getCollection();
+ for (Iterator<?> iterator2 = colletion.iterator(); iterator2.hasNext();) {
+ Object childModel = (Object) iterator2.next();
+ childModel = AdapterFactoryEditingDomain.unwrap(childModel);
+ AbstractSmooksGraphicalModel graphModel = findGraphicalModel(childModel);
+ if (graphModel == null)
+ continue;
+ AbstractSmooksGraphicalModel.disconnectAllConnections(graphModel);
+ root.removeTreeNode(graphModel);
+ }
+ }
+ } else {
+ object = AdapterFactoryEditingDomain.unwrap(object);
+ AbstractSmooksGraphicalModel node = findGraphicalModel(object);
+ if (command instanceof SetCommand) {
+ if (node == null) {
continue;
- List<TreeNodeConnection> connections = createAllConnection(graphModel);
- expandConnectedModels(connections);
+ }
+ node.fireVisualChanged();
+ EStructuralFeature feature = ((SetCommand) command).getFeature();
+ if (SmooksUIUtils.isRelatedConnectionFeature(feature)) {
+ deleteRelatedConnection(node, feature, (SetCommand) command);
+ List<TreeNodeConnection> connections = createConnection(node);
+ node.fireConnectionChanged();
+ expandConnectedModels(connections);
+ }
}
- }
- if (command instanceof DeleteCommand) {
- Collection<?> colletion = ((DeleteCommand) command).getCollection();
- for (Iterator<?> iterator2 = colletion.iterator(); iterator2.hasNext();) {
- Object childModel = (Object) iterator2.next();
- childModel = AdapterFactoryEditingDomain.unwrap(childModel);
- AbstractSmooksGraphicalModel graphModel = findGraphicalModel(childModel);
- if (graphModel == null)
+ if (command instanceof AddCommand) {
+ Object owner = ((AddCommand) command).getOwner();
+ owner = AdapterFactoryEditingDomain.unwrap(owner);
+ if (owner instanceof SmooksResourceListType) {
+ AbstractSmooksGraphicalModel graphModel = createGraphModel(object);
+ if (graphModel == null)
+ continue;
+ root.addTreeNode(graphModel);
+ List<TreeNodeConnection> connections = createAllConnection(graphModel);
+ expandConnectedModels(connections);
+ } else {
+ AbstractSmooksGraphicalModel ownerGraph = findGraphicalModel(owner);
+ if (ownerGraph != null) {
+ ownerGraph.fireChildrenChanged();
+ }
+ }
+ if (node == null) {
continue;
- AbstractSmooksGraphicalModel.disconnectAllConnections(graphModel);
- root.removeTreeNode(graphModel);
+ }
+ node.fireChildrenChanged();
+ node.fireConnectionChanged();
}
+ if (command instanceof DeleteCommand) {
+ Object owner = ((EObject) object).eContainer();
+ owner = AdapterFactoryEditingDomain.unwrap(owner);
+ AbstractSmooksGraphicalModel ownerGraph = findGraphicalModel(owner);
+ if (ownerGraph != null) {
+ ownerGraph.fireChildrenChanged();
+ }
+ }
}
- } else {
+ continue;
+ }
+
+ if (commandType == UNDO_COMMAND) {
object = AdapterFactoryEditingDomain.unwrap(object);
AbstractSmooksGraphicalModel node = findGraphicalModel(object);
- if (node == null) {
- if (command instanceof DeleteCommand || command instanceof AddCommand) {
- Collection<?> cccc = null;
- if (command instanceof DeleteCommand) {
- cccc = ((DeleteCommand) command).getCollection();
- }
- if (command instanceof AddCommand) {
- cccc = ((AddCommand) command).getCollection();
- }
+ if (command instanceof AddCommand) {
+ if (object instanceof SmooksResourceListType) {
+ Collection<?> cccc = ((AddCommand) command).getCollection();
for (Iterator<?> iterator2 = cccc.iterator(); iterator2.hasNext();) {
Object object2 = (Object) iterator2.next();
object2 = AdapterFactoryEditingDomain.unwrap(object2);
- if (object == object2) {
- EObject owner = ((EObject) object).eContainer();
- if (owner == this.smooksResourceList) {
- object = AdapterFactoryEditingDomain.unwrap(object);
- AbstractSmooksGraphicalModel graphModel = createGraphModel(object);
- if (graphModel == null)
- continue;
- List<TreeNodeConnection> connections = createAllConnection(graphModel);
- expandConnectedModels(connections);
- if (graphModel instanceof IMoveableModel) {
- String id = SmooksGraphUtil.generateFigureID(graphModel);
- if (id != null) {
- FigureType ft = SmooksModelUtils.findFigureType(smooksModelProvider
- .getSmooksGraphicsExt().getGraph(), id);
- try {
- int x = Integer.parseInt(ft.getX());
- int y = Integer.parseInt(ft.getY());
- ((IMoveableModel) graphModel).setLocation(new Point(x, y));
- } catch (Throwable t) {
- continue;
- }
- }
- }
- }
+ AbstractSmooksGraphicalModel gmodel = findGraphicalModel(object2);
+ if (gmodel != null) {
+ root.removeTreeNode(gmodel);
break;
}
}
} else {
- continue;
+ if (node != null) {
+ node.fireChildrenChanged();
+ }
}
}
if (command instanceof SetCommand) {
+ if (node == null) {
+ continue;
+ }
node.fireVisualChanged();
EStructuralFeature feature = ((SetCommand) command).getFeature();
if (SmooksUIUtils.isRelatedConnectionFeature(feature)) {
@@ -257,26 +335,54 @@
expandConnectedModels(connections);
}
}
- if (command instanceof AddCommand) {
- Object owner = ((AddCommand) command).getOwner();
- owner = AdapterFactoryEditingDomain.unwrap(owner);
- AbstractSmooksGraphicalModel ownerGraph = findGraphicalModel(owner);
- if (ownerGraph != null) {
- ownerGraph.fireChildrenChanged();
- }
- node.fireChildrenChanged();
- node.fireConnectionChanged();
- }
if (command instanceof DeleteCommand) {
- Object owner = ((EObject)object).eContainer();
- owner = AdapterFactoryEditingDomain.unwrap(owner);
- AbstractSmooksGraphicalModel ownerGraph = findGraphicalModel(owner);
- if (ownerGraph != null) {
- ownerGraph.fireChildrenChanged();
+ Collection<?> cccc = null;
+ if (command instanceof DeleteCommand) {
+ cccc = ((DeleteCommand) command).getCollection();
}
- node.fireChildrenChanged();
- node.fireConnectionChanged();
+ for (Iterator<?> iterator2 = cccc.iterator(); iterator2.hasNext();) {
+ Object object2 = (Object) iterator2.next();
+ object2 = AdapterFactoryEditingDomain.unwrap(object2);
+ // it means that it's deletecommand undo
+ if (object == object2) {
+ EObject owner = ((EObject) object).eContainer();
+ if (owner instanceof SmooksResourceListType) {
+ object = AdapterFactoryEditingDomain.unwrap(object);
+ AbstractSmooksGraphicalModel graphModel = createGraphModel(object);
+ if (graphModel == null)
+ continue;
+ node = graphModel;
+ root.addTreeNode(graphModel);
+ List<TreeNodeConnection> connections = createAllConnection(graphModel);
+ expandConnectedModels(connections);
+ if (graphModel instanceof IMoveableModel) {
+ String id = SmooksGraphUtil.generateFigureID(graphModel);
+ if (id != null) {
+ FigureType ft = SmooksModelUtils.findFigureType(smooksModelProvider
+ .getSmooksGraphicsExt().getGraph(), id);
+ try {
+ int x = Integer.parseInt(ft.getX());
+ int y = Integer.parseInt(ft.getY());
+ ((IMoveableModel) graphModel).setLocation(new Point(x, y));
+ } catch (Throwable t) {
+ continue;
+ }
+ }
+ }
+ } else {
+ AbstractSmooksGraphicalModel ownernode = findGraphicalModel(owner);
+ ownernode.fireChildrenChanged();
+ node = findGraphicalModel(object);
+ if (node == null)
+ continue;
+ List<TreeNodeConnection> connections = createAllConnection(node);
+ expandConnectedModels(connections);
+ }
+ break;
+ }
+ }
}
+ continue;
}
}
}
@@ -302,7 +408,7 @@
if (AdapterFactoryEditingDomain.unwrap(graph.getData()) == object) {
return graph;
}
- List<?> children = graph.getChildren();
+ List<?> children = graph.getChildrenWithoutDynamic();
for (Iterator<?> iterator = children.iterator(); iterator.hasNext();) {
Object child = (Object) iterator.next();
if (child instanceof AbstractSmooksGraphicalModel) {
@@ -360,7 +466,7 @@
root = new RootModel();
} else {
root.removeAllTreeNode();
-
+
}
Object obj = smooksModelProvider.getSmooksModel();
AdapterFactoryEditingDomain editingDomain = (AdapterFactoryEditingDomain)
smooksModelProvider
@@ -384,12 +490,14 @@
root.addTreeNode(container);
}
}
- // to find Bean v1.2
SmooksResourceListType listType = ((DocumentRoot) obj).getSmooksResourceList();
List<?> arcList = listType.getAbstractResourceConfig();
for (Iterator<?> iterator = arcList.iterator(); iterator.hasNext();) {
Object object = (Object) iterator.next();
- createGraphModel(object);
+ AbstractSmooksGraphicalModel gmodel = createGraphModel(object);
+ if (gmodel != null) {
+ root.addTreeNode(gmodel);
+ }
}
getGraphicalViewer().setContents(root);
}
@@ -406,27 +514,14 @@
}
protected AbstractSmooksGraphicalModel createGraphModel(Object model) {
- AbstractSmooksGraphicalModel graphModel = null;
- if (model instanceof BindingsType) {
- AdapterFactoryEditingDomain editingDomain = (AdapterFactoryEditingDomain)
smooksModelProvider
- .getEditingDomain();
- ITreeContentProvider contentProvider = new
AdapterFactoryContentProvider(editingDomain.getAdapterFactory());
- ILabelProvider labelProvider = new
AdapterFactoryLabelProvider(editingDomain.getAdapterFactory()) {
- @Override
- public String getText(Object object) {
- Object obj = AdapterFactoryEditingDomain.unwrap(object);
- if (obj instanceof AbstractAnyType) {
- return super.getText(obj);
- }
- return super.getText(object);
- }
-
- };
- graphModel = new JavaBeanGraphModel(model, contentProvider, labelProvider,
this.smooksModelProvider);
- ((JavaBeanGraphModel) graphModel).setHeaderVisable(true);
- root.addTreeNode(graphModel);
+ GraphicalModelFactory factory = getGraphicalModelFactory();
+ if (factory != null) {
+ Object gmodel = factory.createGraphicalModel(model, smooksModelProvider);
+ if (gmodel != null && gmodel instanceof AbstractSmooksGraphicalModel) {
+ return (AbstractSmooksGraphicalModel) gmodel;
+ }
}
- return graphModel;
+ return null;
}
protected List<TreeNodeConnection> createConnectionModel() {
@@ -457,17 +552,22 @@
}
protected List<TreeNodeConnection> createConnection(AbstractSmooksGraphicalModel
model) {
+ ConnectionModelFactory connectionModelFactory = getConnectionModelFactory();
List<TreeNodeConnection> cs = new ArrayList<TreeNodeConnection>();
- if (hasSelectorConnection(model)) {
- List<TreeNodeConnection> cList = createSelectorConnection(model);
- if (cList != null) {
- cs.addAll(cList);
+ if (connectionModelFactory != null) {
+ if (connectionModelFactory.hasSelectorConnection(model)) {
+ List<TreeNodeConnection> cList =
connectionModelFactory.createSelectorConnection(inputDataList, root,
+ model);
+ if (cList != null) {
+ cs.addAll(cList);
+ }
}
- }
- if (hasBeanIDReferenceConnection(model)) {
- TreeNodeConnection c = createBeanIDReferenceConnection(model);
- if (c != null) {
- cs.add(c);
+ if (connectionModelFactory.hasBeanIDReferenceConnection(model)) {
+ TreeNodeConnection c =
connectionModelFactory.createBeanIDReferenceConnection(smooksModelProvider
+ .getSmooksModel(), root, model);
+ if (c != null) {
+ cs.add(c);
+ }
}
}
if (cs.isEmpty())
@@ -475,68 +575,6 @@
return cs;
}
- private TreeNodeConnection createBeanIDReferenceConnection(AbstractSmooksGraphicalModel
model) {
- // TODO Auto-generated method stub
- return null;
- }
-
- private List<TreeNodeConnection>
createSelectorConnection(AbstractSmooksGraphicalModel model) {
- Object data = model.getData();
- data = AdapterFactoryEditingDomain.unwrap(data);
- List<TreeNodeConnection> connections = new
ArrayList<TreeNodeConnection>();
- if (data != null && data instanceof EObject) {
- EStructuralFeature feature = SmooksGraphUtil.getSelectorFeature((EObject) data);
- Object sd = ((EObject) data).eGet(feature);
- if (sd != null) {
- String selector = sd.toString();
- if (inputDataList != null) {
- for (Iterator<?> iterator = inputDataList.iterator(); iterator.hasNext();) {
- Object obj = (Object) iterator.next();
- if (obj instanceof IXMLStructuredObject) {
- AbstractSmooksGraphicalModel sourceGraphModel =
SmooksGraphUtil.findInputGraphModel(
- selector, (IXMLStructuredObject) obj, root);
- if (sourceGraphModel != null) {
- boolean canCreate = true;
- List<TreeNodeConnection> tcs = model.getTargetConnections();
- for (Iterator<?> iterator2 = tcs.iterator(); iterator2.hasNext();) {
- TreeNodeConnection treeNodeConnection = (TreeNodeConnection) iterator2.next();
- if (treeNodeConnection.getSourceNode() == sourceGraphModel) {
- canCreate = false;
- }
- }
-
- if (!canCreate) {
- break;
- }
-
- TreeNodeConnection connection = new TreeNodeConnection(sourceGraphModel, model);
- sourceGraphModel.getSourceConnections().add(connection);
- sourceGraphModel.fireConnectionChanged();
- model.getTargetConnections().add(connection);
- model.fireConnectionChanged();
- connections.add(connection);
- }
- }
- }
- }
- }
- }
- return connections;
- }
-
- private boolean hasSelectorConnection(AbstractSmooksGraphicalModel model) {
- Object data = model.getData();
- data = AdapterFactoryEditingDomain.unwrap(data);
- if (data instanceof EObject) {
- return (SmooksGraphUtil.getSelectorFeature((EObject) data) != null);
- }
- return false;
- }
-
- private boolean hasBeanIDReferenceConnection(AbstractSmooksGraphicalModel model) {
- return false;
- }
-
private void createConnection(List<AbstractSmooksGraphicalModel> children,
List<TreeNodeConnection> connections) {
for (Iterator<?> iterator = children.iterator(); iterator.hasNext();) {
AbstractSmooksGraphicalModel abstractSmooksGraphicalModel =
(AbstractSmooksGraphicalModel) iterator.next();
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/editparts/SmooksGraphUtil.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/editparts/SmooksGraphUtil.java 2009-08-20
09:31:30 UTC (rev 17181)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/editparts/SmooksGraphUtil.java 2009-08-20
09:51:23 UTC (rev 17182)
@@ -16,6 +16,7 @@
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
import org.jboss.tools.smooks.configuration.editors.IXMLStructuredObject;
import org.jboss.tools.smooks.configuration.editors.uitls.SmooksUIUtils;
import org.jboss.tools.smooks.gef.common.RootModel;
@@ -25,6 +26,8 @@
import org.jboss.tools.smooks.model.javabean.JavabeanPackage;
import org.jboss.tools.smooks.model.javabean.ValueType;
import org.jboss.tools.smooks.model.javabean.WiringType;
+import org.jboss.tools.smooks.model.javabean12.BeanType;
+import org.jboss.tools.smooks.model.javabean12.Javabean12Package;
/**
* @author Dart
@@ -34,6 +37,7 @@
public static String generateFigureID(AbstractSmooksGraphicalModel model) {
Object data = model.getData();
+ data = AdapterFactoryEditingDomain.unwrap(data);
if (data instanceof BindingsType) {
String beanId = ((BindingsType) data).getBeanId();
if (beanId == null) {
@@ -42,6 +46,16 @@
beanId = beanId.trim();
return "BindingsType_" + beanId;
}
+
+ if (data instanceof BeanType) {
+ String beanId = ((BeanType) data).getBeanId();
+ if (beanId == null) {
+ return null;
+ }
+ beanId = beanId.trim();
+ return "BeanType" + beanId;
+ }
+
if (data instanceof IXMLStructuredObject) {
List<?> children = ((IXMLStructuredObject) data).getChildren();
if (children == null || children.isEmpty()) {
@@ -60,6 +74,7 @@
public static EStructuralFeature getSelectorFeature(EObject obj) {
if (obj == null)
return null;
+ // for javabean 1.1
if (obj instanceof BindingsType) {
return JavabeanPackage.Literals.BINDINGS_TYPE__CREATE_ON_ELEMENT;
}
@@ -69,6 +84,18 @@
if(obj instanceof WiringType){
return JavabeanPackage.Literals.WIRING_TYPE__WIRE_ON_ELEMENT;
}
+
+ // for javabean 1.2
+
+ if(obj instanceof BeanType){
+ return Javabean12Package.Literals.BEAN_TYPE__CREATE_ON_ELEMENT;
+ }
+ if(obj instanceof org.jboss.tools.smooks.model.javabean12.ValueType){
+ return Javabean12Package.Literals.VALUE_TYPE__DATA;
+ }
+ if(obj instanceof org.jboss.tools.smooks.model.javabean12.WiringType){
+ return Javabean12Package.Literals.WIRING_TYPE__WIRE_ON_ELEMENT;
+ }
return null;
}