Author: DartPeng
Date: 2009-08-21 11:10:28 -0400 (Fri, 21 Aug 2009)
New Revision: 17224
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/uitls/SmooksUIUtils.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/validate/BeanIdRefValidator.java
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/gef/tree/editparts/CreateConnectionCommand.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/gef/tree/editpolicy/TreeNodeGraphicalNodeEditPolicy.java
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/SmooksGraphicalEditorPart.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/editparts/JavaBeanChildNodeEditPart.java
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/model/JavaBeanChildGraphModel.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/JavaBeanGraphModel.java
Log:
JBIDE-4648
Create "Bean ID" connections
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/uitls/SmooksUIUtils.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/uitls/SmooksUIUtils.java 2009-08-21
15:04:44 UTC (rev 17223)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/uitls/SmooksUIUtils.java 2009-08-21
15:10:28 UTC (rev 17224)
@@ -124,6 +124,7 @@
import org.jboss.tools.smooks.configuration.editors.OpenFileHyperLinkListener;
import org.jboss.tools.smooks.configuration.editors.SelectorAttributes;
import org.jboss.tools.smooks.configuration.editors.SelectorCreationDialog;
+import org.jboss.tools.smooks.configuration.editors.groovy.GroovyUICreator;
import org.jboss.tools.smooks.configuration.editors.javabean.JavaBeanModel;
import org.jboss.tools.smooks.configuration.editors.javabean.JavaMethodsSelectionDialog;
import
org.jboss.tools.smooks.configuration.editors.javabean.JavaPropertiesSelectionDialog;
@@ -133,9 +134,17 @@
import org.jboss.tools.smooks.core.SmooksCoreActivator;
import org.jboss.tools.smooks.gef.tree.editparts.TreeNodeEditPart;
import org.jboss.tools.smooks.gef.tree.model.TreeNodeModel;
+import org.jboss.tools.smooks.model.calc.CalcPackage;
+import org.jboss.tools.smooks.model.calc.Counter;
+import org.jboss.tools.smooks.model.datasource.DatasourcePackage;
+import org.jboss.tools.smooks.model.datasource.Direct;
+import org.jboss.tools.smooks.model.esbrouting.EsbroutingPackage;
+import org.jboss.tools.smooks.model.esbrouting.RouteBean;
+import org.jboss.tools.smooks.model.fileRouting.FileRoutingPackage;
+import org.jboss.tools.smooks.model.fileRouting.OutputStream;
import org.jboss.tools.smooks.model.freemarker.BindTo;
import org.jboss.tools.smooks.model.freemarker.Freemarker;
-import org.jboss.tools.smooks.model.freemarker.Use;
+import org.jboss.tools.smooks.model.freemarker.FreemarkerPackage;
import org.jboss.tools.smooks.model.graphics.ext.GraphFactory;
import org.jboss.tools.smooks.model.graphics.ext.ISmooksGraphChangeListener;
import org.jboss.tools.smooks.model.graphics.ext.InputType;
@@ -143,14 +152,26 @@
import org.jboss.tools.smooks.model.graphics.ext.SmooksGraphExtensionDocumentRoot;
import org.jboss.tools.smooks.model.graphics.ext.SmooksGraphicsExtType;
import org.jboss.tools.smooks.model.graphics.ext.util.GraphResourceFactoryImpl;
+import org.jboss.tools.smooks.model.groovy.GroovyPackage;
import org.jboss.tools.smooks.model.javabean.BindingsType;
+import org.jboss.tools.smooks.model.javabean.ExpressionType;
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.jmsrouting12.JMS12Router;
+import org.jboss.tools.smooks.model.jmsrouting12.Jmsrouting12Package;
import org.jboss.tools.smooks.model.smooks.AbstractReader;
import org.jboss.tools.smooks.model.smooks.AbstractResourceConfig;
import org.jboss.tools.smooks.model.smooks.ConditionType;
+import org.jboss.tools.smooks.model.smooks.ResourceConfigType;
+import org.jboss.tools.smooks.model.smooks.SmooksPackage;
import org.jboss.tools.smooks.model.smooks.SmooksResourceListType;
import org.jboss.tools.smooks.model.xsl.Xsl;
+import org.jboss.tools.smooks.model.xsl.XslPackage;
import org.jboss.tools.smooks10.model.smooks.util.SmooksModelUtils;
/**
@@ -183,50 +204,118 @@
public static final String[] SELECTOR_SPERATORS = new String[] { " ",
"/" };
+ private static void fillBeanIdStringList(EObject model, final Collection<String>
beanIdList) {
+ EStructuralFeature beanIDFeature = getBeanIDFeature(model);
+ if (beanIDFeature != null) {
+ Object data = model.eGet(beanIDFeature);
+ if (data != null) {
+ String beanId = data.toString();
+ if (!beanIdList.contains(beanId))
+ beanIdList.add(beanId);
+ }
+ }
+ List<EObject> children = model.eContents();
+ for (Iterator<?> iterator = children.iterator(); iterator.hasNext();) {
+ EObject eObject = (EObject) iterator.next();
+ fillBeanIdStringList(eObject, beanIdList);
+ }
+ }
+
+ public static Collection<EObject> getBeanIdModelList(EObject model) {
+ List<EObject> beanIdModelList = new ArrayList<EObject>();
+ fillBeanIdModelList(model, beanIdModelList);
+ return beanIdModelList;
+ }
+
+ public static void fillBeanIdModelList(EObject model, final List<EObject> list) {
+ EStructuralFeature beanIDFeature = getBeanIDFeature(model);
+ if (beanIDFeature != null) {
+ list.add(model);
+ }
+ List<EObject> children = model.eContents();
+ for (Iterator<?> iterator = children.iterator(); iterator.hasNext();) {
+ EObject eObject = (EObject) iterator.next();
+ fillBeanIdModelList(eObject, list);
+ }
+ }
+
+ public static Collection<EObject> getBeanIdRefModelList(EObject model) {
+ List<EObject> beanIdRefModelList = new ArrayList<EObject>();
+ fillBeanIdRefModelList(model, beanIdRefModelList);
+ return beanIdRefModelList;
+ }
+
+ private static void fillBeanIdRefModelList(EObject model, List<EObject>
beanIdRefModelList) {
+ EStructuralFeature beanIDRefFeature = getBeanIDRefFeature(model);
+ if (beanIDRefFeature != null) {
+ beanIdRefModelList.add(model);
+ }
+ List<EObject> children = model.eContents();
+ for (Iterator<?> iterator = children.iterator(); iterator.hasNext();) {
+ EObject eObject = (EObject) iterator.next();
+ fillBeanIdRefModelList(eObject, beanIdRefModelList);
+ }
+ }
+
public static List<String> getBeanIdStringList(SmooksResourceListType
resourceList) {
if (resourceList == null) {
return null;
}
- List<AbstractResourceConfig> rlist = resourceList.getAbstractResourceConfig();
List<String> beanIdList = new ArrayList<String>();
- for (Iterator<?> iterator = rlist.iterator(); iterator.hasNext();) {
- AbstractResourceConfig abstractResourceConfig = (AbstractResourceConfig)
iterator.next();
- if (abstractResourceConfig instanceof BindingsType) {
- String beanId = ((BindingsType) abstractResourceConfig).getBeanId();
- if (beanId == null)
- continue;
- if (!beanIdList.contains(beanId))
- beanIdList.add(beanId);
- }
- if (abstractResourceConfig instanceof Freemarker) {
- Use use = ((Freemarker) abstractResourceConfig).getUse();
- if (use != null) {
- BindTo bindTo = use.getBindTo();
- if (bindTo != null) {
- String beanId = ((BindTo) bindTo).getId();
- if (beanId == null)
- continue;
- if (!beanIdList.contains(beanId))
- beanIdList.add(beanId);
- }
- }
- }
- if (abstractResourceConfig instanceof Xsl) {
- org.jboss.tools.smooks.model.xsl.Use use = ((Xsl) abstractResourceConfig).getUse();
- if (use != null) {
- org.jboss.tools.smooks.model.xsl.BindTo bindTo = use.getBindTo();
- if (bindTo != null) {
- String beanId = ((org.jboss.tools.smooks.model.xsl.BindTo) bindTo).getId();
- if (beanId == null)
- continue;
- if (!beanIdList.contains(beanId))
- beanIdList.add(beanId);
- }
- }
+ fillBeanIdStringList(resourceList, beanIdList);
- }
- }
+ // for (Iterator<?> iterator = rlist.iterator(); iterator.hasNext();) {
+ // AbstractResourceConfig abstractResourceConfig =
+ // (AbstractResourceConfig) iterator.next();
+ // EStructuralFeature beanIDFeature =
+ // getBeanIDFeature(abstractResourceConfig);
+ // if (beanIDFeature != null) {
+ // Object data = abstractResourceConfig.eGet(beanIDFeature);
+ // if (data != null) {
+ // String beanId = data.toString();
+ // if (!beanIdList.contains(beanId))
+ // beanIdList.add(beanId);
+ // }
+ // }
+ // if (abstractResourceConfig instanceof BindingsType) {
+ // String beanId = ((BindingsType) abstractResourceConfig).getBeanId();
+ // if (beanId == null)
+ // continue;
+ // if (!beanIdList.contains(beanId))
+ // beanIdList.add(beanId);
+ // }
+ // if (abstractResourceConfig instanceof Freemarker) {
+ // Use use = ((Freemarker) abstractResourceConfig).getUse();
+ // if (use != null) {
+ // BindTo bindTo = use.getBindTo();
+ // if (bindTo != null) {
+ // String beanId = ((BindTo) bindTo).getId();
+ // if (beanId == null)
+ // continue;
+ // if (!beanIdList.contains(beanId))
+ // beanIdList.add(beanId);
+ // }
+ // }
+ //
+ // }
+ // if (abstractResourceConfig instanceof Xsl) {
+ // org.jboss.tools.smooks.model.xsl.Use use = ((Xsl)
+ // abstractResourceConfig).getUse();
+ // if (use != null) {
+ // org.jboss.tools.smooks.model.xsl.BindTo bindTo = use.getBindTo();
+ // if (bindTo != null) {
+ // String beanId = ((org.jboss.tools.smooks.model.xsl.BindTo)
+ // bindTo).getId();
+ // if (beanId == null)
+ // continue;
+ // if (!beanIdList.contains(beanId))
+ // beanIdList.add(beanId);
+ // }
+ // }
+ //
+ // }
+ // }
return beanIdList;
}
@@ -867,8 +956,7 @@
AttributeFieldEditPart fieldEditPart = createDialogFieldEditor(labelText, parent,
toolkit, propertyDescriptor,
"Browse", new IFieldDialog() {
public Object open(Shell shell) {
- SelectorCreationDialog dialog = new SelectorCreationDialog(shell, extType,
- currentEditorPart);
+ SelectorCreationDialog dialog = new SelectorCreationDialog(shell, extType,
currentEditorPart);
if (dialog.open() == Dialog.OK) {
Object currentSelection = dialog.getCurrentSelection();
SelectorAttributes sa = dialog.getSelectorAttributes();
@@ -2083,7 +2171,7 @@
}
private static IXMLStructuredObject localXMLNodeWithNodeName(String name,
IXMLStructuredObject contextNode,
- Map<Object , Object> usedNodeMap) {
+ Map<Object, Object> usedNodeMap) {
if (name == null || contextNode == null)
return null;
String nodeName = contextNode.getNodeName();
@@ -2138,7 +2226,7 @@
}
public static IXMLStructuredObject localXMLNodeWithNodeName(String name,
IXMLStructuredObject contextNode) {
- HashMap<Object,Object> map = new HashMap<Object,Object>();
+ HashMap<Object, Object> map = new HashMap<Object, Object>();
IXMLStructuredObject node = localXMLNodeWithNodeName(name, contextNode, map);
map.clear();
map = null;
@@ -2387,37 +2475,96 @@
}
return actions;
}
-
- public static boolean isRelatedConnectionFeature(EStructuralFeature feature){
- if(feature == JavabeanPackage.Literals.BINDINGS_TYPE__CREATE_ON_ELEMENT){
+
+ public static boolean isRelatedConnectionFeature(EStructuralFeature feature) {
+ // for Bean ID
+ if (FreemarkerPackage.Literals.BIND_TO__ID == feature){
return true;
}
- if(feature == JavabeanPackage.Literals.VALUE_TYPE__DATA){
+ if (feature == XslPackage.Literals.BIND_TO__ID) {
return true;
}
- if(feature == JavabeanPackage.Literals.WIRING_TYPE__WIRE_ON_ELEMENT){
+
+ if (feature == JavabeanPackage.Literals.BINDINGS_TYPE__BEAN_ID) {
return true;
}
- if(feature == JavabeanPackage.Literals.EXPRESSION_TYPE__EXEC_ON_ELEMENT){
+
+ if (feature == Javabean12Package.Literals.BEAN_TYPE__BEAN_ID) {
return true;
}
- if(feature == Javabean12Package.Literals.BEAN_TYPE__CREATE_ON_ELEMENT){
+ // for bean ref id :
+ if (JmsroutingPackage.Literals.JMS_ROUTER__BEAN_ID == feature){
return true;
}
- if(feature == Javabean12Package.Literals.VALUE_TYPE__DATA){
+ if (Jmsrouting12Package.Literals.JMS12_ROUTER__BEAN_ID == feature){
return true;
}
- if(feature == Javabean12Package.Literals.WIRING_TYPE__WIRE_ON_ELEMENT){
+ if (JavabeanPackage.Literals.WIRING_TYPE__BEAN_ID_REF == feature){
return true;
}
- if(feature == Javabean12Package.Literals.EXPRESSION_TYPE__EXEC_ON_ELEMENT){
+ if (Javabean12Package.Literals.WIRING_TYPE__BEAN_ID_REF == feature){
return true;
}
+ // for selector :
+ if (JavabeanPackage.Literals.BINDINGS_TYPE__CREATE_ON_ELEMENT == feature){
+ return true;
+ }
+ if (CalcPackage.Literals.COUNTER__COUNT_ON_ELEMENT == feature){
+ return true;
+ }
+ if (DatasourcePackage.Literals.DIRECT__BIND_ON_ELEMENT == feature){
+ return true;
+ }
+ if (EsbroutingPackage.Literals.ROUTE_BEAN__ROUTE_ON_ELEMENT == feature){
+ return true;
+ }
+ if (FileRoutingPackage.Literals.OUTPUT_STREAM__OPEN_ON_ELEMENT == feature){
+ return true;
+ }
+ if (FreemarkerPackage.Literals.FREEMARKER__APPLY_ON_ELEMENT == feature){
+ return true;
+ }
+ if (XslPackage.Literals.XSL__APPLY_ON_ELEMENT == feature){
+ return true;
+ }
+ if (GroovyPackage.Literals.GROOVY__EXECUTE_ON_ELEMENT == feature){
+ return true;
+ }
+ if (JmsroutingPackage.Literals.JMS_ROUTER__ROUTE_ON_ELEMENT == feature){
+ return true;
+ }
+ if (SmooksPackage.Literals.RESOURCE_CONFIG_TYPE__SELECTOR == feature){
+ return true;
+ }
+ if (SmooksPackage.Literals.SMOOKS_RESOURCE_LIST_TYPE__DEFAULT_SELECTOR == feature){
+ return true;
+ }
+ if (JavabeanPackage.Literals.WIRING_TYPE__WIRE_ON_ELEMENT == feature){
+ return true;
+ }
+ if (JavabeanPackage.Literals.EXPRESSION_TYPE__EXEC_ON_ELEMENT == feature){
+ return true;
+ }
+ if (JavabeanPackage.Literals.VALUE_TYPE__DATA == feature){
+ return true;
+ }
+ if (Javabean12Package.Literals.BEAN_TYPE__CREATE_ON_ELEMENT == feature){
+ return true;
+ }
+ if (Javabean12Package.Literals.WIRING_TYPE__WIRE_ON_ELEMENT == feature){
+ return true;
+ }
+ if (Javabean12Package.Literals.EXPRESSION_TYPE__EXEC_ON_ELEMENT == feature){
+ return true;
+ }
+ if (Javabean12Package.Literals.VALUE_TYPE__DATA == feature){
+ return true;
+ }
return false;
}
-
+
public static IJavaSearchScope getSearchScope(IJavaProject project) {
return SearchEngine.createJavaSearchScope(getNonJRERoots(project));
}
@@ -2451,5 +2598,110 @@
return false;
}
+ public static EStructuralFeature getBeanIDFeature(EObject model) {
+ if (model == null) {
+ return null;
+ }
+ if (model instanceof BindTo) {
+ return FreemarkerPackage.Literals.BIND_TO__ID;
+ }
+ if (model instanceof org.jboss.tools.smooks.model.xsl.BindTo) {
+ return XslPackage.Literals.BIND_TO__ID;
+ }
+ if (model instanceof BindingsType) {
+ return JavabeanPackage.Literals.BINDINGS_TYPE__BEAN_ID;
+ }
+
+ if (model instanceof BeanType) {
+ return Javabean12Package.Literals.BEAN_TYPE__BEAN_ID;
+ }
+
+ return null;
+ }
+
+ public static EStructuralFeature getBeanIDRefFeature(EObject model) {
+ if (model == null) {
+ return null;
+ }
+ if (model instanceof JmsRouter) {
+ return JmsroutingPackage.Literals.JMS_ROUTER__BEAN_ID;
+ }
+ if (model instanceof JMS12Router) {
+ return Jmsrouting12Package.Literals.JMS12_ROUTER__BEAN_ID;
+ }
+ if (model instanceof WiringType) {
+ return JavabeanPackage.Literals.WIRING_TYPE__BEAN_ID_REF;
+ }
+
+ if (model instanceof org.jboss.tools.smooks.model.javabean12.WiringType) {
+ return Javabean12Package.Literals.WIRING_TYPE__BEAN_ID_REF;
+ }
+ return null;
+ }
+
+ public static EStructuralFeature getSelectorFeature(EObject model) {
+ if (model == null)
+ return null;
+ if (model instanceof BindingsType) {
+ return JavabeanPackage.Literals.BINDINGS_TYPE__CREATE_ON_ELEMENT;
+ }
+ if (model instanceof Counter) {
+ return CalcPackage.Literals.COUNTER__COUNT_ON_ELEMENT;
+ }
+ if (model instanceof Direct) {
+ return DatasourcePackage.Literals.DIRECT__BIND_ON_ELEMENT;
+ }
+ if (model instanceof RouteBean) {
+ return EsbroutingPackage.Literals.ROUTE_BEAN__ROUTE_ON_ELEMENT;
+ }
+ if (model instanceof OutputStream) {
+ return FileRoutingPackage.Literals.OUTPUT_STREAM__OPEN_ON_ELEMENT;
+ }
+ if (model instanceof Freemarker) {
+ return FreemarkerPackage.Literals.FREEMARKER__APPLY_ON_ELEMENT;
+ }
+ if (model instanceof Xsl) {
+ return XslPackage.Literals.XSL__APPLY_ON_ELEMENT;
+ }
+ if (model instanceof GroovyUICreator) {
+ return GroovyPackage.Literals.GROOVY__EXECUTE_ON_ELEMENT;
+ }
+ if (model instanceof JmsRouter) {
+ return JmsroutingPackage.Literals.JMS_ROUTER__ROUTE_ON_ELEMENT;
+ }
+
+ if (model instanceof ResourceConfigType) {
+ return SmooksPackage.Literals.RESOURCE_CONFIG_TYPE__SELECTOR;
+ }
+
+ if (model instanceof SmooksResourceListType) {
+ return SmooksPackage.Literals.SMOOKS_RESOURCE_LIST_TYPE__DEFAULT_SELECTOR;
+ }
+
+ if (model instanceof WiringType) {
+ return JavabeanPackage.Literals.WIRING_TYPE__WIRE_ON_ELEMENT;
+ }
+ if (model instanceof ExpressionType) {
+ return JavabeanPackage.Literals.EXPRESSION_TYPE__EXEC_ON_ELEMENT;
+ }
+ 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;
+ }
+
}
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/validate/BeanIdRefValidator.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/validate/BeanIdRefValidator.java 2009-08-21
15:04:44 UTC (rev 17223)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/validate/BeanIdRefValidator.java 2009-08-21
15:10:28 UTC (rev 17224)
@@ -15,13 +15,12 @@
import java.util.List;
import org.eclipse.emf.common.util.Diagnostic;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.edit.domain.EditingDomain;
import org.jboss.tools.smooks.configuration.editors.uitls.SmooksUIUtils;
-import org.jboss.tools.smooks.model.javabean.JavabeanPackage;
-import org.jboss.tools.smooks.model.javabean.WiringType;
-import org.jboss.tools.smooks.model.jmsrouting.JmsRouter;
-import org.jboss.tools.smooks.model.jmsrouting.JmsroutingPackage;
import org.jboss.tools.smooks.model.smooks.DocumentRoot;
import org.jboss.tools.smooks.model.smooks.SmooksResourceListType;
@@ -65,21 +64,40 @@
*/
@Override
protected Diagnostic validateModel(Object model, EditingDomain editingDomain) {
- if (model instanceof WiringType) {
- String idRef = ((WiringType) model).getBeanIdRef();
- if (!idList.contains(idRef)) {
- return newWaringDiagnostic("Reference BeanId '" + idRef + "'
dosen't exist.", model,
- JavabeanPackage.Literals.WIRING_TYPE__BEAN_ID_REF);
+ String idRef = null;
+ EStructuralFeature beanIDRefFeature = null;
+ if (model instanceof EObject) {
+ beanIDRefFeature = SmooksUIUtils.getBeanIDRefFeature((EObject) model);
+ if (beanIDRefFeature != null) {
+ Object data = ((EObject) model).eGet(beanIDRefFeature);
+ if (data != null) {
+ idRef = data.toString();
+ }
}
}
- if (model instanceof JmsRouter) {
- String idRef = ((JmsRouter) model).getBeanId();
- if (!idList.contains(idRef)) {
+ if (idRef != null) {
+ if (!idList.contains(idRef) && beanIDRefFeature != null &&
beanIDRefFeature instanceof EAttribute) {
return newWaringDiagnostic("Reference BeanId '" + idRef + "'
dosen't exist.", model,
- JmsroutingPackage.Literals.JMS_ROUTER__BEAN_ID);
+ (EAttribute) beanIDRefFeature);
}
}
+
+// if (model instanceof WiringType) {
+// String idRef = ((WiringType) model).getBeanIdRef();
+// if (!idList.contains(idRef)) {
+// return newWaringDiagnostic("Reference BeanId '" + idRef + "'
dosen't exist.", model,
+// JavabeanPackage.Literals.WIRING_TYPE__BEAN_ID_REF);
+// }
+// }
+//
+// if (model instanceof JmsRouter) {
+// String idRef = ((JmsRouter) model).getBeanId();
+// if (!idList.contains(idRef)) {
+// return newWaringDiagnostic("Reference BeanId '" + idRef + "'
dosen't exist.", model,
+// JmsroutingPackage.Literals.JMS_ROUTER__BEAN_ID);
+// }
+// }
return super.validateModel(model, editingDomain);
}
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-21
15:04:44 UTC (rev 17223)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/validate/SelectorValidator.java 2009-08-21
15:10:28 UTC (rev 17224)
@@ -22,41 +22,16 @@
import org.eclipse.emf.common.util.Diagnostic;
import org.eclipse.emf.ecore.EAttribute;
import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.edit.domain.EditingDomain;
import org.jboss.tools.smooks.configuration.SmooksConfigurationActivator;
import org.jboss.tools.smooks.configuration.editors.IXMLStructuredObject;
import org.jboss.tools.smooks.configuration.editors.SelectorCreationDialog;
-import org.jboss.tools.smooks.configuration.editors.groovy.GroovyUICreator;
import org.jboss.tools.smooks.configuration.editors.uitls.SmooksUIUtils;
-import org.jboss.tools.smooks.model.calc.CalcPackage;
-import org.jboss.tools.smooks.model.calc.Counter;
-import org.jboss.tools.smooks.model.datasource.DatasourcePackage;
-import org.jboss.tools.smooks.model.datasource.Direct;
-import org.jboss.tools.smooks.model.esbrouting.EsbroutingPackage;
-import org.jboss.tools.smooks.model.esbrouting.RouteBean;
-import org.jboss.tools.smooks.model.fileRouting.FileRoutingPackage;
-import org.jboss.tools.smooks.model.fileRouting.OutputStream;
-import org.jboss.tools.smooks.model.freemarker.Freemarker;
-import org.jboss.tools.smooks.model.freemarker.FreemarkerPackage;
import org.jboss.tools.smooks.model.graphics.ext.SmooksGraphicsExtType;
-import org.jboss.tools.smooks.model.groovy.Groovy;
-import org.jboss.tools.smooks.model.groovy.GroovyPackage;
-import org.jboss.tools.smooks.model.javabean.BindingsType;
-import org.jboss.tools.smooks.model.javabean.ExpressionType;
-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;
-import org.jboss.tools.smooks.model.smooks.ResourceConfigType;
-import org.jboss.tools.smooks.model.smooks.SmooksPackage;
import org.jboss.tools.smooks.model.smooks.SmooksResourceListType;
-import org.jboss.tools.smooks.model.xsl.Xsl;
-import org.jboss.tools.smooks.model.xsl.XslPackage;
/**
* @author Dart (dpeng(a)redhat.com)
@@ -90,15 +65,16 @@
@Override
protected Diagnostic validateModel(Object model, EditingDomain editingDomain) {
if (model instanceof EObject) {
- EAttribute feature = getAttribute(model);
- Object data = ((EObject)model).eGet(feature);
- if(data == null){
+ EStructuralFeature feature = getAttribute(model);
+ if(feature == null) return null;
+ Object data = ((EObject) model).eGet(feature);
+ if (data == null) {
return null;
}
String path = data.toString();
-// if (path == null) {
-// return null;
-// }
+ // if (path == null) {
+ // return null;
+ // }
// if(feature != null && path == null){
// return newWaringDiagnostic("Selector '" +path+
// "' isn't available",
@@ -126,127 +102,18 @@
}
}
}
- if (node == null) {
- return newWaringDiagnostic("Selector '" + path + "' isn't
available", model, feature);
+ if (node == null && feature instanceof EAttribute) {
+ return newWaringDiagnostic("Selector '" + path + "' isn't
available", model, (EAttribute) feature);
}
}
}
return super.validateModel(model, editingDomain);
}
- private EAttribute getAttribute(Object model) {
- if (model instanceof BindingsType) {
- return JavabeanPackage.Literals.BINDINGS_TYPE__CREATE_ON_ELEMENT;
- }
- if (model instanceof Counter) {
- return CalcPackage.Literals.COUNTER__COUNT_ON_ELEMENT;
- }
- if (model instanceof Direct) {
- return DatasourcePackage.Literals.DIRECT__BIND_ON_ELEMENT;
- }
- if (model instanceof RouteBean) {
- return EsbroutingPackage.Literals.ROUTE_BEAN__ROUTE_ON_ELEMENT;
- }
- if (model instanceof OutputStream) {
- return FileRoutingPackage.Literals.OUTPUT_STREAM__OPEN_ON_ELEMENT;
- }
- if (model instanceof Freemarker) {
- return FreemarkerPackage.Literals.FREEMARKER__APPLY_ON_ELEMENT;
- }
- if (model instanceof Xsl) {
- return XslPackage.Literals.XSL__APPLY_ON_ELEMENT;
- }
- if (model instanceof GroovyUICreator) {
- return GroovyPackage.Literals.GROOVY__EXECUTE_ON_ELEMENT;
- }
- if (model instanceof JmsRouter) {
- return JmsroutingPackage.Literals.JMS_ROUTER__ROUTE_ON_ELEMENT;
- }
-
- if (model instanceof ResourceConfigType) {
- return SmooksPackage.Literals.RESOURCE_CONFIG_TYPE__SELECTOR;
- }
-
- if (model instanceof SmooksResourceListType) {
- return SmooksPackage.Literals.SMOOKS_RESOURCE_LIST_TYPE__DEFAULT_SELECTOR;
- }
-
- if (model instanceof WiringType) {
- return JavabeanPackage.Literals.WIRING_TYPE__WIRE_ON_ELEMENT;
- }
- if (model instanceof ExpressionType) {
- return JavabeanPackage.Literals.EXPRESSION_TYPE__EXEC_ON_ELEMENT;
- }
- 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;
+ private EStructuralFeature getAttribute(Object model) {
+ return SmooksUIUtils.getSelectorFeature((EObject) model);
}
- /**
- * @deprecated
- * @param model
- * @return
- */
- private String getPath(Object model) {
- if (model instanceof ExpressionType) {
- return ((ExpressionType) model).getExecOnElement();
- }
- if (model instanceof ValueType) {
- return ((ValueType) model).getData();
- }
- if (model instanceof WiringType) {
- return ((WiringType) model).getWireOnElement();
- }
- if (model instanceof SmooksResourceListType) {
- return ((SmooksResourceListType) model).getDefaultSelector();
- }
- if (model instanceof ResourceConfigType) {
- return ((ResourceConfigType) model).getSelector();
- }
- if (model instanceof JmsRouter) {
- return ((JmsRouter) model).getRouteOnElement();
- }
- if (model instanceof GroovyUICreator) {
- return ((Groovy) model).getExecuteOnElement();
- }
- if (model instanceof Xsl) {
- return ((Xsl) model).getApplyOnElement();
- }
- if (model instanceof Counter) {
- return ((Counter) model).getCountOnElement();
- }
- if (model instanceof BindingsType) {
- return ((BindingsType) model).getCreateOnElement();
- }
- if (model instanceof Direct) {
- return ((Direct) model).getBindOnElement();
- }
- if (model instanceof RouteBean) {
- return ((RouteBean) model).getRouteOnElement();
- }
- if (model instanceof OutputStream) {
- return ((OutputStream) model).getOpenOnElement();
- }
- if (model instanceof Freemarker) {
- return ((Freemarker) model).getApplyOnElement();
- }
- return null;
- }
-
public void initValidator(Collection<?> selectedObjects, EditingDomain
editingDomain) {
list.clear();
Resource resource = editingDomain.getResourceSet().getResources().get(0);
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/gef/tree/editparts/CreateConnectionCommand.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/gef/tree/editparts/CreateConnectionCommand.java 2009-08-21
15:04:44 UTC (rev 17223)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/gef/tree/editparts/CreateConnectionCommand.java 2009-08-21
15:10:28 UTC (rev 17224)
@@ -4,8 +4,8 @@
package org.jboss.tools.smooks.gef.tree.editparts;
import org.eclipse.gef.commands.Command;
+import org.jboss.tools.smooks.gef.model.AbstractSmooksGraphicalModel;
import org.jboss.tools.smooks.gef.tree.model.TreeNodeConnection;
-import org.jboss.tools.smooks.gef.tree.model.TreeNodeModel;
/**
* @author DartPeng
@@ -14,9 +14,9 @@
public class CreateConnectionCommand extends Command {
- private TreeNodeModel source;
+ private AbstractSmooksGraphicalModel source;
- private TreeNodeModel target;
+ private AbstractSmooksGraphicalModel target;
private TreeNodeConnection tempConnectionHandle = null;
@@ -45,19 +45,19 @@
tempConnectionHandle.disconnect();
}
}
- public TreeNodeModel getSource() {
+ public AbstractSmooksGraphicalModel getSource() {
return source;
}
- public void setSource(TreeNodeModel source) {
+ public void setSource(AbstractSmooksGraphicalModel source) {
this.source = source;
}
- public TreeNodeModel getTarget() {
+ public AbstractSmooksGraphicalModel getTarget() {
return target;
}
- public void setTarget(TreeNodeModel target) {
+ public void setTarget(AbstractSmooksGraphicalModel target) {
this.target = target;
}
}
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/gef/tree/editpolicy/TreeNodeGraphicalNodeEditPolicy.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/gef/tree/editpolicy/TreeNodeGraphicalNodeEditPolicy.java 2009-08-21
15:04:44 UTC (rev 17223)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/gef/tree/editpolicy/TreeNodeGraphicalNodeEditPolicy.java 2009-08-21
15:10:28 UTC (rev 17224)
@@ -8,9 +8,9 @@
import org.eclipse.gef.editpolicies.GraphicalNodeEditPolicy;
import org.eclipse.gef.requests.CreateConnectionRequest;
import org.eclipse.gef.requests.ReconnectRequest;
+import org.jboss.tools.smooks.gef.model.AbstractSmooksGraphicalModel;
import org.jboss.tools.smooks.gef.tree.editparts.CreateConnectionCommand;
import org.jboss.tools.smooks.gef.tree.editparts.TreeNodeEditPart;
-import org.jboss.tools.smooks.gef.tree.model.TreeNodeModel;
/**
* @author DartPeng
@@ -30,15 +30,15 @@
Command command = request.getStartCommand();
if (command != null && command instanceof CreateConnectionCommand) {
Object targetModel = request.getTargetEditPart().getModel();
- if (targetModel instanceof TreeNodeModel) {
- if (!((TreeNodeModel) targetModel).canLinkWithSource(((CreateConnectionCommand)
command).getSource()))
+ if (targetModel instanceof AbstractSmooksGraphicalModel) {
+ if (!((AbstractSmooksGraphicalModel)
targetModel).canLinkWithSource(((CreateConnectionCommand) command).getSource()))
return null;
Object source = ((CreateConnectionCommand) command).getSource();
- if (source instanceof TreeNodeModel) {
- if (!((TreeNodeModel) source).canLinkWithTarget(targetModel))
+ if (source instanceof AbstractSmooksGraphicalModel) {
+ if (!((AbstractSmooksGraphicalModel) source).canLinkWithTarget(targetModel))
return null;
}
- ((CreateConnectionCommand) command).setTarget((TreeNodeModel) targetModel);
+ ((CreateConnectionCommand) command).setTarget((AbstractSmooksGraphicalModel)
targetModel);
return command;
}
}
@@ -60,8 +60,8 @@
sourceEditpart = getHost();
}
model = sourceEditpart.getModel();
- if (model != null && model instanceof TreeNodeModel) {
- if (!((TreeNodeModel) model).isLinkable())
+ if (model != null && model instanceof AbstractSmooksGraphicalModel) {
+ if (!((AbstractSmooksGraphicalModel) model).isLinkable())
return null;
EditPart hostPart = getHost();
CreateConnectionCommand command = null;
@@ -71,7 +71,7 @@
if (command == null) {
command = new CreateConnectionCommand();
}
- command.setSource((TreeNodeModel) model);
+ command.setSource((AbstractSmooksGraphicalModel) model);
request.setStartCommand(command);
return command;
}
Modified:
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 2009-08-21
15:04:44 UTC (rev 17223)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/ConnectionModelFactory.java 2009-08-21
15:10:28 UTC (rev 17224)
@@ -10,6 +10,7 @@
******************************************************************************/
package org.jboss.tools.smooks.graphical.editors;
+import java.util.Collection;
import java.util.List;
import org.eclipse.emf.ecore.EObject;
@@ -23,12 +24,12 @@
*/
public interface ConnectionModelFactory {
- public boolean hasBeanIDReferenceConnection(AbstractSmooksGraphicalModel model);
+ public boolean hasBeanIDConnection(AbstractSmooksGraphicalModel model);
- public TreeNodeConnection createBeanIDReferenceConnection(EObject rootModel, RootModel
root,
+ public Collection<TreeNodeConnection> createBeanIDReferenceConnection(EObject
rootModel, RootModel root,
AbstractSmooksGraphicalModel model);
- public List<TreeNodeConnection> createSelectorConnection(List<Object>
inputDataList, RootModel root,
+ public Collection<TreeNodeConnection> createSelectorConnection(List<Object>
inputDataList, RootModel root,
AbstractSmooksGraphicalModel model);
public boolean hasSelectorConnection(AbstractSmooksGraphicalModel model);
Modified:
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 2009-08-21
15:04:44 UTC (rev 17223)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/ConnectionModelFactoryImpl.java 2009-08-21
15:10:28 UTC (rev 17224)
@@ -11,6 +11,7 @@
package org.jboss.tools.smooks.graphical.editors;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.Iterator;
import java.util.List;
@@ -18,6 +19,7 @@
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;
import org.jboss.tools.smooks.gef.model.AbstractSmooksGraphicalModel;
import org.jboss.tools.smooks.gef.tree.model.TreeNodeConnection;
@@ -29,12 +31,108 @@
*/
public class ConnectionModelFactoryImpl implements ConnectionModelFactory {
- public TreeNodeConnection createBeanIDReferenceConnection(EObject rootModel , RootModel
root,
+ public Collection<TreeNodeConnection> createBeanIDReferenceConnection(EObject
rootModel, RootModel root,
AbstractSmooksGraphicalModel model) {
- return null;
+ Object mm = model.getData();
+ mm = AdapterFactoryEditingDomain.unwrap(mm);
+ if (mm == null && !(mm instanceof EObject))
+ return null;
+ EObject cmodel = (EObject) mm;
+ EStructuralFeature beanIDRefFeature = SmooksUIUtils.getBeanIDRefFeature(cmodel);
+ EStructuralFeature beanIDFeature = SmooksUIUtils.getBeanIDFeature(cmodel);
+ List<TreeNodeConnection> connections = new
ArrayList<TreeNodeConnection>();
+ if (beanIDRefFeature != null) {
+ Object data = cmodel.eGet(beanIDRefFeature);
+ if (data != null) {
+ String refID = data.toString();
+ Collection<EObject> modelList = SmooksUIUtils.getBeanIdModelList(rootModel);
+ for (Iterator<?> iterator = modelList.iterator(); iterator.hasNext();) {
+ EObject eObject = (EObject) iterator.next();
+ EStructuralFeature idfeature = SmooksUIUtils.getBeanIDFeature(eObject);
+ if (idfeature == null)
+ continue;
+ Object iddata = eObject.eGet(idfeature);
+ if (iddata == null)
+ continue;
+ if (refID.equals(iddata)) {
+ AbstractSmooksGraphicalModel targetGraphModel =
SmooksGraphUtil.findSmooksGraphModel(root, eObject);
+ List<TreeNodeConnection> tcs = targetGraphModel.getTargetConnections();
+ boolean createNewConnection = true;
+ for (Iterator<?> iterator2 = tcs.iterator(); iterator2.hasNext();) {
+ TreeNodeConnection treeNodeConnection = (TreeNodeConnection) iterator2.next();
+ if(treeNodeConnection.getSourceNode() == model){
+ // it means that the connection has been exist
+ createNewConnection = false;
+ break;
+ }
+ }
+ if(!createNewConnection) continue;
+ // create new connection;
+ AbstractSmooksGraphicalModel target = SmooksGraphUtil.findSmooksGraphModel(root,
eObject);
+ TreeNodeConnection connection = new TreeNodeConnection(model, target);
+ model.getSourceConnections().add(connection);
+ model.fireConnectionChanged();
+ target.getTargetConnections().add(connection);
+ target.fireConnectionChanged();
+ connections.add(connection);
+ }
+ }
+ }
+ }
+
+ if(beanIDFeature != null){
+ Object data = cmodel.eGet(beanIDFeature);
+ if (data != null) {
+ String beanid = data.toString();
+ Collection<EObject> beanIdRefModelList =
SmooksUIUtils.getBeanIdRefModelList(rootModel);
+ for (Iterator<?> iterator = beanIdRefModelList.iterator(); iterator.hasNext();)
{
+ EObject eObject = (EObject) iterator.next();
+ EStructuralFeature idRefFeature = SmooksUIUtils.getBeanIDRefFeature(eObject);
+ if (idRefFeature == null)
+ continue;
+ Object idRefData = eObject.eGet(idRefFeature);
+ if (idRefData == null)
+ continue;
+ if (beanid.equals(idRefData)) {
+ AbstractSmooksGraphicalModel sourceGraphModel =
SmooksGraphUtil.findSmooksGraphModel(root, eObject);
+ List<TreeNodeConnection> scs = sourceGraphModel.getSourceConnections();
+ boolean createNewConnection = true;
+ for (Iterator<?> iterator2 = scs.iterator(); iterator2.hasNext();) {
+ TreeNodeConnection treeNodeConnection = (TreeNodeConnection) iterator2.next();
+ if(treeNodeConnection.getTargetNode() == model){
+ // it means that the connection has been exist
+ createNewConnection = false;
+ break;
+ }
+ }
+ if(!createNewConnection) continue;
+ // create new connection;
+ AbstractSmooksGraphicalModel source = SmooksGraphUtil.findSmooksGraphModel(root,
eObject);
+ TreeNodeConnection connection = new TreeNodeConnection(source ,model);
+ source.getSourceConnections().add(connection);
+ model.getTargetConnections().add(connection);
+ source.fireConnectionChanged();
+ model.fireConnectionChanged();
+ connections.add(connection);
+ }
+ }
+ }
+ }
+
+ if (connections.isEmpty())
+ return null;
+ return connections;
}
- public boolean hasBeanIDReferenceConnection(AbstractSmooksGraphicalModel model) {
+ public boolean hasBeanIDConnection(AbstractSmooksGraphicalModel model) {
+ Object data = model.getData();
+ data = AdapterFactoryEditingDomain.unwrap(data);
+ if (data instanceof EObject) {
+ if (!(SmooksUIUtils.getBeanIDRefFeature((EObject) data) != null)
+ || !(SmooksUIUtils.getBeanIDFeature((EObject) data) != null)) {
+ return true;
+ }
+ }
return false;
}
@@ -42,18 +140,18 @@
Object data = model.getData();
data = AdapterFactoryEditingDomain.unwrap(data);
if (data instanceof EObject) {
- return (SmooksGraphUtil.getSelectorFeature((EObject) data) != null);
+ return (SmooksUIUtils.getSelectorFeature((EObject) data) != null);
}
return false;
}
- public List<TreeNodeConnection> createSelectorConnection(List<Object>
inputDataList, RootModel root,
+ public Collection<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);
+ EStructuralFeature feature = SmooksUIUtils.getSelectorFeature((EObject) data);
Object sd = ((EObject) data).eGet(feature);
if (sd != null) {
String selector = sd.toString();
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-21
15:04:44 UTC (rev 17223)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/SmooksGraphicalEditorPart.java 2009-08-21
15:10:28 UTC (rev 17224)
@@ -186,15 +186,64 @@
super.createActions();
}
- private void deleteRelatedConnection(AbstractSmooksGraphicalModel targetNode,
EStructuralFeature feature,
+ private void deleteRelatedConnection(AbstractSmooksGraphicalModel effecedNode,
EStructuralFeature feature,
SetCommand command) {
- EObject data = (EObject) AdapterFactoryEditingDomain.unwrap(targetNode.getData());
- if (feature.equals(SmooksGraphUtil.getSelectorFeature(data))) {
- List<TreeNodeConnection> targetConnections = targetNode.getTargetConnections();
+ EObject data = (EObject) AdapterFactoryEditingDomain.unwrap(effecedNode.getData());
+
+ if (feature.equals(SmooksUIUtils.getBeanIDRefFeature(data))) {
+ List<TreeNodeConnection> sourceConnections =
effecedNode.getSourceConnections();
+ List<TreeNodeConnection> temp = new
ArrayList<TreeNodeConnection>(sourceConnections);
+ for (Iterator<?> iterator = temp.iterator(); iterator.hasNext();) {
+ TreeNodeConnection treeNodeConnection = (TreeNodeConnection) iterator.next();
+ AbstractSmooksGraphicalModel target = treeNodeConnection.getTargetNode();
+ String refID = command.getValue().toString();
+ Object targetModel = AdapterFactoryEditingDomain.unwrap(target.getData());
+ if (targetModel instanceof EObject) {
+ EStructuralFeature idfeature = SmooksUIUtils.getBeanIDFeature((EObject)
targetModel);
+ if (idfeature == null)
+ continue;
+ Object iddata = ((EObject) targetModel).eGet(idfeature);
+ if (iddata != null) {
+ if (refID == null || !refID.equals(iddata)) {
+ target.getTargetConnections().remove(treeNodeConnection);
+ effecedNode.getSourceConnections().remove(treeNodeConnection);
+ target.fireConnectionChanged();
+ }
+ }
+ }
+ }
+ }
+
+ if (feature.equals(SmooksUIUtils.getBeanIDFeature(data))) {
+ List<TreeNodeConnection> targetConnections =
effecedNode.getTargetConnections();
List<TreeNodeConnection> temp = new
ArrayList<TreeNodeConnection>(targetConnections);
for (Iterator<?> iterator = temp.iterator(); iterator.hasNext();) {
TreeNodeConnection treeNodeConnection = (TreeNodeConnection) iterator.next();
AbstractSmooksGraphicalModel source = treeNodeConnection.getSourceNode();
+ String beanID = command.getValue().toString();
+ Object sourceModel = AdapterFactoryEditingDomain.unwrap(source.getData());
+ if (sourceModel instanceof EObject) {
+ EStructuralFeature idRefFeature = SmooksUIUtils.getBeanIDRefFeature((EObject)
sourceModel);
+ if (idRefFeature == null)
+ continue;
+ Object idRefData = ((EObject) sourceModel).eGet(idRefFeature);
+ if (idRefData != null) {
+ if (beanID == null || !beanID.equals(idRefData)) {
+ source.getSourceConnections().remove(treeNodeConnection);
+ effecedNode.getTargetConnections().remove(treeNodeConnection);
+ source.fireConnectionChanged();
+ }
+ }
+ }
+ }
+ }
+
+ if (feature.equals(SmooksUIUtils.getSelectorFeature(data))) {
+ List<TreeNodeConnection> targetConnections =
effecedNode.getTargetConnections();
+ List<TreeNodeConnection> temp = new
ArrayList<TreeNodeConnection>(targetConnections);
+ for (Iterator<?> iterator = temp.iterator(); iterator.hasNext();) {
+ TreeNodeConnection treeNodeConnection = (TreeNodeConnection) iterator.next();
+ AbstractSmooksGraphicalModel source = treeNodeConnection.getSourceNode();
if (source instanceof InputDataContianerModel || source instanceof
InputDataTreeNodeModel) {
String selector = command.getValue().toString();
Object sourceModel = AdapterFactoryEditingDomain.unwrap(source.getData());
@@ -210,7 +259,7 @@
break;
} else {
source.getSourceConnections().remove(treeNodeConnection);
- targetNode.getTargetConnections().remove(treeNodeConnection);
+ effecedNode.getTargetConnections().remove(treeNodeConnection);
source.fireConnectionChanged();
}
}
@@ -220,6 +269,13 @@
}
}
+ /**
+ * Very important method ! neet to improve
+ *
+ * @param command
+ * @param affectedObjects
+ * @param commandType
+ */
protected void refershRecentAffectedModel(Command command, Collection<?>
affectedObjects, int commandType) {
for (Iterator<?> iterator = affectedObjects.iterator(); iterator.hasNext();) {
Object object = (Object) iterator.next();
@@ -235,7 +291,7 @@
if (graphModel == null)
continue;
root.addTreeNode(graphModel);
- List<TreeNodeConnection> connections = createAllConnection(graphModel);
+ Collection<TreeNodeConnection> connections =
createAllConnection(graphModel);
expandConnectedModels(connections);
}
}
@@ -262,7 +318,7 @@
EStructuralFeature feature = ((SetCommand) command).getFeature();
if (SmooksUIUtils.isRelatedConnectionFeature(feature)) {
deleteRelatedConnection(node, feature, (SetCommand) command);
- List<TreeNodeConnection> connections = createConnection(node);
+ Collection<TreeNodeConnection> connections = createConnection(node);
node.fireConnectionChanged();
expandConnectedModels(connections);
}
@@ -275,7 +331,7 @@
if (graphModel == null)
continue;
root.addTreeNode(graphModel);
- List<TreeNodeConnection> connections = createAllConnection(graphModel);
+ Collection<TreeNodeConnection> connections =
createAllConnection(graphModel);
expandConnectedModels(connections);
} else {
AbstractSmooksGraphicalModel ownerGraph = findGraphicalModel(owner);
@@ -290,11 +346,8 @@
node.fireConnectionChanged();
}
if (command instanceof DeleteCommand) {
- Object owner = ((EObject) object).eContainer();
- owner = AdapterFactoryEditingDomain.unwrap(owner);
- AbstractSmooksGraphicalModel ownerGraph = findGraphicalModel(owner);
- if (ownerGraph != null) {
- ownerGraph.fireChildrenChanged();
+ if (node != null) {
+ node.fireChildrenChanged();
}
}
}
@@ -330,7 +383,7 @@
EStructuralFeature feature = ((SetCommand) command).getFeature();
if (SmooksUIUtils.isRelatedConnectionFeature(feature)) {
deleteRelatedConnection(node, feature, (SetCommand) command);
- List<TreeNodeConnection> connections = createConnection(node);
+ Collection<TreeNodeConnection> connections = createConnection(node);
node.fireConnectionChanged();
expandConnectedModels(connections);
}
@@ -353,7 +406,7 @@
continue;
node = graphModel;
root.addTreeNode(graphModel);
- List<TreeNodeConnection> connections = createAllConnection(graphModel);
+ Collection<TreeNodeConnection> connections =
createAllConnection(graphModel);
expandConnectedModels(connections);
if (graphModel instanceof IMoveableModel) {
String id = SmooksGraphUtil.generateFigureID(graphModel);
@@ -375,7 +428,7 @@
node = findGraphicalModel(object);
if (node == null)
continue;
- List<TreeNodeConnection> connections = createAllConnection(node);
+ Collection<TreeNodeConnection> connections = createAllConnection(node);
expandConnectedModels(connections);
}
break;
@@ -388,38 +441,27 @@
}
private AbstractSmooksGraphicalModel findGraphicalModel(Object object) {
- if (this.root != null && object != null) {
- List<?> children = root.getChildren();
- for (Iterator<?> iterator = children.iterator(); iterator.hasNext();) {
- AbstractSmooksGraphicalModel child = (AbstractSmooksGraphicalModel) iterator.next();
- if (child instanceof InputDataContianerModel) {
- continue;
- }
- AbstractSmooksGraphicalModel model = findGraphicalModel(child, object);
- if (model != null) {
- return model;
- }
- }
- }
- return null;
+ return SmooksGraphUtil.findSmooksGraphModel(root, object);
}
- private AbstractSmooksGraphicalModel findGraphicalModel(AbstractSmooksGraphicalModel
graph, Object object) {
- if (AdapterFactoryEditingDomain.unwrap(graph.getData()) == object) {
- return graph;
- }
- List<?> children = graph.getChildrenWithoutDynamic();
- for (Iterator<?> iterator = children.iterator(); iterator.hasNext();) {
- Object child = (Object) iterator.next();
- if (child instanceof AbstractSmooksGraphicalModel) {
- AbstractSmooksGraphicalModel model =
findGraphicalModel((AbstractSmooksGraphicalModel) child, object);
- if (model != null) {
- return model;
- }
- }
- }
- return null;
- }
+ // private AbstractSmooksGraphicalModel
+ // findGraphicalModel(AbstractSmooksGraphicalModel graph, Object object) {
+ // if (AdapterFactoryEditingDomain.unwrap(graph.getData()) == object) {
+ // return graph;
+ // }
+ // List<?> children = graph.getChildrenWithoutDynamic();
+ // for (Iterator<?> iterator = children.iterator(); iterator.hasNext();) {
+ // Object child = (Object) iterator.next();
+ // if (child instanceof AbstractSmooksGraphicalModel) {
+ // AbstractSmooksGraphicalModel model =
+ // findGraphicalModel((AbstractSmooksGraphicalModel) child, object);
+ // if (model != null) {
+ // return model;
+ // }
+ // }
+ // }
+ // return null;
+ // }
public DefaultEditDomain getEditDomain() {
return editDomain;
@@ -532,18 +574,18 @@
return connections;
}
- protected List<TreeNodeConnection>
createAllConnection(AbstractSmooksGraphicalModel model) {
+ protected Collection<TreeNodeConnection>
createAllConnection(AbstractSmooksGraphicalModel model) {
if (model == null)
return null;
List<TreeNodeConnection> connections = new
ArrayList<TreeNodeConnection>();
- List<TreeNodeConnection> c1 = createConnection(model);
+ Collection<TreeNodeConnection> c1 = createConnection(model);
if (c1 != null) {
connections.addAll(c1);
}
List<AbstractSmooksGraphicalModel> children = model.getChildren();
for (Iterator<?> iterator = children.iterator(); iterator.hasNext();) {
AbstractSmooksGraphicalModel abstractSmooksGraphicalModel =
(AbstractSmooksGraphicalModel) iterator.next();
- List<TreeNodeConnection> cc = createConnection(abstractSmooksGraphicalModel);
+ Collection<TreeNodeConnection> cc =
createConnection(abstractSmooksGraphicalModel);
if (cc != null) {
connections.addAll(cc);
}
@@ -551,22 +593,22 @@
return connections;
}
- protected List<TreeNodeConnection> createConnection(AbstractSmooksGraphicalModel
model) {
+ protected Collection<TreeNodeConnection>
createConnection(AbstractSmooksGraphicalModel model) {
ConnectionModelFactory connectionModelFactory = getConnectionModelFactory();
List<TreeNodeConnection> cs = new ArrayList<TreeNodeConnection>();
if (connectionModelFactory != null) {
if (connectionModelFactory.hasSelectorConnection(model)) {
- List<TreeNodeConnection> cList =
connectionModelFactory.createSelectorConnection(inputDataList, root,
- model);
+ Collection<TreeNodeConnection> cList =
connectionModelFactory.createSelectorConnection(inputDataList,
+ root, model);
if (cList != null) {
cs.addAll(cList);
}
}
- if (connectionModelFactory.hasBeanIDReferenceConnection(model)) {
- TreeNodeConnection c =
connectionModelFactory.createBeanIDReferenceConnection(smooksModelProvider
- .getSmooksModel(), root, model);
+ if (connectionModelFactory.hasBeanIDConnection(model)) {
+ Collection<TreeNodeConnection> c =
connectionModelFactory.createBeanIDReferenceConnection(
+ getSmooksResourceList(), root, model);
if (c != null) {
- cs.add(c);
+ cs.addAll(c);
}
}
}
@@ -575,12 +617,27 @@
return cs;
}
+ private EObject getSmooksResourceList() {
+ if (smooksModelProvider != null) {
+ EObject m = null;
+ EObject smooksModel = smooksModelProvider.getSmooksModel();
+ if (smooksModel instanceof org.jboss.tools.smooks10.model.smooks.DocumentRoot) {
+ m = ((org.jboss.tools.smooks10.model.smooks.DocumentRoot)
smooksModel).getSmooksResourceList();
+ }
+ if (smooksModel instanceof DocumentRoot) {
+ m = ((DocumentRoot) smooksModel).getSmooksResourceList();
+ }
+ return m;
+ }
+ return null;
+ }
+
private void createConnection(List<AbstractSmooksGraphicalModel> children,
List<TreeNodeConnection> connections) {
for (Iterator<?> iterator = children.iterator(); iterator.hasNext();) {
AbstractSmooksGraphicalModel abstractSmooksGraphicalModel =
(AbstractSmooksGraphicalModel) iterator.next();
if (!(abstractSmooksGraphicalModel instanceof InputDataContianerModel)) {
if (canCreateConnection(abstractSmooksGraphicalModel)) {
- List<TreeNodeConnection> c = createConnection(abstractSmooksGraphicalModel);
+ Collection<TreeNodeConnection> c =
createConnection(abstractSmooksGraphicalModel);
if (c != null) {
connections.addAll(c);
}
@@ -622,7 +679,7 @@
}
}
- protected void expandConnectedModels(List<TreeNodeConnection> connections) {
+ protected void expandConnectedModels(Collection<TreeNodeConnection> connections)
{
if (connections == null)
return;
List<TreeNodeModel> expanedTreeNodeList = new ArrayList<TreeNodeModel>();
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/editparts/JavaBeanChildNodeEditPart.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/editparts/JavaBeanChildNodeEditPart.java 2009-08-21
15:04:44 UTC (rev 17223)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/editparts/JavaBeanChildNodeEditPart.java 2009-08-21
15:10:28 UTC (rev 17224)
@@ -10,16 +10,34 @@
******************************************************************************/
package org.jboss.tools.smooks.graphical.editors.editparts;
+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.uitls.SmooksUIUtils;
+import org.jboss.tools.smooks.gef.model.AbstractSmooksGraphicalModel;
import org.jboss.tools.smooks.gef.tree.editparts.TreeNodeEditPart;
/**
* @author Dart
- *
+ *
*/
public class JavaBeanChildNodeEditPart extends TreeNodeEditPart {
@Override
protected boolean isDragLink() {
+ AbstractSmooksGraphicalModel model = (AbstractSmooksGraphicalModel) getModel();
+ if (model != null) {
+ Object data = model.getData();
+ data = AdapterFactoryEditingDomain.unwrap(data);
+ if (data != null && data instanceof EObject) {
+ EStructuralFeature idRefFeature = SmooksUIUtils.getBeanIDRefFeature((EObject) data);
+ if (idRefFeature != null) {
+ if (((EObject) data).eGet(idRefFeature) == null || !((EObject)
data).eIsSet(idRefFeature)) {
+ return true;
+ }
+ }
+ }
+ }
return false;
}
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-21
15:04:44 UTC (rev 17223)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/editparts/SmooksGraphUtil.java 2009-08-21
15:10:28 UTC (rev 17224)
@@ -14,8 +14,6 @@
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.configuration.editors.uitls.SmooksUIUtils;
@@ -23,11 +21,7 @@
import org.jboss.tools.smooks.gef.model.AbstractSmooksGraphicalModel;
import org.jboss.tools.smooks.graphical.editors.model.InputDataContianerModel;
import org.jboss.tools.smooks.model.javabean.BindingsType;
-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
@@ -70,32 +64,38 @@
}
return null;
}
-
- 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;
+
+ public static AbstractSmooksGraphicalModel findSmooksGraphModel(RootModel root,Object
object){
+ if (root != null && object != null) {
+ List<?> children = root.getChildren();
+ for (Iterator<?> iterator = children.iterator(); iterator.hasNext();) {
+ AbstractSmooksGraphicalModel child = (AbstractSmooksGraphicalModel) iterator.next();
+ if (child instanceof InputDataContianerModel) {
+ continue;
+ }
+ AbstractSmooksGraphicalModel model = findGraphicalModel(child, object);
+ if (model != null) {
+ return model;
+ }
+ }
}
- if(obj instanceof ValueType){
- return JavabeanPackage.Literals.VALUE_TYPE__DATA;
+ return null;
+ }
+
+ private static AbstractSmooksGraphicalModel
findGraphicalModel(AbstractSmooksGraphicalModel graph, Object object) {
+ if (AdapterFactoryEditingDomain.unwrap(graph.getData()) == object) {
+ return graph;
}
- if(obj instanceof WiringType){
- return JavabeanPackage.Literals.WIRING_TYPE__WIRE_ON_ELEMENT;
+ List<?> children = graph.getChildrenWithoutDynamic();
+ for (Iterator<?> iterator = children.iterator(); iterator.hasNext();) {
+ Object child = (Object) iterator.next();
+ if (child instanceof AbstractSmooksGraphicalModel) {
+ AbstractSmooksGraphicalModel model =
findGraphicalModel((AbstractSmooksGraphicalModel) child, object);
+ if (model != null) {
+ return model;
+ }
+ }
}
-
- // 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;
}
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/JavaBeanChildGraphModel.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/JavaBeanChildGraphModel.java 2009-08-21
15:04:44 UTC (rev 17223)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/JavaBeanChildGraphModel.java 2009-08-21
15:10:28 UTC (rev 17224)
@@ -23,21 +23,17 @@
import org.jboss.tools.smooks.gef.model.AbstractSmooksGraphicalModel;
import org.jboss.tools.smooks.gef.tree.model.TreeNodeConnection;
import org.jboss.tools.smooks.gef.tree.model.TreeNodeModel;
-import org.jboss.tools.smooks.model.javabean.ExpressionType;
-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.Javabean12Package;
/**
* @author Dart
- *
+ *
*/
public class JavaBeanChildGraphModel extends TreeNodeModel {
protected IEditingDomainProvider domainProvider = null;
-
- public JavaBeanChildGraphModel(Object data, ITreeContentProvider contentProvider,
ILabelProvider labelProvider , IEditingDomainProvider domainProvider) {
+
+ public JavaBeanChildGraphModel(Object data, ITreeContentProvider contentProvider,
ILabelProvider labelProvider,
+ IEditingDomainProvider domainProvider) {
super(data, contentProvider, labelProvider);
this.domainProvider = domainProvider;
}
@@ -48,12 +44,99 @@
}
@Override
+ public boolean canLinkWithSource(Object model) {
+ if (model instanceof AbstractSmooksGraphicalModel) {
+ Object sourceModel = ((AbstractSmooksGraphicalModel) model).getData();
+ sourceModel = AdapterFactoryEditingDomain.unwrap(sourceModel);
+ Object targetModel = getData();
+ targetModel = AdapterFactoryEditingDomain.unwrap(targetModel);
+ if (sourceModel instanceof EObject && targetModel instanceof EObject) {
+ EStructuralFeature idFeature = SmooksUIUtils.getBeanIDFeature((EObject)
targetModel);
+ EStructuralFeature idRefFeature = SmooksUIUtils.getBeanIDRefFeature((EObject)
sourceModel);
+ if (idFeature != null && idRefFeature != null) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public boolean canLinkWithTarget(Object model) {
+ if (model instanceof AbstractSmooksGraphicalModel) {
+ Object targetModel = ((AbstractSmooksGraphicalModel) model).getData();
+ targetModel = AdapterFactoryEditingDomain.unwrap(targetModel);
+ Object sourceModel = getData();
+ sourceModel = AdapterFactoryEditingDomain.unwrap(sourceModel);
+ if (sourceModel instanceof EObject && targetModel instanceof EObject) {
+ EStructuralFeature idFeature = SmooksUIUtils.getBeanIDFeature((EObject)
targetModel);
+ EStructuralFeature idRefFeature = SmooksUIUtils.getBeanIDRefFeature((EObject)
sourceModel);
+ if (idFeature != null && idRefFeature != null) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public void addSourceConnection(TreeNodeConnection connection) {
+ super.addSourceConnection(connection);
+ Object sourceModel = getData();
+ sourceModel = AdapterFactoryEditingDomain.unwrap(sourceModel);
+ if (sourceModel instanceof EObject) {
+ EStructuralFeature feature = SmooksUIUtils.getBeanIDRefFeature((EObject)
sourceModel);
+ Object model = connection.getTargetNode().getData();
+ if (feature != null) {
+ EStructuralFeature idFeature = SmooksUIUtils.getBeanIDFeature((EObject) model);
+ if (idFeature == null)
+ return;
+ // it's bean id connection
+ Object iddata = ((EObject) model).eGet(idFeature);
+ if (iddata != null) {
+ Command command = SetCommand.create(domainProvider.getEditingDomain(), (EObject)
sourceModel,
+ feature, iddata);
+ domainProvider.getEditingDomain().getCommandStack().execute(command);
+ return;
+ }
+ }
+ }
+ }
+
+ @Override
+ public void removeSourceConnection(TreeNodeConnection connection) {
+ super.removeSourceConnection(connection);
+ Object sourceModel = getData();
+ sourceModel = AdapterFactoryEditingDomain.unwrap(sourceModel);
+ if (sourceModel instanceof EObject) {
+ EStructuralFeature feature = SmooksUIUtils.getBeanIDRefFeature((EObject)
sourceModel);
+ Object model = connection.getTargetNode().getData();
+ if (feature != null) {
+ EStructuralFeature idFeature = SmooksUIUtils.getBeanIDFeature((EObject) model);
+ if (idFeature == null)
+ return;
+ // it's bean id connection
+ if (idFeature != null) {
+ Command command = SetCommand.create(domainProvider.getEditingDomain(), (EObject)
sourceModel,
+ feature, null);
+ domainProvider.getEditingDomain().getCommandStack().execute(command);
+ return;
+ }
+ }
+ }
+ }
+
+ @Override
public void addTargetConnection(TreeNodeConnection connection) {
super.addTargetConnection(connection);
Object model = getData();
model = AdapterFactoryEditingDomain.unwrap(model);
if (model instanceof EObject) {
- EStructuralFeature feature = getFeature(model);
+ // for the javabean children , there is only "Selector" target
+ // connection;
+ EStructuralFeature feature = SmooksUIUtils.getSelectorFeature((EObject) model);
+ if (feature == null)
+ return;
EObject owner = (EObject) model;
AbstractSmooksGraphicalModel targetGraphModel = connection.getSourceNode();
Object tm = targetGraphModel.getData();
@@ -64,33 +147,6 @@
}
}
}
-
- protected EStructuralFeature getFeature(Object model){
- EStructuralFeature feature = null;
- if(model == null){
- return null;
- }
- if (model instanceof WiringType) {
- feature = JavabeanPackage.Literals.WIRING_TYPE__WIRE_ON_ELEMENT;
- }
- if (model instanceof org.jboss.tools.smooks.model.javabean12.WiringType) {
- feature = Javabean12Package.Literals.WIRING_TYPE__WIRE_ON_ELEMENT;
- }
- if (model instanceof ValueType) {
- feature = JavabeanPackage.Literals.VALUE_TYPE__DATA;
- }
- if (model instanceof org.jboss.tools.smooks.model.javabean12.ValueType) {
- feature = Javabean12Package.Literals.VALUE_TYPE__DATA;
- }
- if (model instanceof ExpressionType) {
- feature = JavabeanPackage.Literals.EXPRESSION_TYPE__EXEC_ON_ELEMENT;
- }
- if (model instanceof org.jboss.tools.smooks.model.javabean12.ExpressionType) {
- feature = Javabean12Package.Literals.EXPRESSION_TYPE__EXEC_ON_ELEMENT;
- }
-
- return feature;
- }
@Override
public void removeTargetConnection(TreeNodeConnection connection) {
@@ -98,11 +154,13 @@
Object model = getData();
model = AdapterFactoryEditingDomain.unwrap(model);
if (model instanceof EObject) {
- EStructuralFeature feature = getFeature(model);
+ EStructuralFeature feature = SmooksUIUtils.getSelectorFeature((EObject) model);
+ if (feature == null)
+ return;
EObject owner = (EObject) model;
Command command = SetCommand.create(domainProvider.getEditingDomain(), owner, feature,
null);
domainProvider.getEditingDomain().getCommandStack().execute(command);
}
}
-
+
}
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/JavaBeanGraphModel.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/JavaBeanGraphModel.java 2009-08-21
15:04:44 UTC (rev 17223)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/JavaBeanGraphModel.java 2009-08-21
15:10:28 UTC (rev 17224)
@@ -23,10 +23,6 @@
import org.jboss.tools.smooks.gef.tree.model.TreeContainerModel;
import org.jboss.tools.smooks.gef.tree.model.TreeNodeConnection;
import org.jboss.tools.smooks.gef.tree.model.TreeNodeModel;
-import org.jboss.tools.smooks.model.javabean.BindingsType;
-import org.jboss.tools.smooks.model.javabean.JavabeanPackage;
-import org.jboss.tools.smooks.model.javabean12.BeanType;
-import org.jboss.tools.smooks.model.javabean12.Javabean12Package;
/**
* @author Dart
@@ -54,20 +50,42 @@
Object model = getData();
if (model instanceof EObject) {
EStructuralFeature feature = null;
- if (model instanceof BindingsType) {
- feature = JavabeanPackage.Literals.BINDINGS_TYPE__CREATE_ON_ELEMENT;
+ // judge the source model's type:
+ AbstractSmooksGraphicalModel sourceGraphModel = connection.getSourceNode();
+ if (sourceGraphModel instanceof InputDataTreeNodeModel
+ || sourceGraphModel instanceof InputDataContianerModel) {
+ // it's "Selector" connection
+ feature = SmooksUIUtils.getSelectorFeature((EObject) model);
+ if (feature != null) {
+ EObject owner = (EObject) model;
+ AbstractSmooksGraphicalModel targetGraphModel = connection.getSourceNode();
+ Object tm = targetGraphModel.getData();
+ if (tm instanceof IXMLStructuredObject) {
+ String selector = SmooksUIUtils.generateFullPath((IXMLStructuredObject) tm,
"/");
+ Command command = SetCommand
+ .create(domainProvider.getEditingDomain(), owner, feature, selector);
+ domainProvider.getEditingDomain().getCommandStack().execute(command);
+ return;
+ }
+ }
}
- if (model instanceof BeanType) {
- feature = Javabean12Package.Literals.BEAN_TYPE__CREATE_ON_ELEMENT;
- }
- EObject owner = (EObject) model;
- AbstractSmooksGraphicalModel targetGraphModel = connection.getSourceNode();
- Object tm = targetGraphModel.getData();
- if (tm instanceof IXMLStructuredObject) {
- String selector = SmooksUIUtils.generateFullPath((IXMLStructuredObject) tm,
"/");
- Command command = SetCommand.create(domainProvider.getEditingDomain(), owner,
feature, selector);
- domainProvider.getEditingDomain().getCommandStack().execute(command);
- }
+
+// Object sourceModel = sourceGraphModel.getData();
+// sourceModel = AdapterFactoryEditingDomain.unwrap(sourceModel);
+// if (sourceModel instanceof EObject) {
+// feature = SmooksUIUtils.getBeanIDRefFeature((EObject) sourceModel);
+// if (feature != null) {
+// // it's bean id connection
+// EStructuralFeature idFeature = SmooksUIUtils.getBeanIDFeature((EObject) model);
+// Object iddata = ((EObject) model).eGet(idFeature);
+// if (iddata != null) {
+// Command command = SetCommand.create(domainProvider.getEditingDomain(), (EObject)
sourceModel,
+// feature, iddata);
+// domainProvider.getEditingDomain().getCommandStack().execute(command);
+// return;
+// }
+// }
+// }
}
}
@@ -77,15 +95,31 @@
Object model = getData();
if (model instanceof EObject) {
EStructuralFeature feature = null;
- if (model instanceof BindingsType) {
- feature = JavabeanPackage.Literals.BINDINGS_TYPE__CREATE_ON_ELEMENT;
+ AbstractSmooksGraphicalModel sourceGraphModel = connection.getSourceNode();
+ if (sourceGraphModel instanceof InputDataTreeNodeModel
+ || sourceGraphModel instanceof InputDataContianerModel) {
+ // it's "Selector" connection
+ feature = SmooksUIUtils.getSelectorFeature((EObject) model);
+ if (feature != null) {
+ EObject owner = (EObject) model;
+ Command command = SetCommand.create(domainProvider.getEditingDomain(), owner,
feature, null);
+ domainProvider.getEditingDomain().getCommandStack().execute(command);
+ return;
+ }
}
- if (model instanceof BeanType) {
- feature = Javabean12Package.Literals.BEAN_TYPE__CREATE_ON_ELEMENT;
- }
- EObject owner = (EObject) model;
- Command command = SetCommand.create(domainProvider.getEditingDomain(), owner, feature,
null);
- domainProvider.getEditingDomain().getCommandStack().execute(command);
+
+// Object sourceModel = sourceGraphModel.getData();
+// sourceModel = AdapterFactoryEditingDomain.unwrap(sourceModel);
+// if (sourceModel instanceof EObject) {
+// feature = SmooksUIUtils.getBeanIDRefFeature((EObject) sourceModel);
+// if (feature != null) {
+// // it's bean id connection
+// Command command = SetCommand.create(domainProvider.getEditingDomain(), (EObject)
sourceModel,
+// feature, null);
+// domainProvider.getEditingDomain().getCommandStack().execute(command);
+// return;
+// }
+// }
}
}
}