[jbosstools-commits] JBoss Tools SVN: r13105 - in trunk/smooks/plugins: org.jboss.tools.smooks.ui and 20 other directories.
jbosstools-commits at lists.jboss.org
jbosstools-commits at lists.jboss.org
Sun Jan 18 02:45:39 EST 2009
Author: DartPeng
Date: 2009-01-18 02:45:38 -0500 (Sun, 18 Jan 2009)
New Revision: 13105
Added:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/icons/full/obj16/checkbox_checked.gif
trunk/smooks/plugins/org.jboss.tools.smooks.ui/icons/full/obj16/checkbox_uncheck.gif
trunk/smooks/plugins/org.jboss.tools.smooks.ui/schema/graphicalModelListener.exsd
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/model/Java2JavaAnalyzer.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/model/JavaBeanList.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/AbstractJavaBeanBuilder.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/BeanPopulatorGraphicalModelListener.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/BeanPopulatorMappingAnalyzer.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/JavaBeanSourceBuilder.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/JavaBeanTargetBuilder.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/JavaBeanViewerActionProvider.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/TargetReferenceConnectionLine.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/action/
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/action/AddJavaBeanModelAction.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/action/JavaBeanModelAction.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/action/RemoveJavaBeanAction.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/TargetTreeDragListener.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/model/GraphicalModelListenerManager.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/model/IGraphicalModelListener.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/xml2java/analyzer/XML2JavaAnalyzer2.java
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks/model/util/SmooksModelUtils.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/plugin.xml
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/analyzer/MappingModel.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/commandprocessor/JavaBeanModelCommandProcessor.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/model/BeanContentProvider.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/model/JavaBeanModel.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/JavaBeanConfigWizardPage.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/JavaBeanLinePaintLitener.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/JavaBeanModelLoadComposite.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/JavaBeanPropertiesSection.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/JavaImageConstants.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/NewJavaBeanStrucutredDataWizard.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/ConnectionPropertySection.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/IXMLStructuredObject.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/SmooksUIActivator.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/editors/SmooksGraphicalFormPage.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/editors/SmooksNormalContentEditFormPage.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/editors/TransformDataTreeViewer.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/commands/CreateConnectionCommand.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/commands/DeleteConnectionCommand.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/editparts/AbstractStructuredDataEditPart.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/editparts/ConnectionPointEditPart.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/editparts/StructuredDataConnectionEditPart.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/figures/ILineFigurePaintListener.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/figures/LinePaintListener.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/model/AbstractStructuredDataConnectionModel.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/model/IConnectableModel.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/model/PropertyModel.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/model/StructuredDataContentModel.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/model/StructuredDataModel.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/model/TreeItemRelationModel.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/policy/CustomGraphicalNodeEditPolicy.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/tools/TargetTreeDropTargetListener.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/modelparser/SmooksConfigurationFileGenerateContext.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/utils/SmooksExtensionPointConstants.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/utils/UIUtils.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/xml/model/AbstractXMLObject.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/xml/model/TagList.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/xml/ui/AddXMLChildNodeAction.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/xml/ui/XMLPropertiesSection.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/xml2java/analyzer/XML2JavaAnalyzer.java
Log:
JBIDE-3580
Finish the major functions of the *2Java analyzer.
Modified: trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks/model/util/SmooksModelUtils.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks/model/util/SmooksModelUtils.java 2009-01-18 07:41:24 UTC (rev 13104)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks/model/util/SmooksModelUtils.java 2009-01-18 07:45:38 UTC (rev 13105)
@@ -10,6 +10,7 @@
******************************************************************************/
package org.jboss.tools.smooks.model.util;
+import java.util.Collections;
import java.util.Iterator;
import java.util.List;
@@ -75,7 +76,7 @@
return bindingList;
}
}
- return null;
+ return Collections.EMPTY_LIST;
}
public static boolean isBeanPopulatorResource(ResourceConfigType type) {
Added: trunk/smooks/plugins/org.jboss.tools.smooks.ui/icons/full/obj16/checkbox_checked.gif
===================================================================
(Binary files differ)
Property changes on: trunk/smooks/plugins/org.jboss.tools.smooks.ui/icons/full/obj16/checkbox_checked.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/smooks/plugins/org.jboss.tools.smooks.ui/icons/full/obj16/checkbox_uncheck.gif
===================================================================
(Binary files differ)
Property changes on: trunk/smooks/plugins/org.jboss.tools.smooks.ui/icons/full/obj16/checkbox_uncheck.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/plugin.xml
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/plugin.xml 2009-01-18 07:41:24 UTC (rev 13104)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/plugin.xml 2009-01-18 07:45:38 UTC (rev 13105)
@@ -6,6 +6,7 @@
<extension-point id="commandProcessor" name="commandProcessor" schema="schema/commandProcessor.exsd"/>
<extension-point id="menuActionProvider" name="menuActionProvider" schema="schema/menuActionProvider.exsd"/>
<extension-point id="linePaintListener" name="linePaintListener" schema="schema/linePaintListener.exsd"/>
+ <extension-point id="graphicalModelListener" name="graphicalModelListener" schema="schema/graphicalModelListener.exsd"/>
<extension point="org.eclipse.emf.ecore.generated_package">
<package
uri = "http://www.jboss.org/tools/smooks/graphicalInformation"
@@ -150,9 +151,9 @@
<mappingAnalyzer
class="org.jboss.tools.smooks.javabean.analyzer.JavaBeanAnalyzer"
name="Java"
- typeID="org.jboss.tools.smooks.ui.viewerInitor.javabean">
+ typeID="org.jboss.tools.smooks.ui.viewerInitor.javabean1">
<targetSourceType
- id="org.jboss.tools.smooks.ui.viewerInitor.javabean"
+ id="org.jboss.tools.smooks.ui.viewerInitor.javabean1"
name="java2java">
</targetSourceType>
</mappingAnalyzer>
@@ -160,13 +161,13 @@
class="org.jboss.tools.smooks.javabean.analyzer.JavaBeanAnalyzer"
level="0"
name="Java"
- typeID="org.jboss.tools.smooks.ui.viewerInitor.javabean">
+ typeID="org.jboss.tools.smooks.ui.viewerInitor.javabean1">
</sourceModelAnalyzer>
<targetModelAnalyzer
class="org.jboss.tools.smooks.javabean.analyzer.JavaBeanAnalyzer"
level="0"
name="Java"
- typeID="org.jboss.tools.smooks.ui.viewerInitor.javabean">
+ typeID="org.jboss.tools.smooks.ui.viewerInitor.javabean1">
</targetModelAnalyzer>
</extension>
@@ -186,7 +187,7 @@
<extension
point="org.jboss.tools.smooks.ui.analyzer">
<mappingAnalyzer
- class="org.jboss.tools.smooks.xml2java.analyzer.XML2JavaAnalyzer"
+ class="org.jboss.tools.smooks.xml2java.analyzer.XML2JavaAnalyzer2"
name="XML2Java"
typeID="org.jboss.tools.smooks.xml.viewerInitor.xml">
<targetSourceType
@@ -258,6 +259,10 @@
class="org.jboss.tools.smooks.xml.ui.XMLViewerActionProvider"
typeID="org.jboss.tools.smooks.xml.viewerInitor.xml">
</menuActionProvider>
+ <menuActionProvider
+ class="org.jboss.tools.smooks.javabean.ui.JavaBeanViewerActionProvider"
+ typeID="org.jboss.tools.smooks.ui.viewerInitor.javabean">
+ </menuActionProvider>
</extension>
<extension
point="org.jboss.tools.smooks.ui.linePaintListener">
@@ -277,4 +282,41 @@
targetId="org.jboss.tools.smooks.ui.viewerInitor.javabean">
</linePaintListener>
</extension>
+ <extension
+ point="org.jboss.tools.smooks.ui.analyzer">
+ <mappingAnalyzer
+ class="org.jboss.tools.smooks.javabean.model.Java2JavaAnalyzer"
+ name="Java"
+ typeID="org.jboss.tools.smooks.ui.viewerInitor.javabean">
+ <targetSourceType
+ id="org.jboss.tools.smooks.ui.viewerInitor.javabean"
+ name="java2java">
+ </targetSourceType>
+ </mappingAnalyzer>
+ <sourceModelAnalyzer
+ class="org.jboss.tools.smooks.javabean.ui.JavaBeanSourceBuilder"
+ level="0"
+ name="Java"
+ typeID="org.jboss.tools.smooks.ui.viewerInitor.javabean">
+ </sourceModelAnalyzer>
+ <targetModelAnalyzer
+ class="org.jboss.tools.smooks.javabean.ui.JavaBeanTargetBuilder"
+ level="0"
+ name="Java"
+ typeID="org.jboss.tools.smooks.ui.viewerInitor.javabean">
+ </targetModelAnalyzer>
+ </extension>
+ <extension
+ point="org.jboss.tools.smooks.ui.graphicalModelListener">
+ <graphicalModelListener
+ class="org.jboss.tools.smooks.javabean.ui.BeanPopulatorGraphicalModelListener"
+ sourceId="org.jboss.tools.smooks.ui.viewerInitor.javabean"
+ targetId="org.jboss.tools.smooks.ui.viewerInitor.javabean">
+ </graphicalModelListener>
+ <graphicalModelListener
+ class="org.jboss.tools.smooks.javabean.ui.BeanPopulatorGraphicalModelListener"
+ sourceId="org.jboss.tools.smooks.xml.viewerInitor.xml"
+ targetId="org.jboss.tools.smooks.ui.viewerInitor.javabean">
+ </graphicalModelListener>
+ </extension>
</plugin>
Added: trunk/smooks/plugins/org.jboss.tools.smooks.ui/schema/graphicalModelListener.exsd
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/schema/graphicalModelListener.exsd (rev 0)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/schema/graphicalModelListener.exsd 2009-01-18 07:45:38 UTC (rev 13105)
@@ -0,0 +1,116 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.jboss.tools.smooks.ui" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+ <appinfo>
+ <meta.schema plugin="org.jboss.tools.smooks.ui" id="graphicalModelListener" name="graphicalModelListener"/>
+ </appinfo>
+ <documentation>
+ [Enter description of this extension point.]
+ </documentation>
+ </annotation>
+
+ <element name="extension">
+ <annotation>
+ <appinfo>
+ <meta.element />
+ </appinfo>
+ </annotation>
+ <complexType>
+ <sequence minOccurs="1" maxOccurs="unbounded">
+ <element ref="graphicalModelListener"/>
+ </sequence>
+ <attribute name="point" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="id" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appinfo>
+ <meta.attribute translatable="true"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="graphicalModelListener">
+ <complexType>
+ <attribute name="sourceId" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="targetId" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="class" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appinfo>
+ <meta.attribute kind="java"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="since"/>
+ </appinfo>
+ <documentation>
+ [Enter the first release in which this extension point appears.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="examples"/>
+ </appinfo>
+ <documentation>
+ [Enter extension point usage example here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="apiinfo"/>
+ </appinfo>
+ <documentation>
+ [Enter API information here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="implementation"/>
+ </appinfo>
+ <documentation>
+ [Enter information about supplied implementation of this extension point.]
+ </documentation>
+ </annotation>
+
+
+</schema>
Property changes on: trunk/smooks/plugins/org.jboss.tools.smooks.ui/schema/graphicalModelListener.exsd
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/analyzer/MappingModel.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/analyzer/MappingModel.java 2009-01-18 07:41:24 UTC (rev 13104)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/analyzer/MappingModel.java 2009-01-18 07:45:38 UTC (rev 13105)
@@ -4,6 +4,7 @@
package org.jboss.tools.smooks.analyzer;
import java.util.ArrayList;
+import java.util.Iterator;
import java.util.List;
import org.jboss.tools.smooks.ui.gef.model.PropertyModel;
@@ -22,6 +23,16 @@
setSource(source);
setTarget(target);
}
+
+ public Object getPropertyValue(String name){
+ for (Iterator iterator = properties.iterator(); iterator.hasNext();) {
+ PropertyModel property = (PropertyModel) iterator.next();
+ if(name.equals(property.getName())){
+ return property.getValue();
+ }
+ }
+ return null;
+ }
public Object getSource() {
return source;
Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/commandprocessor/JavaBeanModelCommandProcessor.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/commandprocessor/JavaBeanModelCommandProcessor.java 2009-01-18 07:41:24 UTC (rev 13104)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/commandprocessor/JavaBeanModelCommandProcessor.java 2009-01-18 07:45:38 UTC (rev 13105)
@@ -11,25 +11,27 @@
package org.jboss.tools.smooks.javabean.commandprocessor;
import java.util.Collection;
-import java.util.Iterator;
import java.util.List;
import org.eclipse.emf.common.command.Command;
+import org.eclipse.gef.DefaultEditDomain;
+import org.eclipse.gef.EditDomain;
+import org.eclipse.gef.commands.CommandStack;
import org.eclipse.gef.commands.CompoundCommand;
import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.jboss.tools.smooks.javabean.model.JavaBeanList;
import org.jboss.tools.smooks.javabean.model.JavaBeanModel;
+import org.jboss.tools.smooks.javabean.ui.BeanPopulatorMappingAnalyzer;
import org.jboss.tools.smooks.ui.gef.commandprocessor.ICommandProcessor;
import org.jboss.tools.smooks.ui.gef.commands.CreateConnectionCommand;
import org.jboss.tools.smooks.ui.gef.model.AbstractStructuredDataModel;
-import org.jboss.tools.smooks.ui.gef.model.GraphRootModel;
import org.jboss.tools.smooks.ui.gef.model.IConnectableModel;
import org.jboss.tools.smooks.ui.gef.model.LineConnectionModel;
import org.jboss.tools.smooks.ui.gef.model.PropertyModel;
+import org.jboss.tools.smooks.ui.gef.model.SourceModel;
import org.jboss.tools.smooks.ui.gef.model.TargetModel;
import org.jboss.tools.smooks.ui.modelparser.SmooksConfigurationFileGenerateContext;
import org.jboss.tools.smooks.utils.UIUtils;
-import org.jboss.tools.smooks.xml.model.AbstractXMLObject;
-import org.jboss.tools.smooks.xml.model.TagList;
/**
* @author Dart Peng
@@ -43,6 +45,124 @@
return true;
}
+ private boolean isTargetDeep(JavaBeanModel javaBean) {
+ JavaBeanModel parent = javaBean.getParent();
+ if (parent != null) {
+ parent = parent.getParent();
+ }
+ if (parent != null) {
+ parent = parent.getParent();
+ if ((parent != null)) {
+ return false;
+ } else {
+ if (parent != null && !(parent instanceof JavaBeanList)) {
+ return false;
+ }
+ }
+ }
+ return true;
+ }
+
+ private boolean isSecondLevelComplexJavaBean(JavaBeanModel beanModel) {
+ if (beanModel.isPrimitive())
+ return false;
+ JavaBeanModel parent = beanModel.getParent();
+ if (parent != null) {
+ if (parent instanceof JavaBeanList) {
+ return false;
+ }
+ parent = parent.getParent();
+ }
+ if (parent != null) {
+ if (!(parent instanceof JavaBeanList))
+ return false;
+ }
+ return true;
+ }
+
+ private boolean checkSourceToTarget(
+ AbstractStructuredDataModel sourceGraphModel,
+ AbstractStructuredDataModel targetGraphModel,
+ SmooksConfigurationFileGenerateContext context) {
+ Object source = ((AbstractStructuredDataModel) sourceGraphModel)
+ .getReferenceEntityModel();
+ Object t = ((AbstractStructuredDataModel) targetGraphModel)
+ .getReferenceEntityModel();
+ List connections = ((IConnectableModel) targetGraphModel)
+ .getModelTargetConnections();
+ // *2Java , allow the target node have two connections :
+ // 1.beancreation,2.referencebinding
+ if (connections.size() > 1)
+ return false;
+ if (connections.size() == 1) {
+ LineConnectionModel line = (LineConnectionModel) connections.get(0);
+ Object bindingType = line
+ .getProperty(BeanPopulatorMappingAnalyzer.BINDING_TYPE);
+ if (!BeanPopulatorMappingAnalyzer.REFERENCE_BINDING
+ .equals(bindingType)) {
+ if (sourceGraphModel instanceof SourceModel) {
+ return false;
+ }
+ }
+ }
+ if (t instanceof JavaBeanModel) {
+ if (isSecondLevelComplexJavaBean((JavaBeanModel) t)
+ && sourceGraphModel instanceof SourceModel) {
+ createReferenceConnection(source, (JavaBeanModel) t, context);
+ return false;
+ }
+ }
+ if (source instanceof JavaBeanModel && t instanceof JavaBeanModel
+ && sourceGraphModel instanceof SourceModel) {
+
+ JavaBeanModel sourceModel = (JavaBeanModel) source;
+ JavaBeanModel targetModel = (JavaBeanModel) t;
+ boolean sis = ((JavaBeanModel) source).isPrimitive();
+ boolean tis = ((JavaBeanModel) t).isPrimitive();
+ if ((sis && !tis) || (!sis && tis)) {
+ return false;
+ }
+
+ Class sourceClass = sourceModel.getBeanClass();
+ Class targetClass = targetModel.getBeanClass();
+ boolean isCompositeSource = sourceClass.isArray()
+ || Collection.class.isAssignableFrom(sourceClass);
+ boolean isCompositeTarget = targetClass.isArray()
+ || Collection.class.isAssignableFrom(targetClass);
+ if (isCompositeSource != isCompositeTarget)
+ return false;
+ }
+ return true;
+ }
+
+ private boolean checkTargetToTarget(
+ AbstractStructuredDataModel sourceGraphModel,
+ AbstractStructuredDataModel targetGraphModel,
+ SmooksConfigurationFileGenerateContext context) {
+ if (sourceGraphModel instanceof SourceModel) {
+ return true;
+ }
+ List connections = ((IConnectableModel) targetGraphModel)
+ .getModelTargetConnections();
+ List connections1 = ((IConnectableModel) sourceGraphModel)
+ .getModelSourceConnections();
+ // *2Java , allow the target node have two connections :
+ // 1.beancreation,2.referencebinding
+ // reference binding need the target node have the bean creation
+ // connection already.
+ if(connections1.size() > 0) return false;
+ if (connections.size() != 1)
+ return false;
+ LineConnectionModel line = (LineConnectionModel) connections.get(0);
+ Object bindingType = line
+ .getProperty(BeanPopulatorMappingAnalyzer.BINDING_TYPE);
+ if (!BeanPopulatorMappingAnalyzer.BEAN_CREATION.equals(bindingType)) {
+ return false;
+ }
+
+ return true;
+ }
+
private boolean checkGEFCommand(
org.eclipse.gef.commands.Command gefCommand,
SmooksConfigurationFileGenerateContext context) {
@@ -54,41 +174,81 @@
Object s = command.getSource();
if (m instanceof AbstractStructuredDataModel
&& s instanceof AbstractStructuredDataModel) {
- Object source = ((AbstractStructuredDataModel) s)
- .getReferenceEntityModel();
- Object t = ((AbstractStructuredDataModel) m)
- .getReferenceEntityModel();
- List connections = ((IConnectableModel) m).getModelTargetConnections();
- if(connections.size() > 0) return false;
- if (source instanceof JavaBeanModel
- && t instanceof JavaBeanModel) {
-
- JavaBeanModel sourceModel = (JavaBeanModel) source;
- JavaBeanModel targetModel = (JavaBeanModel) t;
- boolean sis = ((JavaBeanModel) source).isPrimitive();
- boolean tis = ((JavaBeanModel) t).isPrimitive();
- if ((sis && !tis) || (!sis && tis)) {
+ AbstractStructuredDataModel sourceGraphModel = (AbstractStructuredDataModel) s;
+ AbstractStructuredDataModel targetGraphModel = (AbstractStructuredDataModel) m;
+ Object t = targetGraphModel.getReferenceEntityModel();
+ if (t instanceof JavaBeanModel) {
+ if (!isTargetDeep((JavaBeanModel) t)) {
return false;
}
-
- Class sourceClass = sourceModel.getBeanClass();
- Class targetClass = targetModel.getBeanClass();
- boolean isCompositeSource = sourceClass.isArray()
- || Collection.class
- .isAssignableFrom(sourceClass);
- boolean isCompositeTarget = targetClass.isArray()
- || Collection.class
- .isAssignableFrom(targetClass);
- if (isCompositeSource != isCompositeTarget)
- return false;
-
}
+ if (!checkSourceToTarget(sourceGraphModel,
+ targetGraphModel, context)) {
+ return false;
+ }
+ if (!checkTargetToTarget(sourceGraphModel,
+ targetGraphModel, context)) {
+ return false;
+ }
}
}
}
return true;
}
+ protected void createReferenceConnection(Object source,
+ JavaBeanModel target, SmooksConfigurationFileGenerateContext context) {
+ CompoundCommand commands = new CompoundCommand();
+ JavaBeanList list = (JavaBeanList) target.getRootParent();
+ JavaBeanModel cloneModel = (JavaBeanModel) target.clone();
+ list.addJavaBean(cloneModel);
+
+ AbstractStructuredDataModel targetGraphModel = UIUtils.findGraphModel(
+ context.getGraphicalRootModel(), target);
+ AbstractStructuredDataModel cloneTargetGraphModel = UIUtils
+ .findGraphModel(context.getGraphicalRootModel(), cloneModel);
+ AbstractStructuredDataModel sourceGraphModel = UIUtils.findGraphModel(
+ context.getGraphicalRootModel(), source);
+
+ if (cloneTargetGraphModel != null && sourceGraphModel != null
+ && targetGraphModel != null) {
+ CreateConnectionCommand beanCreationLineCommand = new CreateConnectionCommand();
+ beanCreationLineCommand
+ .setSource((IConnectableModel) sourceGraphModel);
+ beanCreationLineCommand
+ .setTarget((IConnectableModel) cloneTargetGraphModel);
+ PropertyModel bindingType = new PropertyModel(
+ BeanPopulatorMappingAnalyzer.BINDING_TYPE,
+ BeanPopulatorMappingAnalyzer.BEAN_CREATION);
+ beanCreationLineCommand.addPropertyModel(bindingType);
+ commands.add(beanCreationLineCommand);
+
+ CreateConnectionCommand referenceLineCommand = new CreateConnectionCommand();
+ referenceLineCommand
+ .setSource((IConnectableModel) targetGraphModel);
+ referenceLineCommand
+ .setTarget((IConnectableModel) cloneTargetGraphModel);
+ PropertyModel referenceType = new PropertyModel(
+ BeanPopulatorMappingAnalyzer.BINDING_TYPE,
+ BeanPopulatorMappingAnalyzer.REFERENCE_BINDING);
+ referenceLineCommand.addPropertyModel(referenceType);
+ commands.add(referenceLineCommand);
+ }
+
+ if (commands.size() > 0) {
+ executeGEFCommand(commands, context);
+ }
+ }
+
+ protected void executeGEFCommand(org.eclipse.gef.commands.Command command,
+ SmooksConfigurationFileGenerateContext context) {
+ EditDomain domain = context.getGefDomain();
+ CommandStack stack = domain.getCommandStack();
+ if (stack != null) {
+ stack.execute(command);
+ }
+ }
+
/*
* (non-Javadoc)
*
@@ -100,6 +260,7 @@
public boolean processGEFCommand(
org.eclipse.gef.commands.Command gefCommand,
SmooksConfigurationFileGenerateContext context) {
+ // if(true) return true;
Object source = null;
JavaBeanModel target = null;
if (!checkGEFCommand(gefCommand, context)) {
@@ -119,9 +280,15 @@
.getReferenceEntityModel();
if (t instanceof JavaBeanModel) {
target = (JavaBeanModel) t;
+ } else {
+ return true;
}
if (!UIUtils.isInstanceCreatingConnection(source, t)) {
if (t instanceof JavaBeanModel) {
+ PropertyModel bindingType = new PropertyModel(
+ BeanPopulatorMappingAnalyzer.BINDING_TYPE,
+ BeanPopulatorMappingAnalyzer.PROPERTY_BINDING);
+ command.addPropertyModel(bindingType);
Class clazz = ((JavaBeanModel) t).getBeanClass();
if (clazz != null && clazz != String.class) {
PropertyModel property = new PropertyModel();
@@ -130,94 +297,105 @@
command.addPropertyModel(property);
}
}
+ } else {
+ if (s instanceof TargetModel) {
+ PropertyModel bindingType = new PropertyModel(
+ BeanPopulatorMappingAnalyzer.BINDING_TYPE,
+ BeanPopulatorMappingAnalyzer.REFERENCE_BINDING);
+ command.addPropertyModel(bindingType);
+ }
+ if (s instanceof SourceModel) {
+ PropertyModel bindingType = new PropertyModel(
+ BeanPopulatorMappingAnalyzer.BINDING_TYPE,
+ BeanPopulatorMappingAnalyzer.BEAN_CREATION);
+ command.addPropertyModel(bindingType);
+ }
}
}
}
CompoundCommand compoundCommand = new CompoundCommand();
- CreateConnectionCommand connectRootNodeCommand = connectRootNode(
- source, target, context);
- if (connectRootNodeCommand != null)
- connectRootNodeCommand.execute();
fillCreateParentLinkCommand(compoundCommand, source, target,
context);
if (!compoundCommand.isEmpty()) {
- compoundCommand.execute();
+ executeGEFCommand(compoundCommand, context);
}
}
return true;
}
- private CreateConnectionCommand connectRootNode(Object source,
- Object target, SmooksConfigurationFileGenerateContext context) {
- JavaBeanModel javaBeanTarget = (JavaBeanModel) target;
- Object sourceModel = source;
+ // private CreateConnectionCommand connectRootNode(Object source,
+ // Object target, SmooksConfigurationFileGenerateContext context) {
+ // JavaBeanModel javaBeanTarget = (JavaBeanModel) target;
+ // Object sourceModel = source;
+ //
+ // JavaBeanModel targetRoot = javaBeanTarget.getParent();
+ // JavaBeanModel tempTargetRoot = targetRoot;
+ // while (tempTargetRoot != null) {
+ // targetRoot = tempTargetRoot;
+ // tempTargetRoot = tempTargetRoot.getParent();
+ // }
+ // Object sourceRoot = null;
+ // if (sourceModel instanceof JavaBeanModel) {
+ // sourceRoot = ((JavaBeanModel) sourceModel).getParent();
+ // JavaBeanModel sourceTempRoot = (JavaBeanModel) sourceRoot;
+ // while (sourceTempRoot != null) {
+ // sourceRoot = sourceTempRoot;
+ // sourceTempRoot = ((JavaBeanModel) sourceTempRoot).getParent();
+ // }
+ // }
+ //
+ // if (sourceModel instanceof AbstractXMLObject) {
+ // sourceRoot = ((AbstractXMLObject) sourceModel).getParent();
+ // AbstractXMLObject tempParent = ((AbstractXMLObject) sourceRoot)
+ // .getParent();
+ // while (!(tempParent instanceof TagList)) {
+ // sourceRoot = tempParent;
+ // tempParent = tempParent.getParent();
+ // }
+ // }
+ // GraphRootModel graphRoot = context.getGraphicalRootModel();
+ // if (sourceRoot == null || targetRoot == null)
+ // return null;
+ // AbstractStructuredDataModel graphSourceRoot = UIUtils.findGraphModel(
+ // graphRoot, sourceRoot);
+ // AbstractStructuredDataModel graphTargetRoot = UIUtils.findGraphModel(
+ // graphRoot, targetRoot);
+ //
+ // List<TargetModel> graphTargetList = graphRoot.loadTargetModelList();
+ // boolean isConnected = false;
+ // for (Iterator iterator = graphTargetList.iterator(); iterator.hasNext();)
+ // {
+ // TargetModel targetModel = (TargetModel) iterator.next();
+ // if (targetModel == graphTargetRoot) {
+ // List connections = targetModel.getModelTargetConnections();
+ // for (Iterator iterator2 = connections.iterator(); iterator2
+ // .hasNext();) {
+ // Object object = (Object) iterator2.next();
+ // if (object instanceof LineConnectionModel) {
+ // Object cs = ((LineConnectionModel) object).getSource();
+ // if (cs == graphSourceRoot) {
+ // isConnected = true;
+ // break;
+ // }
+ // }
+ // }
+ // }
+ // if (isConnected)
+ // break;
+ // }
+ //
+ // if (!isConnected) {
+ // CreateConnectionCommand connectionCommand = new
+ // CreateConnectionCommand();
+ // connectionCommand.setSource(graphSourceRoot);
+ // connectionCommand.setTarget(graphTargetRoot);
+ // return connectionCommand;
+ // }
+ //
+ // return null;
+ // }
- JavaBeanModel targetRoot = javaBeanTarget.getParent();
- JavaBeanModel tempTargetRoot = targetRoot;
- while (tempTargetRoot != null) {
- targetRoot = tempTargetRoot;
- tempTargetRoot = tempTargetRoot.getParent();
- }
- Object sourceRoot = null;
- if (sourceModel instanceof JavaBeanModel) {
- sourceRoot = ((JavaBeanModel) sourceModel).getParent();
- JavaBeanModel sourceTempRoot = (JavaBeanModel) sourceRoot;
- while (sourceTempRoot != null) {
- sourceRoot = sourceTempRoot;
- sourceTempRoot = ((JavaBeanModel) sourceTempRoot).getParent();
- }
- }
-
- if (sourceModel instanceof AbstractXMLObject) {
- sourceRoot = ((AbstractXMLObject) sourceModel).getParent();
- AbstractXMLObject tempParent = ((AbstractXMLObject) sourceRoot)
- .getParent();
- while (!(tempParent instanceof TagList)) {
- sourceRoot = tempParent;
- tempParent = tempParent.getParent();
- }
- }
- GraphRootModel graphRoot = context.getGraphicalRootModel();
- if (sourceRoot == null || targetRoot == null)
- return null;
- AbstractStructuredDataModel graphSourceRoot = UIUtils.findGraphModel(
- graphRoot, sourceRoot);
- AbstractStructuredDataModel graphTargetRoot = UIUtils.findGraphModel(
- graphRoot, targetRoot);
-
- List<TargetModel> graphTargetList = graphRoot.loadTargetModelList();
- boolean isConnected = false;
- for (Iterator iterator = graphTargetList.iterator(); iterator.hasNext();) {
- TargetModel targetModel = (TargetModel) iterator.next();
- if (targetModel == graphTargetRoot) {
- List connections = targetModel.getModelTargetConnections();
- for (Iterator iterator2 = connections.iterator(); iterator2
- .hasNext();) {
- Object object = (Object) iterator2.next();
- if (object instanceof LineConnectionModel) {
- Object cs = ((LineConnectionModel) object).getSource();
- if (cs == graphSourceRoot) {
- isConnected = true;
- break;
- }
- }
- }
- }
- if (isConnected)
- break;
- }
-
- if (!isConnected) {
- CreateConnectionCommand connectionCommand = new CreateConnectionCommand();
- connectionCommand.setSource(graphSourceRoot);
- connectionCommand.setTarget(graphTargetRoot);
- return connectionCommand;
- }
-
- return null;
- }
-
private void fillCreateParentLinkCommand(CompoundCommand compoundCommand,
Object source, JavaBeanModel target,
SmooksConfigurationFileGenerateContext context) {
@@ -261,6 +439,34 @@
CreateConnectionCommand connectionCommand = new CreateConnectionCommand();
connectionCommand.setSource(sourceParentGraphModel);
connectionCommand.setTarget(targetParentGraphModel);
+ if (!UIUtils.isInstanceCreatingConnection(source,
+ targetParent)) {
+ Class clazz = ((JavaBeanModel) targetParent)
+ .getBeanClass();
+ PropertyModel bindingType = new PropertyModel(
+ BeanPopulatorMappingAnalyzer.BINDING_TYPE,
+ BeanPopulatorMappingAnalyzer.PROPERTY_BINDING);
+ connectionCommand.addPropertyModel(bindingType);
+ if (clazz != null && clazz != String.class) {
+ PropertyModel property = new PropertyModel();
+ property.setName("type");
+ property.setValue(getTypeString(clazz));
+ connectionCommand.addPropertyModel(property);
+ }
+ } else {
+ if (sourceParentGraphModel instanceof TargetModel) {
+ PropertyModel bindingType = new PropertyModel(
+ BeanPopulatorMappingAnalyzer.BINDING_TYPE,
+ BeanPopulatorMappingAnalyzer.REFERENCE_BINDING);
+ connectionCommand.addPropertyModel(bindingType);
+ }
+ if (sourceParentGraphModel instanceof SourceModel) {
+ PropertyModel bindingType = new PropertyModel(
+ BeanPopulatorMappingAnalyzer.BINDING_TYPE,
+ BeanPopulatorMappingAnalyzer.BEAN_CREATION);
+ connectionCommand.addPropertyModel(bindingType);
+ }
+ }
return connectionCommand;
}
}
Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/model/BeanContentProvider.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/model/BeanContentProvider.java 2009-01-18 07:41:24 UTC (rev 13104)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/model/BeanContentProvider.java 2009-01-18 07:45:38 UTC (rev 13105)
@@ -1,10 +1,9 @@
package org.jboss.tools.smooks.javabean.model;
-import java.util.List;
-
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.Viewer;
+import org.jboss.tools.smooks.ui.IXMLStructuredObject;
/**
*
* @author Dart Peng
@@ -14,8 +13,8 @@
IStructuredContentProvider {
public Object[] getChildren(Object arg0) {
- if (arg0 instanceof JavaBeanModel) {
- return ((JavaBeanModel) arg0).getProperties().toArray();
+ if (arg0 instanceof IXMLStructuredObject) {
+ return ((IXMLStructuredObject) arg0).getChildren().toArray();
}
return new Object[] {};
}
@@ -35,10 +34,10 @@
}
public Object[] getElements(Object arg0) {
- if (arg0 instanceof List) {
- return ((List) arg0).toArray();
+ if (arg0 instanceof JavaBeanList) {
+ return ((JavaBeanList) arg0).getChildren().toArray();
}
- return new Object[]{arg0};
+ return new Object[]{};
}
public void dispose() {
Added: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/model/Java2JavaAnalyzer.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/model/Java2JavaAnalyzer.java (rev 0)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/model/Java2JavaAnalyzer.java 2009-01-18 07:45:38 UTC (rev 13105)
@@ -0,0 +1,23 @@
+/**
+ *
+ */
+package org.jboss.tools.smooks.javabean.model;
+
+import org.jboss.tools.smooks.javabean.ui.BeanPopulatorMappingAnalyzer;
+
+/**
+ * @author Dart
+ *
+ */
+public class Java2JavaAnalyzer extends BeanPopulatorMappingAnalyzer {
+
+ @Override
+ protected boolean checkSourceAndTarget(Object sourceObject,
+ Object targetObject) {
+ if(sourceObject instanceof JavaBeanList &&
+ targetObject instanceof JavaBeanList)
+ return true;
+ return false;
+ }
+
+}
Property changes on: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/model/Java2JavaAnalyzer.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/model/JavaBeanList.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/model/JavaBeanList.java (rev 0)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/model/JavaBeanList.java 2009-01-18 07:45:38 UTC (rev 13105)
@@ -0,0 +1,119 @@
+/**
+ *
+ */
+package org.jboss.tools.smooks.javabean.model;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+
+import org.jboss.tools.smooks.ui.IXMLStructuredObject;
+import org.jboss.tools.smooks.ui.editors.TransformDataTreeViewer;
+
+/**
+ * @author Dart
+ *
+ */
+public class JavaBeanList extends JavaBeanModel implements IXMLStructuredObject{
+
+
+ private List<IXMLStructuredObject> children = null;
+
+ public List<IXMLStructuredObject> getChildren() {
+ if(children == null){
+ children = new ArrayList<IXMLStructuredObject>();
+ }
+ return children;
+ }
+
+ public JavaBeanList(){
+ super(null);
+ }
+
+ @Override
+ public boolean isPrimitive() {
+ return false;
+ }
+
+ public String getJavaBeanName(JavaBeanModel javaBean){
+ List children = getChildren();
+ int sameNameBean = 0;
+ for (Iterator iterator = children.iterator(); iterator.hasNext();) {
+ JavaBeanModel child = (JavaBeanModel) iterator.next();
+ if(child.getBeanClass().getName().equals(javaBean.getBeanClass().getName())){
+ sameNameBean++;
+ }
+ }
+ if(sameNameBean > 0){
+ String name = javaBean.getName() + String.valueOf(sameNameBean);
+ while(hasSameNameBean(name,javaBean.getBeanClass())){
+ sameNameBean++;
+ name = javaBean.getName() + String.valueOf(sameNameBean);
+ }
+ return name;
+ }
+ return javaBean.getName();
+ }
+
+ private boolean hasSameNameBean(String name , Class clazz){
+ for (Iterator iterator = children.iterator(); iterator.hasNext();) {
+ JavaBeanModel child = (JavaBeanModel) iterator.next();
+ if(child.getBeanClass().getName().equals(clazz.getName())){
+ if(name.equals(child.getName())){
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+
+ public void addJavaBean(JavaBeanModel javaBean){
+ if(javaBean == null) return;
+ String name = javaBean.getName();
+ String n1 = getJavaBeanName(javaBean);
+ if(!name.equals(n1)){
+ javaBean.setName(n1);
+ }
+ javaBean.setParent(this);
+ this.getChildren().add(javaBean);
+ support.firePropertyChange(TransformDataTreeViewer.ADD_CHILDREN_EVENT, null, javaBean);
+ }
+
+ public void removeJavaBean(JavaBeanModel javaBean){
+ this.getChildren().remove(javaBean);
+ javaBean.setParent(null);
+ support.firePropertyChange(TransformDataTreeViewer.REMOVE_CHILDREN_EVENT, javaBean, null);
+ }
+
+ @Override
+ public List getProperties() {
+ return Collections.EMPTY_LIST;
+ }
+
+ public Object getID() {
+ return this;
+ }
+
+ public String getNodeName() {
+ return null;
+ }
+
+ public JavaBeanModel getParent() {
+ return null;
+ }
+
+ public boolean isAttribute() {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public boolean isRootNode() {
+ return true;
+ }
+
+
+
+}
Property changes on: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/model/JavaBeanList.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/model/JavaBeanModel.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/model/JavaBeanModel.java 2009-01-18 07:41:24 UTC (rev 13104)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/model/JavaBeanModel.java 2009-01-18 07:45:38 UTC (rev 13105)
@@ -10,18 +10,20 @@
******************************************************************************/
package org.jboss.tools.smooks.javabean.model;
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeSupport;
import java.beans.PropertyDescriptor;
-import java.lang.reflect.GenericDeclaration;
import java.lang.reflect.Method;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
-import java.lang.reflect.TypeVariable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
+import java.util.Properties;
+import org.eclipse.jdt.internal.corext.refactoring.typeconstraints.types.ExtendsWildcardType;
import org.jboss.tools.smooks.analyzer.IValidatable;
import org.jboss.tools.smooks.javabean.uitils.JavaPropertyUtils;
import org.jboss.tools.smooks.ui.IXMLStructuredObject;
@@ -30,8 +32,13 @@
* @author Dart Peng
*
*/
-public class JavaBeanModel implements IValidatable ,IXMLStructuredObject{
+public class JavaBeanModel implements IValidatable, IXMLStructuredObject,
+ Cloneable {
+
+ private Properties extendProperties = new Properties();
+ protected PropertyChangeSupport support = new PropertyChangeSupport(this);
+
private String beanClassString = null;
public void setBeanClassString(String beanClassString) {
@@ -83,6 +90,14 @@
this.isRootClassModel = isRootClassModel;
}
+ public void addPropertyChangeListener(PropertyChangeListener listener) {
+ support.addPropertyChangeListener(listener);
+ }
+
+ public void removePropertyChangeListener(PropertyChangeListener listener) {
+ support.removePropertyChangeListener(listener);
+ }
+
// /**
// * @return the isRoot
// */
@@ -148,6 +163,7 @@
public PropertyDescriptor getPropertyDescriptor() {
return propertyDescriptor;
}
+
public void setPropertyDescriptor(PropertyDescriptor propertyDescriptor) {
this.propertyDescriptor = propertyDescriptor;
@@ -164,7 +180,6 @@
if (this.name == null) {
this.name = beanClass.getSimpleName();
}
-
if (propertyDescriptor == null)
setRootClassModel(true);
this.propertyDescriptor = propertyDescriptor;
@@ -298,17 +313,21 @@
return properties;
Class beanType = beanClass;
- if (this.componentClass != null) {
- if (isArray() || isList()) {
+ if (isArray() || isList()) {
+ if (componentClass != null) {
JavaBeanModel proxyModel = new JavaBeanModel(
componentClass, componentClass.getSimpleName(),
null, beanClass, this.lazyLoadProperties);
beanType = componentClass;
+ addProperty(proxyModel);
+ } else {
+ JavaBeanModel proxyModel = new JavaBeanModel(Object.class,
+ "object", null, beanClass, this.lazyLoadProperties);
+ beanType = componentClass;
addProperty(proxyModel);
-
- return properties;
}
+ return properties;
}
if (beanType == null)
return Collections.EMPTY_LIST;
@@ -383,9 +402,10 @@
public JavaBeanModel getRootParent() {
JavaBeanModel parent = this.getParent();
- if(parent == null) return this;
+ if (parent == null)
+ return this;
JavaBeanModel temp = parent;
- while(temp != null){
+ while (temp != null) {
parent = temp;
temp = temp.getParent();
}
@@ -414,17 +434,20 @@
}
return buffer.toString();
}
-
- public String getSelectorString(){
- if(parent == null){
+
+ public String getSelectorString() {
+ if(parent == null) {
return getBeanClassString();
}
-
- if(parent.isArray() || parent.isList()){
+ if (parent.getClass() == JavaBeanList.class) {
return getBeanClassString();
}
+
+ if (parent.isArray() || parent.isList()) {
+ return getBeanClassString();
+ }
return getName();
-
+
}
public boolean hasGenericType() {
@@ -434,14 +457,14 @@
public void setGenericType(boolean hasGenericType) {
this.hasGenericType = hasGenericType;
}
-
- public boolean isAttribute(){
+
+ public boolean isAttribute() {
return false;
}
public List<IXMLStructuredObject> getChildren() {
List ps = getProperties();
- if(ps!=null){
+ if (ps != null) {
return ps;
}
return null;
@@ -455,4 +478,35 @@
return getSelectorString();
}
+ public boolean isRootNode() {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ public void setComponentClass(Class clazz){
+ componentClass = clazz;
+ }
+
+ public Class getComponentClass() {
+ return componentClass;
+ }
+
+ public void addExtendProperty(String name,String value){
+ extendProperties.setProperty(name, value);
+ }
+
+ public String getExtendProperty(String name){
+ return extendProperties.getProperty(name);
+ }
+
+ public Object clone() {
+ if(isList()){
+ JavaBeanModel model = JavaBeanModelFactory.getJavaBeanModelWithLazyLoad(ArrayList.class);
+ model.setComponentClass(componentClass);
+ return model;
+ }
+ return JavaBeanModelFactory.getJavaBeanModelWithLazyLoad(this
+ .getBeanClass());
+ }
+
}
Added: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/AbstractJavaBeanBuilder.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/AbstractJavaBeanBuilder.java (rev 0)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/AbstractJavaBeanBuilder.java 2009-01-18 07:45:38 UTC (rev 13105)
@@ -0,0 +1,21 @@
+/**
+ *
+ */
+package org.jboss.tools.smooks.javabean.ui;
+
+/**
+ * @author Dart
+ *
+ */
+public class AbstractJavaBeanBuilder {
+ private ClassLoader classLoader = null;
+
+ public ClassLoader getClassLoader() {
+ return classLoader;
+ }
+
+ public void setClassLoader(ClassLoader classLoader) {
+ this.classLoader = classLoader;
+ }
+
+}
Property changes on: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/AbstractJavaBeanBuilder.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/BeanPopulatorGraphicalModelListener.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/BeanPopulatorGraphicalModelListener.java (rev 0)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/BeanPopulatorGraphicalModelListener.java 2009-01-18 07:45:38 UTC (rev 13105)
@@ -0,0 +1,571 @@
+/**
+ *
+ */
+package org.jboss.tools.smooks.javabean.ui;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.emf.ecore.xml.type.AnyType;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.jboss.tools.smooks.javabean.model.JavaBeanList;
+import org.jboss.tools.smooks.javabean.model.JavaBeanModel;
+import org.jboss.tools.smooks.model.ParamType;
+import org.jboss.tools.smooks.model.ResourceConfigType;
+import org.jboss.tools.smooks.model.ResourceType;
+import org.jboss.tools.smooks.model.SmooksFactory;
+import org.jboss.tools.smooks.model.SmooksResourceListType;
+import org.jboss.tools.smooks.model.util.SmooksModelConstants;
+import org.jboss.tools.smooks.model.util.SmooksModelUtils;
+import org.jboss.tools.smooks.ui.IXMLStructuredObject;
+import org.jboss.tools.smooks.ui.gef.model.AbstractStructuredDataModel;
+import org.jboss.tools.smooks.ui.gef.model.GraphRootModel;
+import org.jboss.tools.smooks.ui.gef.model.IConnectableModel;
+import org.jboss.tools.smooks.ui.gef.model.IGraphicalModelListener;
+import org.jboss.tools.smooks.ui.gef.model.LineConnectionModel;
+import org.jboss.tools.smooks.ui.gef.model.PropertyModel;
+import org.jboss.tools.smooks.ui.modelparser.SmooksConfigurationFileGenerateContext;
+import org.jboss.tools.smooks.utils.UIUtils;
+
+/**
+ * @author Dart
+ *
+ */
+public class BeanPopulatorGraphicalModelListener implements
+ IGraphicalModelListener {
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.jboss.tools.smooks.ui.gef.model.IGraphicalModelListener#modelAdded
+ * (java.lang.Object,
+ * org.jboss.tools.smooks.ui.modelparser.SmooksConfigurationFileGenerateContext
+ * )
+ */
+ public void modelAdded(Object graphicalModel,
+ SmooksConfigurationFileGenerateContext context) {
+ if (graphicalModel instanceof LineConnectionModel) {
+ if (isBeanCreationConnection((LineConnectionModel) graphicalModel)) {
+ addNewResourceConfig((LineConnectionModel) graphicalModel,
+ context);
+ return;
+ }
+
+ if (isPropertyBindingConnection((LineConnectionModel) graphicalModel)) {
+ addNewPropertyBinding((LineConnectionModel) graphicalModel,
+ context);
+ return;
+ }
+
+ if (isReferenceBindingConnection((LineConnectionModel) graphicalModel)) {
+ addNewReferenceBinding((LineConnectionModel) graphicalModel,
+ context);
+ return;
+ }
+ }
+ }
+
+ protected void addNewReferenceBinding(LineConnectionModel line,
+ SmooksConfigurationFileGenerateContext context) {
+ Object source = ((AbstractStructuredDataModel) line.getSource())
+ .getReferenceEntityModel();
+ if (!(source instanceof JavaBeanModel)) {
+ return;
+ }
+
+ Object target = ((AbstractStructuredDataModel) line.getTarget())
+ .getReferenceEntityModel();
+ if (!(target instanceof JavaBeanModel)) {
+ return;
+ }
+ JavaBeanModel sourceParent = ((JavaBeanModel) source).getParent();
+ IConnectableModel sourceParentGraph = (IConnectableModel) UIUtils
+ .findGraphModel(context.getGraphicalRootModel(), sourceParent);
+ IConnectableModel targetGraph = (IConnectableModel) UIUtils
+ .findGraphModel(context.getGraphicalRootModel(), target);
+
+ if (sourceParentGraph == null || targetGraph == null)
+ return;
+ List sourceParentConnections = sourceParentGraph
+ .getModelTargetConnections();
+ List targetConnections = targetGraph.getModelTargetConnections();
+ if (sourceParentConnections.size() <= 0
+ || sourceParentConnections.size() > 2) {
+ return;
+ }
+ if (targetConnections.size() <= 0 || targetConnections.size() > 2) {
+ return;
+ }
+ ResourceConfigType hostResourceConfig = null;
+ ResourceConfigType referenceResourceConfig = null;
+ for (Iterator iterator = sourceParentConnections.iterator(); iterator
+ .hasNext();) {
+ LineConnectionModel connection = (LineConnectionModel) iterator
+ .next();
+ if (isBeanCreationConnection(connection)) {
+ ResourceConfigType re = getResourceConfig(connection);
+ if (re != null)
+ hostResourceConfig = re;
+ break;
+ }
+ }
+
+ for (Iterator iterator = targetConnections.iterator(); iterator
+ .hasNext();) {
+ LineConnectionModel connection = (LineConnectionModel) iterator
+ .next();
+ if (isBeanCreationConnection(connection)) {
+ ResourceConfigType re = getResourceConfig(connection);
+ if (re != null)
+ referenceResourceConfig = re;
+ break;
+ }
+ }
+ if (hostResourceConfig != null) {
+ setReferenceResourceConfig(hostResourceConfig, line);
+ if (referenceResourceConfig != null) {
+ String beanId = SmooksModelUtils.getParmaText(
+ SmooksModelConstants.BEAN_ID, referenceResourceConfig);
+ if (beanId == null) {
+ return;
+ }
+ beanId = beanId.trim();
+ String propertyName = ((JavaBeanModel)source).getName();
+ if(((JavaBeanModel)sourceParent).isArray() || ((JavaBeanModel)sourceParent).isList()){
+ propertyName = null;
+ }
+ String selector = "${" + beanId +"}";
+ addBindingToParamType(hostResourceConfig, propertyName, selector, line);
+ }
+ }
+ }
+
+ private void setReferenceResourceConfig(ResourceConfigType resourceConfig,
+ LineConnectionModel connection) {
+ connection.updateAndAddProperty(
+ BeanPopulatorMappingAnalyzer.REFERENCE_RESOURCE_CONFIG, resourceConfig);
+ }
+
+ private ResourceConfigType getResourceConfig(LineConnectionModel line) {
+ Object obj = line
+ .getProperty(BeanPopulatorMappingAnalyzer.REFERENCE_RESOURCE_CONFIG);
+ if (obj != null && obj instanceof ResourceConfigType) {
+ return (ResourceConfigType) obj;
+ }
+ return null;
+ }
+
+ protected void addNewPropertyBinding(LineConnectionModel graphicalModel,
+ SmooksConfigurationFileGenerateContext context) {
+ JavaBeanModel target = (JavaBeanModel) ((AbstractStructuredDataModel) graphicalModel
+ .getTarget()).getReferenceEntityModel();
+ ResourceConfigType reference = findReferenceResourceConfig(context
+ .getGraphicalRootModel(), target);
+ if (reference != null) {
+ addPropertyBinding(reference, graphicalModel);
+ }
+ }
+
+ private ResourceConfigType findReferenceResourceConfig(GraphRootModel root,
+ JavaBeanModel target) {
+ JavaBeanModel javaBeanModel = target.getParent();
+ if (javaBeanModel == null || javaBeanModel instanceof JavaBeanList) {
+ return null;
+ }
+ AbstractStructuredDataModel graphModel = UIUtils.findGraphModel(root,
+ javaBeanModel);
+ if (graphModel != null && graphModel instanceof IConnectableModel) {
+ List connections = ((IConnectableModel) graphModel)
+ .getModelTargetConnections();
+ for (Iterator iterator = connections.iterator(); iterator.hasNext();) {
+ LineConnectionModel connection = (LineConnectionModel) iterator
+ .next();
+ if (isBeanCreationConnection(connection)) {
+ Object obj = connection
+ .getProperty(BeanPopulatorMappingAnalyzer.REFERENCE_RESOURCE_CONFIG);
+ if (obj == null || !(obj instanceof ResourceConfigType))
+ return null;
+ return (ResourceConfigType) obj;
+ }
+ }
+ }
+ return null;
+ }
+
+ private ParamType getBindingsParamType(ResourceConfigType config) {
+ List<ParamType> list = config.getParam();
+ for (Iterator iterator = list.iterator(); iterator.hasNext();) {
+ ParamType paramType = (ParamType) iterator.next();
+ String name = paramType.getName();
+ if (name != null)
+ name = name.trim();
+ if (SmooksModelUtils.BINDINGS.equals(name)) {
+ return paramType;
+ }
+ }
+ return null;
+ }
+
+ protected IXMLStructuredObject ignoreRootParentNode(
+ IXMLStructuredObject node) {
+ IXMLStructuredObject parent = node.getParent();
+ if (parent == null || parent.isRootNode())
+ return node;
+ IXMLStructuredObject temp = parent;
+ while (temp != null && !temp.isRootNode()) {
+ temp = temp.getParent();
+ if (temp == null || temp.isRootNode()) {
+ return parent;
+ }
+ parent = temp;
+ }
+ return parent;
+ }
+
+ protected IXMLStructuredObject rootParentNode(IXMLStructuredObject node) {
+ return UIUtils.getRootParent(node);
+ }
+
+ protected IXMLStructuredObject parentNode(IXMLStructuredObject node) {
+ IXMLStructuredObject parent = node.getParent();
+ if (parent != null)
+ return parent;
+ return node;
+ }
+
+ private void addPropertyBinding(ResourceConfigType resourceConfig,
+ LineConnectionModel line) {
+ JavaBeanModel target = (JavaBeanModel) ((AbstractStructuredDataModel) line
+ .getTarget()).getReferenceEntityModel();
+ JavaBeanModel targetParent = target.getParent();
+ Object source = ((AbstractStructuredDataModel) line.getSource())
+ .getReferenceEntityModel();
+ String propertyName = target.getName();
+ //
+ IXMLStructuredObject contextNode = ignoreRootParentNode((IXMLStructuredObject) source);
+ if (targetParent.isList() || targetParent.isArray()) {
+ propertyName = null;
+ //
+ contextNode = parentNode((IXMLStructuredObject) source);
+ }
+ String currentSelectorName = null;
+ if (source instanceof IXMLStructuredObject) {
+ currentSelectorName = UIUtils.generatePath(
+ (IXMLStructuredObject) source, contextNode, " ", false);
+ }
+
+ if (currentSelectorName == null)
+ return;
+ addBindingToParamType(resourceConfig, propertyName,
+ currentSelectorName, line);
+ }
+
+ private void addBindingToParamType(ResourceConfigType resourceConfig,
+ String propertyName, String currentSelectorName,
+ LineConnectionModel line) {
+ ParamType bindingsParam = getBindingsParamType(resourceConfig);
+ if (bindingsParam == null) {
+ bindingsParam = SmooksFactory.eINSTANCE.createParamType();
+ bindingsParam.setName(SmooksModelConstants.BINDINGS);
+ resourceConfig.getParam().add(bindingsParam);
+ }
+ AnyType binding = SmooksModelUtils.addBindingTypeToParamType(
+ bindingsParam, propertyName, currentSelectorName, null, null);
+ UIUtils
+ .assignConnectionPropertyToBinding(
+ line,
+ binding,
+ new String[] {
+ "property", "selector", BeanPopulatorMappingAnalyzer.BINDING_TYPE, BeanPopulatorMappingAnalyzer.REFERENCE_RESOURCE_CONFIG }); //$NON-NLS-1$ //$NON-NLS-2$
+
+ }
+
+ protected void removeResourceConfigAssociatedConnections(
+ JavaBeanModel parent, GraphRootModel root,
+ ResourceConfigType referenceResourceConfig) {
+ IConnectableModel parentGraphModel = (IConnectableModel) UIUtils
+ .findGraphModel(root, parent);
+ List targetConnections = parentGraphModel.getModelTargetConnections();
+ List temp1 = new ArrayList(targetConnections);
+ for (Iterator iterator = temp1.iterator(); iterator
+ .hasNext();) {
+ LineConnectionModel targetConnection = (LineConnectionModel) iterator.next();
+ if(isReferenceBindingConnection(targetConnection)){
+ targetConnection.disConnect();
+ }
+ }
+ temp1.clear();
+ temp1 = null;
+
+ List<IXMLStructuredObject> children = parent.getChildren();
+ for (Iterator iterator = children.iterator(); iterator.hasNext();) {
+ IXMLStructuredObject structuredObject = (IXMLStructuredObject) iterator
+ .next();
+ IConnectableModel childTarget = (IConnectableModel) UIUtils
+ .findGraphModel(root, structuredObject);
+ if (childTarget == null)
+ continue;
+ List connections1 = childTarget.getModelTargetConnections();
+ List temp = new ArrayList(connections1);
+ for (Iterator iterator2 = temp.iterator(); iterator2.hasNext();) {
+ LineConnectionModel connection1 = (LineConnectionModel) iterator2
+ .next();
+ if (referenceResourceConfig == connection1
+ .getProperty(BeanPopulatorMappingAnalyzer.REFERENCE_RESOURCE_CONFIG)) {
+ connection1.disConnect();
+ }
+ }
+ temp.clear();
+
+ List connections2 = childTarget.getModelSourceConnections();
+ temp = new ArrayList(connections2);
+ for (Iterator iterator2 = temp.iterator(); iterator2.hasNext();) {
+ LineConnectionModel connection2 = (LineConnectionModel) iterator2
+ .next();
+ if (referenceResourceConfig == connection2
+ .getProperty(BeanPopulatorMappingAnalyzer.REFERENCE_RESOURCE_CONFIG)) {
+ connection2.disConnect();
+ }
+ }
+ temp.clear();
+ temp = null;
+ }
+ }
+
+ protected void removeResourceConfig(LineConnectionModel line,
+ SmooksConfigurationFileGenerateContext context) {
+ Object value = line
+ .getProperty(BeanPopulatorMappingAnalyzer.REFERENCE_RESOURCE_CONFIG);
+ if (value == null || !(value instanceof ResourceConfigType))
+ return;
+ ResourceConfigType resourceConfig = (ResourceConfigType) value;
+ SmooksResourceListType listType = context.getSmooksResourceListModel();
+ listType.getAbstractResourceConfig().remove(resourceConfig);
+ GraphRootModel graphRoot = context.getGraphicalRootModel();
+ AbstractStructuredDataModel transformData = (AbstractStructuredDataModel) line
+ .getTarget();
+ JavaBeanModel targetModel = (JavaBeanModel) transformData
+ .getReferenceEntityModel();
+ removeResourceConfigAssociatedConnections(targetModel, graphRoot,
+ resourceConfig);
+ }
+
+ protected void addNewResourceConfig(LineConnectionModel graphicalModel,
+ SmooksConfigurationFileGenerateContext context) {
+ ResourceConfigType resourceConfig = SmooksFactory.eINSTANCE
+ .createResourceConfigType();
+ configNewResourceConfig(resourceConfig,
+ (LineConnectionModel) graphicalModel);
+ SmooksResourceListType listType = context.getSmooksResourceListModel();
+ EditingDomain domain = context.getDomain();
+ UIUtils.addResourceConfigType(domain, listType, resourceConfig);
+ PropertyModel bindingModel = new PropertyModel(
+ BeanPopulatorMappingAnalyzer.REFERENCE_RESOURCE_CONFIG, resourceConfig);
+ ((LineConnectionModel) graphicalModel).addPropertyModel(bindingModel);
+ }
+
+ private boolean isPropertyBindingConnection(LineConnectionModel connection) {
+ return BeanPopulatorMappingAnalyzer.PROPERTY_BINDING.equals(connection
+ .getProperty(BeanPopulatorMappingAnalyzer.BINDING_TYPE));
+ }
+
+ private boolean isReferenceBindingConnection(LineConnectionModel connection) {
+ return BeanPopulatorMappingAnalyzer.REFERENCE_BINDING.equals(connection
+ .getProperty(BeanPopulatorMappingAnalyzer.BINDING_TYPE));
+ }
+
+ private boolean isBeanCreationConnection(LineConnectionModel connection) {
+ return BeanPopulatorMappingAnalyzer.BEAN_CREATION.equals(connection
+ .getProperty(BeanPopulatorMappingAnalyzer.BINDING_TYPE));
+ }
+
+ protected void configNewResourceConfig(ResourceConfigType resourceConfig,
+ LineConnectionModel line) {
+ JavaBeanModel target = (JavaBeanModel) ((AbstractStructuredDataModel) line
+ .getTarget()).getReferenceEntityModel();
+ Object source = ((AbstractStructuredDataModel) line.getSource())
+ .getReferenceEntityModel();
+ String sourceSelector = null;
+ if (source instanceof IXMLStructuredObject) {
+ sourceSelector = ((IXMLStructuredObject) source).getNodeName();
+ }
+ if (sourceSelector != null) {
+ resourceConfig.setSelector(sourceSelector);
+ }
+ ResourceType resource = SmooksFactory.eINSTANCE.createResourceType();
+ resourceConfig.setResource(resource);
+ resource.setStringValue(SmooksModelConstants.BEAN_POPULATOR);
+
+ ParamType beanIdParam = SmooksFactory.eINSTANCE.createParamType();
+ String beanId = generateBeanId(resourceConfig, target);
+ beanIdParam.setName(SmooksModelConstants.BEAN_ID);
+ SmooksModelUtils.setTextToAnyType(beanIdParam, beanId);
+ resourceConfig.getParam().add(beanIdParam);
+
+ ParamType beanClassParam = SmooksFactory.eINSTANCE.createParamType();
+ beanClassParam.setName(SmooksModelConstants.BEAN_CLASS);
+ SmooksModelUtils.setTextToAnyType(beanClassParam, target
+ .getBeanClassString());
+ resourceConfig.getParam().add(beanClassParam);
+
+ ParamType bindingsParam = SmooksFactory.eINSTANCE.createParamType();
+ bindingsParam.setName(SmooksModelConstants.BINDINGS);
+ resourceConfig.getParam().add(bindingsParam);
+ }
+
+ private String generateBeanId(ResourceConfigType resourceConfig,
+ JavaBeanModel target) {
+ return target.getName();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.jboss.tools.smooks.ui.gef.model.IGraphicalModelListener#modelChanged
+ * (java.lang.Object,
+ * org.jboss.tools.smooks.ui.modelparser.SmooksConfigurationFileGenerateContext
+ * )
+ */
+ public void modelChanged(Object graphicalModel,
+ SmooksConfigurationFileGenerateContext context) {
+
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.jboss.tools.smooks.ui.gef.model.IGraphicalModelListener#modelRemoved
+ * (java.lang.Object,
+ * org.jboss.tools.smooks.ui.modelparser.SmooksConfigurationFileGenerateContext
+ * )
+ */
+ public void modelRemoved(Object graphicalModel,
+ SmooksConfigurationFileGenerateContext context) {
+ if (graphicalModel instanceof LineConnectionModel) {
+ LineConnectionModel line = ((LineConnectionModel) graphicalModel);
+ if (isBeanCreationConnection(line)) {
+ removeResourceConfig(line, context);
+ return;
+ }
+ if (isPropertyBindingConnection(line)) {
+ removePropertyBinding(line, context);
+ return;
+ }
+
+ if (isReferenceBindingConnection(line)) {
+ removeReferenceBinding(line, context);
+ return;
+ }
+ }
+ }
+
+ protected void removeReferenceBinding(LineConnectionModel line,
+ SmooksConfigurationFileGenerateContext context) {
+ Object value = line
+ .getProperty(BeanPopulatorMappingAnalyzer.REFERENCE_RESOURCE_CONFIG);
+ if (value == null || !(value instanceof ResourceConfigType))
+ return;
+ ResourceConfigType resourceConfig = (ResourceConfigType) value;
+ AbstractStructuredDataModel transformTargetData = (AbstractStructuredDataModel) line
+ .getTarget();
+ String beanId = getBeanId((IConnectableModel) transformTargetData);
+ if (beanId == null)
+ return;
+ beanId = "${" + beanId + "}";
+ AnyType binding = findBindingViaSelector(beanId, resourceConfig);
+ ParamType param = getBindingsParamType(resourceConfig);
+ if (binding == null || param == null)
+ return;
+ List<Object> bindingList = (List<Object>) param.getMixed().get(
+ SmooksModelUtils.ELEMENT_BINDING, false);
+ bindingList.remove(binding);
+ }
+
+ private String getBeanId(IConnectableModel targetPoint) {
+ List connections = targetPoint.getModelTargetConnections();
+ if (connections.size() < 1 || connections.size() > 2)
+ return null;
+ for (Iterator iterator = connections.iterator(); iterator.hasNext();) {
+ LineConnectionModel connection = (LineConnectionModel) iterator
+ .next();
+ if (BeanPopulatorMappingAnalyzer.BEAN_CREATION.equals(connection
+ .getProperty(BeanPopulatorMappingAnalyzer.BINDING_TYPE))) {
+ Object obj = connection
+ .getProperty(BeanPopulatorMappingAnalyzer.REFERENCE_RESOURCE_CONFIG);
+ if (obj == null || !(obj instanceof ResourceConfigType)) {
+
+ } else {
+ return SmooksModelUtils.getParmaText(
+ SmooksModelUtils.BEAN_ID, (ResourceConfigType) obj);
+ }
+ }
+ }
+ return null;
+ }
+
+ protected void removePropertyBinding(LineConnectionModel line,
+ SmooksConfigurationFileGenerateContext context) {
+ Object value = line
+ .getProperty(BeanPopulatorMappingAnalyzer.REFERENCE_RESOURCE_CONFIG);
+ if (value == null || !(value instanceof ResourceConfigType))
+ return;
+ ResourceConfigType resourceConfig = (ResourceConfigType) value;
+ AbstractStructuredDataModel transformData = (AbstractStructuredDataModel) line
+ .getTarget();
+ JavaBeanModel targetModel = (JavaBeanModel) transformData
+ .getReferenceEntityModel();
+ AnyType binding = findBindingViaProperty(targetModel.getName(),
+ resourceConfig);
+ ParamType param = getBindingsParamType(resourceConfig);
+ if (binding == null || param == null)
+ return;
+ List<Object> bindingList = (List<Object>) param.getMixed().get(
+ SmooksModelUtils.ELEMENT_BINDING, false);
+ bindingList.remove(binding);
+ }
+
+ protected AnyType findBindingViaProperty(String property,
+ ResourceConfigType resourceConfig) {
+ List bindingList = SmooksModelUtils
+ .getBindingListFromResourceConfigType(resourceConfig);
+ for (Iterator iterator = bindingList.iterator(); iterator.hasNext();) {
+ Object object = (Object) iterator.next();
+ if (!(object instanceof AnyType))
+ continue;
+ String value = SmooksModelUtils.getAttributeValueFromAnyType(
+ (AnyType) object, SmooksModelUtils.ATTRIBUTE_PROPERTY);
+ if (value == null)
+ continue;
+ value = value.trim();
+ if (property.equalsIgnoreCase(value)) {
+ return (AnyType) object;
+ }
+ }
+ return null;
+ }
+
+ protected AnyType findBindingViaSelector(String selector,
+ ResourceConfigType resourceConfig) {
+ List bindingList = SmooksModelUtils
+ .getBindingListFromResourceConfigType(resourceConfig);
+ for (Iterator iterator = bindingList.iterator(); iterator.hasNext();) {
+ Object object = (Object) iterator.next();
+ if (!(object instanceof AnyType))
+ continue;
+ String value = SmooksModelUtils.getAttributeValueFromAnyType(
+ (AnyType) object, SmooksModelUtils.ATTRIBUTE_SELECTOR);
+ if (value == null)
+ continue;
+ value = value.trim();
+ if (selector.equalsIgnoreCase(value)) {
+ return (AnyType) object;
+ }
+ }
+ return null;
+ }
+
+}
Property changes on: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/BeanPopulatorGraphicalModelListener.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/BeanPopulatorMappingAnalyzer.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/BeanPopulatorMappingAnalyzer.java (rev 0)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/BeanPopulatorMappingAnalyzer.java 2009-01-18 07:45:38 UTC (rev 13105)
@@ -0,0 +1,375 @@
+/**
+ *
+ */
+package org.jboss.tools.smooks.javabean.ui;
+
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.emf.ecore.xml.type.AnyType;
+import org.jboss.tools.smooks.analyzer.DesignTimeAnalyzeResult;
+import org.jboss.tools.smooks.analyzer.IMappingAnalyzer;
+import org.jboss.tools.smooks.analyzer.MappingModel;
+import org.jboss.tools.smooks.analyzer.MappingResourceConfigList;
+import org.jboss.tools.smooks.analyzer.SmooksAnalyzerException;
+import org.jboss.tools.smooks.javabean.model.JavaBeanList;
+import org.jboss.tools.smooks.javabean.model.JavaBeanModel;
+import org.jboss.tools.smooks.model.AbstractResourceConfig;
+import org.jboss.tools.smooks.model.ParamType;
+import org.jboss.tools.smooks.model.ResourceConfigType;
+import org.jboss.tools.smooks.model.ResourceType;
+import org.jboss.tools.smooks.model.SmooksResourceListType;
+import org.jboss.tools.smooks.model.util.SmooksModelConstants;
+import org.jboss.tools.smooks.model.util.SmooksModelUtils;
+import org.jboss.tools.smooks.ui.IXMLStructuredObject;
+import org.jboss.tools.smooks.ui.gef.model.PropertyModel;
+import org.jboss.tools.smooks.ui.modelparser.SmooksConfigurationFileGenerateContext;
+import org.jboss.tools.smooks.utils.UIUtils;
+
+/**
+ * @author Dart
+ *
+ */
+public class BeanPopulatorMappingAnalyzer implements IMappingAnalyzer {
+ public static final String BINDING_TYPE = "bindingType";
+
+ public static final String REFERENCE_RESOURCE_CONFIG = "reference_resourceConfig";
+
+ public static final String BEAN_CREATION = "beanCreation";
+
+ public static final String PROPERTY_BINDING = "propertyBinding";
+
+ public static final String REFERENCE_BINDING = "referenceBinding";
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.jboss.tools.smooks.analyzer.IMappingAnalyzer#analyzeGraphModel(org
+ * .jboss
+ * .tools.smooks.ui.modelparser.SmooksConfigurationFileGenerateContext)
+ */
+ public DesignTimeAnalyzeResult[] analyzeGraphModel(
+ SmooksConfigurationFileGenerateContext context) {
+ return null;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.jboss.tools.smooks.analyzer.IMappingAnalyzer#analyzeMappingGraphModel
+ * (
+ * org.jboss.tools.smooks.ui.modelparser.SmooksConfigurationFileGenerateContext
+ * )
+ */
+ public void analyzeMappingGraphModel(
+ SmooksConfigurationFileGenerateContext context)
+ throws SmooksAnalyzerException {
+
+ }
+
+ protected boolean checkSourceAndTarget(Object sourceObject,
+ Object targetObject) {
+ return true;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.jboss.tools.smooks.analyzer.IMappingAnalyzer#analyzeMappingSmooksModel
+ * (org.jboss.tools.smooks.model.SmooksResourceListType, java.lang.Object,
+ * java.lang.Object)
+ */
+ public MappingResourceConfigList analyzeMappingSmooksModel(
+ SmooksResourceListType listType, Object sourceObject,
+ Object targetObject) {
+ MappingResourceConfigList mappingList = new MappingResourceConfigList();
+
+ if (!checkSourceAndTarget(sourceObject, targetObject)) {
+ return mappingList;
+ }
+
+ Object sourceModel = sourceObject;
+
+ JavaBeanList targetModel = (JavaBeanList) targetObject;
+
+ List<AbstractResourceConfig> resourceList = listType
+ .getAbstractResourceConfig();
+ for (Iterator<AbstractResourceConfig> iterator = resourceList
+ .iterator(); iterator.hasNext();) {
+ AbstractResourceConfig abstractResourceConfig = (AbstractResourceConfig) iterator
+ .next();
+ if (abstractResourceConfig instanceof ResourceConfigType) {
+ ResourceConfigType resourceConfig = (ResourceConfigType) abstractResourceConfig;
+ ResourceType resource = resourceConfig.getResource();
+ if (resource != null) {
+ String resourceValue = resource.getStringValue();
+ if (resourceValue == null)
+ continue;
+
+ if (!SmooksModelConstants.BEAN_POPULATOR
+ .equals(resourceValue))
+ continue;
+
+ String selector = resourceConfig.getSelector();
+ if (selector == null)
+ continue;
+ selector = selector.trim();
+ IXMLStructuredObject sourceNode = null;
+ if (sourceModel instanceof IXMLStructuredObject) {
+ sourceNode = UIUtils.localXMLNodeWithPath(selector,
+ (IXMLStructuredObject) sourceModel);
+ }
+ if (sourceNode == null) {
+ throw new RuntimeException(
+ "Can't find the node from resource-config selector string : "
+ + selector);
+ }
+
+ String bindingClass = SmooksModelUtils.getParmaText(
+ SmooksModelConstants.BEAN_CLASS, resourceConfig);
+ if (bindingClass == null) {
+ continue;
+ }
+
+ bindingClass = bindingClass.trim();
+ JavaBeanModel targetNode = findJavaBeanFrombeanList(
+ bindingClass, targetModel, mappingList , false);
+ if (targetNode == null) {
+ throw new RuntimeException(
+ "Can't find the class node : " + bindingClass);
+ }
+
+ MappingModel mapping = new MappingModel(sourceNode,
+ targetNode);
+ PropertyModel bindingProperty = new PropertyModel();
+ bindingProperty.setName(BINDING_TYPE);
+ bindingProperty.setValue(BEAN_CREATION);
+ mapping.getProperties().add(bindingProperty);
+
+ PropertyModel referenceProperty = new PropertyModel(
+ REFERENCE_RESOURCE_CONFIG, resourceConfig);
+ mapping.getProperties().add(referenceProperty);
+
+ mappingList.getMappingModelList().add(mapping);
+ mappingList.addResourceConfig(resourceConfig);
+
+ createPropertyConnection(listType, mappingList,
+ resourceConfig, sourceNode, targetNode);
+ }
+ }
+ }
+ return mappingList;
+ }
+
+ public static boolean isReferenceSelector(String selector) {
+ if (selector == null)
+ return false;
+ if (selector.startsWith("${") && selector.endsWith("}"))
+ return true;
+ return false;
+ }
+
+ protected void createPropertyConnection(SmooksResourceListType listType,
+ MappingResourceConfigList mappingList,
+ ResourceConfigType resourceConfig,
+ IXMLStructuredObject sourceModel, JavaBeanModel targetNode) {
+ List<Object> bindingList = SmooksModelUtils
+ .getBindingListFromResourceConfigType(resourceConfig);
+ if (bindingList != null) {
+ for (Iterator<Object> iterator = bindingList.iterator(); iterator
+ .hasNext();) {
+ Object object = (Object) iterator.next();
+ if (!(object instanceof AnyType))
+ continue;
+ AnyType binding = (AnyType) object;
+ String property = SmooksModelUtils
+ .getAttributeValueFromAnyType(binding,
+ SmooksModelUtils.ATTRIBUTE_PROPERTY);
+ if (property != null) {
+ property = property.trim();
+ }
+ String selector = SmooksModelUtils
+ .getAttributeValueFromAnyType(binding,
+ SmooksModelUtils.ATTRIBUTE_SELECTOR);
+ if (selector != null) {
+ selector = selector.trim();
+ }
+ boolean isReferenceBinding = false;
+ IXMLStructuredObject childSourceNode = null;
+ if (isReferenceSelector(selector)) {
+ ResourceConfigType referenceConfig = findResourceConfigTypeWithBeanId(
+ selector, listType);
+ if (referenceConfig == null)
+ continue;
+ String beanClass = SmooksModelUtils.getParmaText(
+ SmooksModelConstants.BEAN_CLASS, referenceConfig);
+ if (beanClass == null)
+ continue;
+ beanClass = beanClass.trim();
+ childSourceNode = findJavaBeanFrombeanList(beanClass,
+ (JavaBeanList) targetNode.getParent(), mappingList , true);
+ if (childSourceNode == null) {
+ throw new RuntimeException("Can't find the class "
+ + beanClass);
+ }
+ isReferenceBinding = true;
+ }
+
+ JavaBeanModel childTargetNode = findTheChildJavaBeanModel(
+ property, targetNode);
+ if (childTargetNode == null) {
+ throw new RuntimeException("Can't find the property "
+ + property + " in the " + targetNode.getName()
+ + " node");
+ }
+ if (childSourceNode == null) {
+ childSourceNode = UIUtils.localXMLNodeWithPath(selector,
+ sourceModel);
+ }
+
+ if (childSourceNode == null) {
+ throw new RuntimeException(
+ "Can't find the node from path : " + selector);
+ }
+
+ MappingModel mapping = null;
+ if (isReferenceBinding) {
+ mapping = new MappingModel(childTargetNode, childSourceNode);
+ } else {
+ mapping = new MappingModel(childSourceNode, childTargetNode);
+ }
+ UIUtils.assignBindingPropertyToMappingModel(binding, mapping,
+ new Object[] { SmooksModelUtils.ATTRIBUTE_PROPERTY,
+ SmooksModelUtils.ATTRIBUTE_SELECTOR });
+ PropertyModel bindingProperty = new PropertyModel();
+ bindingProperty.setName(BINDING_TYPE);
+ if (!isReferenceBinding) {
+ bindingProperty.setValue(PROPERTY_BINDING);
+ } else {
+ bindingProperty.setValue(REFERENCE_BINDING);
+ }
+ mapping.getProperties().add(
+ new PropertyModel(REFERENCE_RESOURCE_CONFIG,
+ resourceConfig));
+ mapping.getProperties().add(bindingProperty);
+ mappingList.getMappingModelList().add(mapping);
+
+ }
+ }
+ }
+
+ protected ResourceConfigType findResourceConfigTypeWithBeanId(
+ String selector, SmooksResourceListType listType) {
+ if (isReferenceSelector(selector)) {
+ selector = this.getBeanIdWithRawSelectorString(selector);
+ }
+ List rl = listType.getAbstractResourceConfig();
+ ResourceConfigType resourceConfig = null;
+ for (Iterator iterator = rl.iterator(); iterator.hasNext();) {
+ ResourceConfigType rct = (ResourceConfigType) iterator.next();
+ // if (this.isSelectorIsUsed(rct.getSelector()))
+ // continue;
+ String beanId = getBeanIDFromParam(rct);
+ if (selector.equals(beanId)) {
+ resourceConfig = rct;
+ break;
+ }
+ String selector1 = rct.getSelector();
+ if (selector1 != null)
+ selector1 = selector1.trim();
+ if (selector.equals(selector1)) {
+ resourceConfig = rct;
+ break;
+ }
+ }
+ return resourceConfig;
+ }
+
+ protected String getBeanIdWithRawSelectorString(String selector) {
+ selector = selector.substring(2, selector.length() - 1);
+ return selector;
+ }
+
+ protected String getBeanIDFromParam(ResourceConfigType config) {
+ List list = config.getParam();
+ for (Iterator iterator = list.iterator(); iterator.hasNext();) {
+ ParamType p = (ParamType) iterator.next();
+ if (SmooksModelUtils.BEAN_ID.equals(p.getName())) {
+ return SmooksModelUtils.getAnyTypeText(p);
+ }
+
+ }
+ return null;
+ }
+
+ protected JavaBeanModel findJavaBeanFrombeanList(String className,
+ JavaBeanList list, MappingResourceConfigList mappingList,
+ boolean ignoreMultipleConnection) {
+ List children = list.getChildren();
+ for (Iterator iterator = children.iterator(); iterator.hasNext();) {
+ JavaBeanModel javaBean = (JavaBeanModel) iterator.next();
+ if (className.equals(javaBean.getBeanClassString())) {
+ // If the node hasbean coonect
+ if (!ignoreMultipleConnection) {
+ if (isHasBeenConnected(mappingList, javaBean)) {
+ continue;
+ }
+ }
+ return javaBean;
+ }
+ }
+ return null;
+ }
+
+ private boolean isHasBeenConnected(MappingResourceConfigList mappingList,
+ JavaBeanModel javaBean) {
+ List<MappingModel> list = mappingList.getMappingModelList();
+ for (Iterator iterator = list.iterator(); iterator.hasNext();) {
+ MappingModel mappingModel = (MappingModel) iterator.next();
+ if (mappingModel.getTarget() == javaBean) {
+ if (BEAN_CREATION.equals(mappingModel
+ .getPropertyValue(BINDING_TYPE))) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Find the child JavaBeanModel from parent with the child name <br>
+ * If the parent JavabeanModel is "Collection" or "Array" , the child
+ * JavabeanModel is the first child of the parent model,it means that the
+ * param "name" is useless with the status.<br>
+ *
+ * TODO The method need to improve!!!!!
+ *
+ * @param name
+ * @param parentModel
+ * @return
+ */
+ public static JavaBeanModel findTheChildJavaBeanModel(String name,
+ JavaBeanModel parentModel) {
+ List list = parentModel.getProperties();
+ if (list == null)
+ return null;
+ if (parentModel.isList() || parentModel.isArray()) {
+ if (list.size() >= 1) {
+ JavaBeanModel m = (JavaBeanModel) list.get(0);
+ return m;
+ }
+ }
+
+ for (Iterator iterator = list.iterator(); iterator.hasNext();) {
+ JavaBeanModel child = (JavaBeanModel) iterator.next();
+ if (name.equals(child.getSelectorString())) {
+ return child;
+ }
+ }
+ return null;
+ }
+
+}
Property changes on: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/BeanPopulatorMappingAnalyzer.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/JavaBeanConfigWizardPage.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/JavaBeanConfigWizardPage.java 2009-01-18 07:41:24 UTC (rev 13104)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/JavaBeanConfigWizardPage.java 2009-01-18 07:45:38 UTC (rev 13105)
@@ -68,42 +68,10 @@
*/
public void createControl(Composite parent) {
initilize();
-// Composite cc = new Composite(parent,SWT.NONE);
-// cc.setLayout(new GridLayout());
try {
javaPropertySelectComposite = new JavaBeanModelLoadComposite(
parent, SWT.NONE, getContainer(), project);
javaPropertySelectComposite.addJavaBeanSelectionListener(this);
-// Button button = new Button(cc, SWT.BORDER);
-//
-// final TreeViewer vi = new TreeViewer(cc, SWT.NONE);
-// GridData gd = new GridData(GridData.FILL_BOTH);
-// gd.grabExcessHorizontalSpace = true;
-// gd.grabExcessVerticalSpace = true;
-// vi.setContentProvider(new BeanContentProvider());
-// vi.setLabelProvider(new BeanlabelProvider());
-// vi.getTree().setLayoutData(gd);
-//
-// javaPropertySelectComposite.setLayoutData(gd);
-// button.addSelectionListener(new SelectionAdapter() {
-//
-// /*
-// * (non-Javadoc)
-// *
-// * @see
-// * org.eclipse.swt.events.SelectionAdapter#widgetSelected(org
-// * .eclipse.swt.events.SelectionEvent)
-// */
-// @Override
-// public void widgetSelected(SelectionEvent e) {
-// // TODO Auto-generated method stub
-// super.widgetSelected(e);
-// List l = new ArrayList();
-// l.add(javaPropertySelectComposite.getCheckedJavaBeanModel());
-// vi.setInput(l);
-// }
-//
-// });
} catch (Exception e) {
throw new RuntimeException(e);
}
Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/JavaBeanLinePaintLitener.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/JavaBeanLinePaintLitener.java 2009-01-18 07:41:24 UTC (rev 13104)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/JavaBeanLinePaintLitener.java 2009-01-18 07:45:38 UTC (rev 13105)
@@ -6,13 +6,19 @@
import org.eclipse.draw2d.ColorConstants;
import org.eclipse.draw2d.Graphics;
import org.eclipse.draw2d.IFigure;
+import org.eclipse.draw2d.PolylineConnection;
import org.eclipse.draw2d.Shape;
+import org.eclipse.draw2d.geometry.Point;
+import org.eclipse.draw2d.geometry.PointList;
import org.eclipse.draw2d.geometry.Rectangle;
+import org.eclipse.gef.EditPart;
+import org.eclipse.gef.requests.CreateConnectionRequest;
import org.jboss.tools.smooks.javabean.model.JavaBeanModel;
import org.jboss.tools.smooks.ui.gef.figures.LinePaintListener;
import org.jboss.tools.smooks.ui.gef.model.AbstractStructuredDataModel;
import org.jboss.tools.smooks.ui.gef.model.IConnectableModel;
import org.jboss.tools.smooks.ui.gef.model.LineConnectionModel;
+import org.jboss.tools.smooks.ui.gef.model.TargetModel;
import org.jboss.tools.smooks.ui.gef.model.TreeItemRelationModel;
/**
@@ -20,8 +26,31 @@
*
*/
public class JavaBeanLinePaintLitener extends LinePaintListener {
+
+
@Override
+ public PolylineConnection createDummyFigure(CreateConnectionRequest req) {
+ EditPart editPart = req.getSourceEditPart();
+ if(editPart != null){
+ if(editPart.getModel() instanceof TargetModel){
+ return new TargetReferenceConnectionLine();
+ }
+ }
+ return super.createDummyFigure(req);
+ }
+
+ @Override
+ public PolylineConnection createHostFigure(LineConnectionModel model) {
+ IConnectableModel source = model.getSource();
+ IConnectableModel target = model.getTarget();
+ if(source instanceof TargetModel && target instanceof TargetModel){
+ return new TargetReferenceConnectionLine();
+ }
+ return super.createHostFigure(model);
+ }
+
+ @Override
public void drawLineAdditions(Graphics graphics, IFigure hostFigure,
LineConnectionModel model) {
((Shape) hostFigure).setLineStyle(Graphics.LINE_SOLID);
@@ -55,6 +84,22 @@
@Override
public void drawLineSourceLocator(Graphics graphics, IFigure hostFigure,
LineConnectionModel model) {
+ if(model.getSource() instanceof TargetModel){
+ PointList pointList = new PointList();
+ Rectangle bounds = hostFigure.getBounds();
+ Point p1 = bounds.getTopLeft();
+ p1.setLocation(p1.x, p1.y + bounds.height/2);
+ Point p2 = bounds.getBottomRight();
+ Point p3 = bounds.getTopRight();
+ pointList.addPoint(p1);
+ pointList.addPoint(p2);
+ pointList.addPoint(p3);
+ graphics.pushState();
+ graphics.setBackgroundColor(ColorConstants.darkGray);
+ graphics.fillPolygon(pointList);
+ graphics.popState();
+ return;
+ }
AbstractStructuredDataModel targetModel = (AbstractStructuredDataModel) model
.getTarget();
JavaBeanModel targetTransformModel = (JavaBeanModel) targetModel
@@ -69,6 +114,10 @@
@Override
public void drawLineTargetLocator(Graphics graphics, IFigure hostFigure,
LineConnectionModel model) {
+ if(model.getSource() instanceof TargetModel){
+ super.drawLineTargetLocator(graphics, hostFigure, model);
+ return;
+ }
AbstractStructuredDataModel targetModel = (AbstractStructuredDataModel) model
.getTarget();
JavaBeanModel targetTransformModel = (JavaBeanModel) targetModel
Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/JavaBeanModelLoadComposite.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/JavaBeanModelLoadComposite.java 2009-01-18 07:41:24 UTC (rev 13104)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/JavaBeanModelLoadComposite.java 2009-01-18 07:45:38 UTC (rev 13105)
@@ -16,25 +16,32 @@
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.IType;
-import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.jdt.core.search.IJavaSearchScope;
import org.eclipse.jdt.internal.corext.util.JavaModelUtil;
import org.eclipse.jdt.internal.ui.search.JavaSearchScopeFactory;
import org.eclipse.jdt.ui.IJavaElementSearchConstants;
import org.eclipse.jdt.ui.JavaUI;
import org.eclipse.jface.operation.IRunnableContext;
+import org.eclipse.jface.viewers.CellEditor;
+import org.eclipse.jface.viewers.CheckboxCellEditor;
+import org.eclipse.jface.viewers.ICellModifier;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.jface.viewers.ListViewer;
import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.TextCellEditor;
import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerCell;
import org.eclipse.jface.window.Window;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.MouseEvent;
+import org.eclipse.swt.events.MouseListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
@@ -42,6 +49,7 @@
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.dialogs.SelectionDialog;
import org.jboss.tools.smooks.javabean.model.JavaBeanModel;
@@ -134,30 +142,6 @@
GridData gd = new GridData(GridData.FILL_HORIZONTAL);
gd.horizontalSpan = 2;
classLabel.setLayoutData(gd);
- // Composite classTextContainer = new Composite(com, SWT.NONE);
- // GridData gd = new GridData(GridData.FILL_HORIZONTAL);
- // gd.grabExcessHorizontalSpace = true;
- // classTextContainer.setLayoutData(gd);
- //
- // GridLayout gl = new GridLayout();
- // gl.numColumns = 2;
- // classTextContainer.setLayout(gl);
- //
- // {
- // classText = new Text(classTextContainer, SWT.BORDER);
- // gd = new GridData(GridData.FILL_HORIZONTAL);
- // gd.grabExcessHorizontalSpace = true;
- // classText.setLayoutData(gd);
- // classText.addModifyListener(new ModifyListener() {
- // public void modifyText(ModifyEvent arg0) {
- // classFullName = classText.getText();
- // }
- // });
- //
- // classBrowseButton = new Button(classTextContainer, SWT.NONE);
- // classBrowseButton.addSelectionListener(this);
- // classBrowseButton.setText(Messages.getString("JavaBeanModelLoadComposite.Browse")); //$NON-NLS-1$
- // }
Composite listViewerComposite = new Composite(com, SWT.NONE);
GridLayout listLayout = new GridLayout();
@@ -168,7 +152,24 @@
listViewerComposite.setLayoutData(gd);
listViewer = new TableViewer(listViewerComposite, SWT.BORDER);
+ TableColumn nameColumn = new TableColumn(listViewer.getTable(),
+ SWT.NONE);
+ nameColumn.setText("Class");
+ TableColumn isArrayColumn = new TableColumn(listViewer.getTable(),
+ SWT.NONE);
+ isArrayColumn.setText("Array");
+ TableColumn isListColumn = new TableColumn(listViewer.getTable(),
+ SWT.NONE);
+ isListColumn.setText("List");
+
+ nameColumn.setWidth(400);
+ isArrayColumn.setWidth(60);
+ isListColumn.setWidth(60);
+
+ listViewer.getTable().setHeaderVisible(true);
+
gd = new GridData(GridData.FILL_BOTH);
+ listViewer.getTable().addMouseListener(new ColumnSelectionListener());
listViewer.getControl().setLayoutData(gd);
listViewer.setContentProvider(new IStructuredContentProvider() {
@@ -189,26 +190,7 @@
}
});
- listViewer.setLabelProvider(new LabelProvider() {
-
- @Override
- public Image getImage(Object element) {
- if (element instanceof JavaBeanModel) {
- return SmooksUIActivator.getDefault().getImageRegistry()
- .get(JavaImageConstants.IMAGE_JAVA_OBJECT);
- }
- return super.getImage(element);
- }
-
- @Override
- public String getText(Object element) {
- if (element instanceof JavaBeanModel) {
- return ((JavaBeanModel) element).getBeanClassString();
- }
- return super.getText(element);
- }
-
- });
+ listViewer.setLabelProvider(new BeanViewerLabelProvider());
listViewer.setInput(javabeanList);
Composite buttonArea = new Composite(listViewerComposite, SWT.NONE);
@@ -260,13 +242,17 @@
}
public void widgetSelected(SelectionEvent arg0) {
- IJavaSearchScope scope = JavaSearchScopeFactory.getInstance()
- .createJavaProjectSearchScope(javaProject, true);
+ IJavaSearchScope scope = JavaSearchScopeFactory.getInstance().createWorkspaceScope(true);
SelectionDialog dialog;
- Exception exception = null;
+ Throwable exception = null;
try {
- dialog = JavaUI.createTypeDialog(this.getShell(), runnableContext,
- scope, IJavaElementSearchConstants.CONSIDER_CLASSES, false);
+ dialog = JavaUI
+ .createTypeDialog(
+ this.getShell(),
+ runnableContext,
+ scope,
+ IJavaElementSearchConstants.CONSIDER_CLASSES_AND_INTERFACES,
+ false);
dialog.setMessage(Messages
.getString("JavaBeanModelLoadComposite.SourceJavaBean")); //$NON-NLS-1$
dialog.setTitle(Messages
@@ -301,7 +287,7 @@
}
}
}
- } catch (Exception e){
+ } catch (Throwable e) {
exception = e;
}
if (exception != null) {
@@ -309,10 +295,154 @@
.iterator(); iterator.hasNext();) {
IJavaBeanSelectionListener l = (IJavaBeanSelectionListener) iterator
.next();
- l.exceptionOccur(exception);
+ l.exceptionOccur(new Exception(exception));
}
}
}
+ private class BeanViewerCellModifyer implements ICellModifier {
+
+ public boolean canModify(Object element, String property) {
+ if (property.equals("name"))
+ return false;
+ return true;
+ }
+
+ public Object getValue(Object element, String property) {
+ if (element instanceof JavaBeanModel) {
+ if (property.equals("array")) {
+ return ((JavaBeanModel) element).isArray();
+ }
+ if (property.equals("list")) {
+ return ((JavaBeanModel) element).isList();
+ }
+ }
+ return Boolean.TRUE;
+ }
+
+ public void modify(Object element, String property, Object value) {
+
+ }
+
+ }
+
+ private class BeanViewerLabelProvider extends LabelProvider implements
+ ITableLabelProvider {
+
+ public Image getColumnImage(Object element, int columnIndex) {
+
+ if (element instanceof JavaBeanModel) {
+ boolean isArray = "array".equals(((JavaBeanModel) element)
+ .getExtendProperty("many"));
+ boolean isList = "list".equals(((JavaBeanModel) element)
+ .getExtendProperty("many"));
+ switch (columnIndex) {
+ case 0:
+ if (isArray) {
+ return SmooksUIActivator.getDefault().getImageRegistry().get(
+ JavaImageConstants.IMAGE_JAVA_ARRAY);
+ }
+ if (isList) {
+ return SmooksUIActivator.getDefault().getImageRegistry().get(
+ JavaImageConstants.IMAGE_JAVA_COLLECTION);
+ }
+ return SmooksUIActivator.getDefault().getImageRegistry()
+ .get(JavaImageConstants.IMAGE_JAVA_OBJECT);
+ case 1:
+ if (isArray) {
+ return SmooksUIActivator.getDefault()
+ .getImageRegistry()
+ .get(JavaImageConstants.IMAGE_CHECKBOX_CHECK);
+ } else {
+ return SmooksUIActivator.getDefault()
+ .getImageRegistry()
+ .get(JavaImageConstants.IMAGE_CHECKBOX_UNCHECK);
+ }
+ case 2:
+ if (isList) {
+ return SmooksUIActivator.getDefault()
+ .getImageRegistry()
+ .get(JavaImageConstants.IMAGE_CHECKBOX_CHECK);
+ } else {
+ return SmooksUIActivator.getDefault()
+ .getImageRegistry()
+ .get(JavaImageConstants.IMAGE_CHECKBOX_UNCHECK);
+ }
+ }
+ }
+ return null;
+ }
+
+ public String getColumnText(Object element, int columnIndex) {
+ if (element instanceof JavaBeanModel) {
+ switch (columnIndex) {
+ case 0:
+ return ((JavaBeanModel) element).getBeanClassString();
+ case 1:
+ return null;
+ case 2:
+ return null;
+ }
+ }
+ return null;
+ }
+
+ }
+
+ public class ColumnSelectionListener implements MouseListener {
+
+ public void widgetSelected(SelectionEvent e) {
+ }
+
+ public void widgetDefaultSelected(SelectionEvent e) {
+
+ }
+
+ public void mouseDoubleClick(MouseEvent e) {
+
+ }
+
+ public void mouseDown(MouseEvent e) {
+ if (!(e.button == 1))
+ return;
+ ViewerCell cell = listViewer.getCell(new Point(e.x, e.y));
+ if (cell != null) {
+ Object element = cell.getElement();
+ if (element instanceof JavaBeanModel) {
+ if (cell.getColumnIndex() == 1) {
+ String many = ((JavaBeanModel) element)
+ .getExtendProperty("many");
+ if ("array".equals(many)) {
+ ((JavaBeanModel) element).addExtendProperty("many",
+ "");
+ } else {
+ ((JavaBeanModel) element).addExtendProperty("many",
+ "array");
+ }
+ }
+ if (cell.getColumnIndex() == 2) {
+ String many = ((JavaBeanModel) element)
+ .getExtendProperty("many");
+ if ("list".equals(many)) {
+ ((JavaBeanModel) element).addExtendProperty("many",
+ "");
+ } else {
+ ((JavaBeanModel) element).addExtendProperty("many",
+ "list");
+ }
+ }
+ try {
+ listViewer.refresh(element);
+ } catch (Exception e1) {
+ }
+ }
+ }
+ }
+
+ public void mouseUp(MouseEvent e) {
+
+ }
+ }
+
}
Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/JavaBeanPropertiesSection.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/JavaBeanPropertiesSection.java 2009-01-18 07:41:24 UTC (rev 13104)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/JavaBeanPropertiesSection.java 2009-01-18 07:45:38 UTC (rev 13105)
@@ -386,7 +386,10 @@
PropertyModel pro = (PropertyModel) properties[i];
if (Messages
.getString("JavaBeanPropertiesSection.TypePropertyName").equalsIgnoreCase(pro.getName())) { //$NON-NLS-1$
- return pro.getValue();
+ Object value = pro.getValue();
+ if(value != null){
+ return value.toString();
+ }
}
}
return null;
Added: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/JavaBeanSourceBuilder.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/JavaBeanSourceBuilder.java (rev 0)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/JavaBeanSourceBuilder.java 2009-01-18 07:45:38 UTC (rev 13105)
@@ -0,0 +1,110 @@
+/**
+ *
+ */
+package org.jboss.tools.smooks.javabean.ui;
+
+import java.beans.PropertyChangeListener;
+import java.lang.reflect.Array;
+import java.lang.reflect.InvocationTargetException;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jdt.core.JavaModelException;
+import org.jboss.tools.smooks.analyzer.ISourceModelAnalyzer;
+import org.jboss.tools.smooks.graphical.GraphInformations;
+import org.jboss.tools.smooks.javabean.model.JavaBeanList;
+import org.jboss.tools.smooks.javabean.model.JavaBeanModel;
+import org.jboss.tools.smooks.javabean.model.JavaBeanModelFactory;
+import org.jboss.tools.smooks.model.AbstractResourceConfig;
+import org.jboss.tools.smooks.model.ResourceConfigType;
+import org.jboss.tools.smooks.model.ResourceType;
+import org.jboss.tools.smooks.model.SmooksResourceListType;
+import org.jboss.tools.smooks.model.util.SmooksModelConstants;
+import org.jboss.tools.smooks.utils.ProjectClassLoader;
+
+/**
+ * @author Dart
+ *
+ */
+public class JavaBeanSourceBuilder extends AbstractJavaBeanBuilder implements
+ ISourceModelAnalyzer {
+
+ public Object buildSourceInputObjects(GraphInformations graphInfo,
+ SmooksResourceListType listType, IFile sourceFile, Object viewer)
+ throws InvocationTargetException {
+ return buildSourceInputObjects(graphInfo, listType, sourceFile, viewer,
+ getClassLoader());
+ }
+
+ public Object buildSourceInputObjects(GraphInformations graphInfo,
+ SmooksResourceListType listType, IFile sourceFile, Object viewer,
+ ClassLoader classLoader) throws InvocationTargetException {
+ JavaBeanList beanList = new JavaBeanList();
+ if (classLoader == null) {
+ IProject project = sourceFile.getProject();
+ try {
+ classLoader = new ProjectClassLoader(JavaCore.create(project));
+ } catch (JavaModelException e) {
+ if (viewer instanceof PropertyChangeListener) {
+ beanList
+ .addPropertyChangeListener((PropertyChangeListener) viewer);
+ }
+ throw new InvocationTargetException(e);
+ }
+ }
+ List<AbstractResourceConfig> abstractResourceConfigList = listType
+ .getAbstractResourceConfig();
+ for (Iterator<AbstractResourceConfig> iterator = abstractResourceConfigList
+ .iterator(); iterator.hasNext();) {
+ AbstractResourceConfig abstractResourceConfig = (AbstractResourceConfig) iterator
+ .next();
+ if (abstractResourceConfig instanceof ResourceConfigType) {
+ ResourceConfigType resourceConfig = (ResourceConfigType) abstractResourceConfig;
+ ResourceType resource = resourceConfig.getResource();
+ if (resource != null) {
+ String resourceValue = resource.getStringValue();
+ if (resourceValue != null)
+ resourceValue = resourceValue.trim();
+ if (SmooksModelConstants.BEAN_POPULATOR
+ .equals(resourceValue)) {
+ String selector = resourceConfig.getSelector();
+ if (selector == null)
+ continue;
+ selector = selector.trim();
+ Class clazz = loadClassFromSelector(selector,
+ classLoader);
+ if (clazz != null) {
+ JavaBeanModel javaBeanModel = JavaBeanModelFactory
+ .getJavaBeanModelWithLazyLoad(clazz);
+ beanList.addJavaBean(javaBeanModel);
+ break;
+ }
+ }
+ }
+ }
+ }
+ if (viewer instanceof PropertyChangeListener) {
+ beanList.addPropertyChangeListener((PropertyChangeListener) viewer);
+ }
+ return beanList;
+ }
+
+ private Class loadClassFromSelector(String selector, ClassLoader loader)
+ throws InvocationTargetException {
+ try {
+ if (selector.endsWith("[]")) {
+ selector = selector.substring(0, selector.length() - 2);
+ Class arrayClass = loader.loadClass(selector);
+ Object arrayInstance = Array.newInstance(arrayClass, 0);
+ return arrayInstance.getClass();
+ }
+ return loader.loadClass(selector);
+ } catch (ClassNotFoundException e) {
+ return null;
+ }
+ }
+
+}
Property changes on: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/JavaBeanSourceBuilder.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/JavaBeanTargetBuilder.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/JavaBeanTargetBuilder.java (rev 0)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/JavaBeanTargetBuilder.java 2009-01-18 07:45:38 UTC (rev 13105)
@@ -0,0 +1,121 @@
+/**
+ *
+ */
+package org.jboss.tools.smooks.javabean.ui;
+
+import java.beans.PropertyChangeListener;
+import java.lang.reflect.Array;
+import java.lang.reflect.InvocationTargetException;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jdt.core.JavaModelException;
+import org.jboss.tools.smooks.analyzer.ITargetModelAnalyzer;
+import org.jboss.tools.smooks.graphical.GraphInformations;
+import org.jboss.tools.smooks.javabean.model.JavaBeanList;
+import org.jboss.tools.smooks.javabean.model.JavaBeanModel;
+import org.jboss.tools.smooks.javabean.model.JavaBeanModelFactory;
+import org.jboss.tools.smooks.model.AbstractResourceConfig;
+import org.jboss.tools.smooks.model.ResourceConfigType;
+import org.jboss.tools.smooks.model.ResourceType;
+import org.jboss.tools.smooks.model.SmooksResourceListType;
+import org.jboss.tools.smooks.model.util.SmooksModelConstants;
+import org.jboss.tools.smooks.model.util.SmooksModelUtils;
+import org.jboss.tools.smooks.utils.ProjectClassLoader;
+
+/**
+ * @author Dart
+ *
+ */
+public class JavaBeanTargetBuilder extends AbstractJavaBeanBuilder implements
+ ITargetModelAnalyzer {
+
+ public Object buildTargetInputObjects(GraphInformations graphInfo,
+ SmooksResourceListType listType, IFile sourceFile, Object viewer)
+ throws InvocationTargetException {
+ return buildTargetInputObjects(graphInfo, listType, sourceFile, viewer,
+ getClassLoader());
+ }
+
+ public Object buildTargetInputObjects(GraphInformations graphInfo,
+ SmooksResourceListType listType, IFile sourceFile, Object viewer,
+ ClassLoader classLoader) throws InvocationTargetException {
+ JavaBeanList beanList = new JavaBeanList();
+ if (classLoader == null) {
+ IProject project = sourceFile.getProject();
+ try {
+ classLoader = new ProjectClassLoader(JavaCore.create(project));
+ } catch (JavaModelException e) {
+ registeListener(viewer, beanList);
+ throw new InvocationTargetException(e);
+ }
+ }
+
+ List<AbstractResourceConfig> abstractResourceConfigList = listType
+ .getAbstractResourceConfig();
+ for (Iterator<AbstractResourceConfig> iterator = abstractResourceConfigList
+ .iterator(); iterator.hasNext();) {
+ AbstractResourceConfig abstractResourceConfig = (AbstractResourceConfig) iterator
+ .next();
+ if (abstractResourceConfig instanceof ResourceConfigType) {
+ ResourceConfigType resourceConfig = (ResourceConfigType) abstractResourceConfig;
+ ResourceType resource = resourceConfig.getResource();
+ if (resource != null) {
+ String resourceValue = resource.getStringValue();
+ if (resourceValue != null)
+ resourceValue = resourceValue.trim();
+ if (!SmooksModelConstants.BEAN_POPULATOR
+ .equals(resourceValue)) {
+ continue;
+ }
+ String beanClassString = SmooksModelUtils.getParmaText(
+ SmooksModelConstants.BEAN_CLASS, resourceConfig);
+ if (beanClassString == null)
+ continue;
+ beanClassString = beanClassString.trim();
+ Class clazz = loadClassFormBeanClassString(beanClassString,
+ classLoader);
+ if (clazz == null)
+ continue;
+ JavaBeanModel javaBean = JavaBeanModelFactory
+ .getJavaBeanModelWithLazyLoad(clazz);
+ registeListener(viewer, javaBean);
+ beanList.addJavaBean(javaBean);
+ }
+ }
+ }
+ registeListener(viewer, beanList);
+ return beanList;
+ }
+
+ private void registeListener(Object listener, JavaBeanModel javaBean) {
+ if (listener instanceof PropertyChangeListener) {
+ javaBean
+ .addPropertyChangeListener((PropertyChangeListener) listener);
+ }
+ }
+
+ protected Class loadClassFormBeanClassString(String beanClassString,
+ ClassLoader classLoader) {
+
+ try {
+ if (beanClassString.endsWith("[]")) {
+ beanClassString = beanClassString.substring(0, beanClassString
+ .length() - 2);
+ Class arrayClass = classLoader.loadClass(beanClassString);
+ Object arrayInstance = Array.newInstance(arrayClass, 0);
+ Class clazz = arrayInstance.getClass();
+ arrayInstance = null;
+ return clazz;
+ }
+ return classLoader.loadClass(beanClassString);
+ } catch (Exception e) {
+
+ }
+ return null;
+ }
+
+}
Property changes on: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/JavaBeanTargetBuilder.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/JavaBeanViewerActionProvider.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/JavaBeanViewerActionProvider.java (rev 0)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/JavaBeanViewerActionProvider.java 2009-01-18 07:45:38 UTC (rev 13105)
@@ -0,0 +1,41 @@
+/**
+ *
+ */
+package org.jboss.tools.smooks.javabean.ui;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.jboss.tools.smooks.javabean.ui.action.AddJavaBeanModelAction;
+import org.jboss.tools.smooks.javabean.ui.action.RemoveJavaBeanAction;
+import org.jboss.tools.smooks.ui.popup.ISmooksAction;
+import org.jboss.tools.smooks.ui.popup.IViewerActionsProvider;
+
+/**
+ * @author Dart
+ *
+ */
+public class JavaBeanViewerActionProvider implements IViewerActionsProvider {
+ private List<ISmooksAction> actionList = null;
+ public List<ISmooksAction> getActionList() {
+ if(actionList == null){
+ actionList = new ArrayList<ISmooksAction>();
+ actionList.add(createAddJavaBeanAction());
+ actionList.add(createRemoveJavaBeanModelAction());
+ }
+ return actionList;
+ }
+
+ protected AddJavaBeanModelAction createAddJavaBeanAction(){
+ AddJavaBeanModelAction action = new AddJavaBeanModelAction();
+ action.setText("Add JavaBean");
+ return action;
+ }
+
+ protected RemoveJavaBeanAction createRemoveJavaBeanModelAction(){
+ RemoveJavaBeanAction action = new RemoveJavaBeanAction();
+ action.setText("Remove JavaBean");
+ return action;
+ }
+
+}
Property changes on: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/JavaBeanViewerActionProvider.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/JavaImageConstants.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/JavaImageConstants.java 2009-01-18 07:41:24 UTC (rev 13104)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/JavaImageConstants.java 2009-01-18 07:45:38 UTC (rev 13105)
@@ -7,4 +7,8 @@
public static final String IMAGE_JAVA_COLLECTION = "icons/full/obj16/javalistmodel.gif";
public static final String IMAGE_JAVA_ARRAY = "icons/full/obj16/javaarraymodel.gif";
+
+ public static final String IMAGE_CHECKBOX_CHECK = "icons/full/obj16/checkbox_checked.gif";
+
+ public static final String IMAGE_CHECKBOX_UNCHECK = "icons/full/obj16/checkbox_uncheck.gif";
}
Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/NewJavaBeanStrucutredDataWizard.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/NewJavaBeanStrucutredDataWizard.java 2009-01-18 07:41:24 UTC (rev 13104)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/NewJavaBeanStrucutredDataWizard.java 2009-01-18 07:45:38 UTC (rev 13105)
@@ -10,6 +10,8 @@
******************************************************************************/
package org.jboss.tools.smooks.javabean.ui;
+import java.lang.reflect.Array;
+import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Properties;
@@ -27,7 +29,9 @@
import org.eclipse.ui.IFileEditorInput;
import org.eclipse.ui.INewWizard;
import org.eclipse.ui.IWorkbench;
+import org.jboss.tools.smooks.javabean.model.JavaBeanList;
import org.jboss.tools.smooks.javabean.model.JavaBeanModel;
+import org.jboss.tools.smooks.javabean.model.JavaBeanModelFactory;
import org.jboss.tools.smooks.ui.IStructuredDataCreationWizard;
import org.jboss.tools.smooks.ui.SmooksUIActivator;
@@ -39,6 +43,14 @@
IStructuredDataCreationWizard, INewWizard {
JavaBeanConfigWizardPage page = null;
IJavaProject project = null;
+ public IJavaProject getProject() {
+ return project;
+ }
+
+ public void setProject(IJavaProject project) {
+ this.project = project;
+ }
+
Object result = null;
Properties properties = new Properties();
@@ -67,12 +79,49 @@
return true;
}
- public Object getTreeViewerInputContents() {
- if (result == null)
+ public JavaBeanList getJavaBeanList() {
+ JavaBeanList list = new JavaBeanList();
+ if (result != null && result instanceof List) {
+ for (Iterator iterator = ((List) result).iterator(); iterator
+ .hasNext();) {
+ JavaBeanModel javabean = (JavaBeanModel) iterator.next();
+ boolean isArray = "array".equals(javabean
+ .getExtendProperty("many"));
+ boolean isList = "list".equals(javabean
+ .getExtendProperty("many"));
+ if (isArray) {
+ Object arrayInstance = Array.newInstance(javabean
+ .getBeanClass(), 0);
+ JavaBeanModel model = JavaBeanModelFactory
+ .getJavaBeanModelWithLazyLoad(arrayInstance
+ .getClass());
+ list.addJavaBean(model);
+ continue;
+ }
+ if(isList){
+ JavaBeanModel model = JavaBeanModelFactory
+ .getJavaBeanModelWithLazyLoad(ArrayList.class);
+ model.setComponentClass(javabean.getBeanClass());
+ list.addJavaBean(model);
+ continue;
+ }
+ list.addJavaBean(javabean);
+ }
+ }
+ if (list.getChildren().size() <= 0) {
return null;
+ }
+ return list;
+ }
+
+ public Object getResult() {
return result;
}
+ public Object getTreeViewerInputContents() {
+ return getJavaBeanList();
+ }
+
public void init(IEditorSite site, IEditorInput input) {
if (input != null && input instanceof IFileEditorInput) {
IFileEditorInput fi = (IFileEditorInput) input;
Added: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/TargetReferenceConnectionLine.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/TargetReferenceConnectionLine.java (rev 0)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/TargetReferenceConnectionLine.java 2009-01-18 07:45:38 UTC (rev 13105)
@@ -0,0 +1,85 @@
+/**
+ *
+ */
+package org.jboss.tools.smooks.javabean.ui;
+
+import org.eclipse.draw2d.Graphics;
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.draw2d.PolylineConnection;
+import org.eclipse.draw2d.geometry.Point;
+import org.eclipse.draw2d.geometry.PointList;
+import org.eclipse.draw2d.geometry.Rectangle;
+
+/**
+ * @author Dart
+ *
+ */
+public class TargetReferenceConnectionLine extends PolylineConnection {
+ protected void outlineShape(Graphics g) {
+ try {
+ g.setAlpha(100);
+ g.setForegroundColor(org.eclipse.draw2d.ColorConstants.red);
+ PointList displayPoints = getReferenceLinePoints();
+ if (displayPoints != null)
+ g.drawPolyline(displayPoints);
+ } catch (Exception e) {
+ e.printStackTrace();
+ super.outlineShape(g);
+ }
+ }
+
+ private PointList getReferenceLinePoints() {
+ PointList list = new PointList();
+ Point start = getStart();
+ Point end = getEnd();
+
+ if(getCenterWidth() <= 0){
+ return getPoints();
+ }
+
+ int width = getCenterWidth();
+ int h = Math.min(width/4, 15);
+
+
+ Point startnext = new Point(start.x - 30, start.y + h);
+
+ Point endnext = new Point(end.x - 30, end.y - h);
+
+ start = new Point(start.x - 5,start.y);
+ end = new Point(end.x - 5,end.y);
+
+ list.addPoint(start);
+ list.addPoint(startnext);
+ list.addPoint(endnext);
+ list.addPoint(end);
+
+ return list;
+
+ }
+
+ protected int getCenterWidth() {
+ return Math.abs(getStart().y - getEnd().y);
+ }
+
+ public Rectangle getBounds() {
+ if (bounds == null) {
+ if (this.getCenterWidth() <= 0)
+ return super.getBounds();
+ bounds = getReferenceLinePoints().getBounds();
+ bounds.expand(lineWidth / 2, lineWidth / 2);
+
+ for (int i = 0; i < getChildren().size(); i++) {
+ IFigure child = (IFigure) getChildren().get(i);
+ bounds.union(child.getBounds());
+ }
+ }
+ return bounds;
+ }
+
+ @Override
+ public boolean containsPoint(int x, int y) {
+ // TODO Auto-generated method stub
+ return super.containsPoint(x, y);
+ }
+
+}
Property changes on: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/TargetReferenceConnectionLine.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/action/AddJavaBeanModelAction.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/action/AddJavaBeanModelAction.java (rev 0)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/action/AddJavaBeanModelAction.java 2009-01-18 07:45:38 UTC (rev 13105)
@@ -0,0 +1,89 @@
+/**
+ *
+ */
+package org.jboss.tools.smooks.javabean.ui.action;
+
+import java.beans.PropertyChangeListener;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.wizard.WizardDialog;
+import org.jboss.tools.smooks.javabean.model.JavaBeanList;
+import org.jboss.tools.smooks.javabean.model.JavaBeanModel;
+import org.jboss.tools.smooks.javabean.ui.NewJavaBeanStrucutredDataWizard;
+import org.jboss.tools.smooks.ui.gef.model.AbstractStructuredDataModel;
+import org.jboss.tools.smooks.ui.gef.model.SourceModel;
+import org.jboss.tools.smooks.ui.modelparser.SmooksConfigurationFileGenerateContext;
+import org.jboss.tools.smooks.utils.UIUtils;
+
+/**
+ * @author Dart
+ *
+ */
+public class AddJavaBeanModelAction extends JavaBeanModelAction {
+ @Override
+ public void run() {
+ super.run();
+ SmooksConfigurationFileGenerateContext context = getSmooksContext();
+ if(context == null) return;
+
+ NewJavaBeanStrucutredDataWizard wizard = new NewJavaBeanStrucutredDataWizard();
+ IProject project = context.getSmooksConfigFile().getProject();
+ IJavaProject javaProject = null;
+ if (project instanceof IJavaProject) {
+ javaProject = (IJavaProject) project;
+ } else {
+ javaProject = JavaCore.create(project);
+ }
+ if(javaProject == null) return;
+
+ wizard.setProject(javaProject);
+ WizardDialog dialog = new WizardDialog(context.getShell(),wizard);
+ if(dialog.open() == Dialog.OK){
+ JavaBeanList list = wizard.getJavaBeanList();
+ TreeViewer viewer = (TreeViewer) getViewer();
+ Object input = viewer.getInput();
+ if(input == null){
+ if(viewer instanceof PropertyChangeListener){
+ list.addPropertyChangeListener((PropertyChangeListener)viewer);
+ }
+ viewer.setInput(list);
+ }else{
+ if(input instanceof JavaBeanList){
+ List children = list.getChildren();
+ for (Iterator iterator = children.iterator(); iterator
+ .hasNext();) {
+ JavaBeanModel javaBean = (JavaBeanModel) iterator.next();
+ ((JavaBeanList)input).addJavaBean(javaBean);
+ }
+ }
+ }
+ }
+ }
+
+
+ @Override
+ public void setSelection(ISelection selection) {
+ super.setSelection(selection);
+ setEnabled(true);
+ SmooksConfigurationFileGenerateContext context = getSmooksContext();
+ if(context == null) return;
+ List elements = ((IStructuredSelection) selection).toList();
+ for (Iterator iterator = elements.iterator(); iterator.hasNext();) {
+ JavaBeanModel model = (JavaBeanModel) iterator.next();
+ AbstractStructuredDataModel graphModel = UIUtils.findGraphModel(
+ context.getGraphicalRootModel(), model);
+ if(graphModel instanceof SourceModel){
+ setEnabled(false);
+ break;
+ }
+ }
+ }
+}
Property changes on: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/action/AddJavaBeanModelAction.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/action/JavaBeanModelAction.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/action/JavaBeanModelAction.java (rev 0)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/action/JavaBeanModelAction.java 2009-01-18 07:45:38 UTC (rev 13105)
@@ -0,0 +1,28 @@
+/**
+ *
+ */
+package org.jboss.tools.smooks.javabean.ui.action;
+
+import java.util.List;
+
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.jboss.tools.smooks.javabean.model.JavaBeanModel;
+import org.jboss.tools.smooks.ui.popup.SmooksAction;
+
+/**
+ * @author Dart
+ *
+ */
+public class JavaBeanModelAction extends SmooksAction{
+ public List getJavaBeanModelList(){
+ return ((IStructuredSelection)getSelection()).toList();
+ }
+
+ public JavaBeanModel getFirstJavaBeanModel(){
+ Object element = ((IStructuredSelection)getSelection()).getFirstElement();
+ if(element instanceof JavaBeanModel){
+ return (JavaBeanModel)element;
+ }
+ return null;
+ }
+}
Property changes on: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/action/JavaBeanModelAction.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/action/RemoveJavaBeanAction.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/action/RemoveJavaBeanAction.java (rev 0)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/action/RemoveJavaBeanAction.java 2009-01-18 07:45:38 UTC (rev 13105)
@@ -0,0 +1,90 @@
+/**
+ *
+ */
+package org.jboss.tools.smooks.javabean.ui.action;
+
+import java.beans.PropertyChangeListener;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.jboss.tools.smooks.javabean.model.JavaBeanList;
+import org.jboss.tools.smooks.javabean.model.JavaBeanModel;
+import org.jboss.tools.smooks.ui.gef.model.IConnectableModel;
+import org.jboss.tools.smooks.ui.gef.model.LineConnectionModel;
+import org.jboss.tools.smooks.ui.modelparser.SmooksConfigurationFileGenerateContext;
+import org.jboss.tools.smooks.utils.UIUtils;
+
+/**
+ * @author Dart
+ *
+ */
+public class RemoveJavaBeanAction extends JavaBeanModelAction {
+
+ @Override
+ public void run() {
+ super.run();
+ SmooksConfigurationFileGenerateContext context = getSmooksContext();
+ if(context == null) return;
+ List list = getJavaBeanModelList();
+ TreeViewer viewer = (TreeViewer)getViewer();
+ Object input = viewer.getInput();
+ JavaBeanList beanList = null;
+ if(input instanceof JavaBeanList){
+ beanList = (JavaBeanList)input;
+ }
+ if(beanList==null) return;
+ for (Iterator iterator = list.iterator(); iterator.hasNext();) {
+ JavaBeanModel model = (JavaBeanModel) iterator.next();
+ IConnectableModel graphModel = (IConnectableModel) UIUtils.findGraphModel(context.getGraphicalRootModel(), model);
+ if(graphModel != null){
+// disConnectAllConnections(graphModel);
+ }
+ if(viewer instanceof PropertyChangeListener){
+ model.removePropertyChangeListener((PropertyChangeListener)viewer);
+ }
+ beanList.removeJavaBean(model);
+ }
+ }
+
+ protected void disConnectAllConnections(IConnectableModel model){
+ List temp = new ArrayList(model.getModelSourceConnections());
+ for (Iterator iterator = temp.iterator(); iterator.hasNext();) {
+ LineConnectionModel connection = (LineConnectionModel) iterator.next();
+ connection.disConnect();
+ }
+ temp.clear();
+
+ temp = new ArrayList(model.getModelTargetConnections());
+ for (Iterator iterator = temp.iterator(); iterator.hasNext();) {
+ LineConnectionModel object = (LineConnectionModel) iterator.next();
+ object.disConnect();
+ }
+ temp.clear();
+ temp = null;
+ }
+
+ @Override
+ public void setSelection(ISelection selection) {
+ super.setSelection(selection);
+ setEnabled(true);
+ List list = getJavaBeanModelList();
+ if(list.size() <= 0){
+ setEnabled(false);
+ return;
+ }
+ for (Iterator iterator = list.iterator(); iterator.hasNext();) {
+ JavaBeanModel model = (JavaBeanModel) iterator.next();
+ JavaBeanModel parent = model.getParent();
+ if(parent != null && parent instanceof JavaBeanList){
+
+ }else{
+ setEnabled(false);
+ return;
+ }
+ }
+ }
+
+}
Property changes on: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/action/RemoveJavaBeanAction.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/ConnectionPropertySection.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/ConnectionPropertySection.java 2009-01-18 07:41:24 UTC (rev 13104)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/ConnectionPropertySection.java 2009-01-18 07:45:38 UTC (rev 13105)
@@ -68,7 +68,9 @@
pgd.grabExcessVerticalSpace = true;
rootParent.setLayoutData(pgd);
Section section = factory.createSection(parent, Section.TITLE_BAR);
- section.setText(Messages.getString("ConnectionPropertySection.ConnectionPropertiesSecionText")); //$NON-NLS-1$
+ section
+ .setText(Messages
+ .getString("ConnectionPropertySection.ConnectionPropertiesSecionText")); //$NON-NLS-1$
Composite mainComposite = factory.createComposite(section);
@@ -157,17 +159,24 @@
});
nameColumn.getColumn().setWidth(100);
- nameColumn.getColumn().setText(Messages.getString("ConnectionPropertySection.NameColumnText")); //$NON-NLS-1$
+ nameColumn.getColumn().setText(
+ Messages.getString("ConnectionPropertySection.NameColumnText")); //$NON-NLS-1$
TableViewerColumn valueColumn = new TableViewerColumn(tableViewer,
SWT.NONE);
valueColumn.getColumn().setWidth(100);
- valueColumn.getColumn().setText(Messages.getString("ConnectionPropertySection.ValueColumnText")); //$NON-NLS-1$
+ valueColumn
+ .getColumn()
+ .setText(
+ Messages
+ .getString("ConnectionPropertySection.ValueColumnText")); //$NON-NLS-1$
valueColumn.setLabelProvider(new CellLabelProvider() {
public void update(ViewerCell cell) {
Object obj = cell.getElement();
if (obj instanceof PropertyModel) {
- cell.setText(((PropertyModel) obj).getValue());
+ Object value = ((PropertyModel) obj).getValue();
+ if (value != null)
+ cell.setText(value.toString());
}
}
@@ -182,7 +191,8 @@
GridLayout gl = new GridLayout();
buttonComposite.setLayout(gl);
- Button button1 = factory.createButton(buttonComposite, Messages.getString("ConnectionPropertySection.NewButtonText"), //$NON-NLS-1$
+ Button button1 = factory.createButton(buttonComposite, Messages
+ .getString("ConnectionPropertySection.NewButtonText"), //$NON-NLS-1$
SWT.NONE);
button1.addSelectionListener(new SelectionListener() {
@@ -214,7 +224,8 @@
gd = new GridData(GridData.FILL_HORIZONTAL);
button1.setLayoutData(gd);
- Button button2 = factory.createButton(buttonComposite, Messages.getString("ConnectionPropertySection.DeleteButtonText"), //$NON-NLS-1$
+ Button button2 = factory.createButton(buttonComposite, Messages
+ .getString("ConnectionPropertySection.DeleteButtonText"), //$NON-NLS-1$
SWT.NONE);
gd = new GridData(GridData.FILL_HORIZONTAL);
button2.setLayoutData(gd);
@@ -286,7 +297,8 @@
case 1:
if (element instanceof PropertyModel) {
- return ((PropertyModel) element).getValue();
+ Object value = ((PropertyModel) element).getValue();
+ return value.toString();
}
return element.toString();
}
Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/IXMLStructuredObject.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/IXMLStructuredObject.java 2009-01-18 07:41:24 UTC (rev 13104)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/IXMLStructuredObject.java 2009-01-18 07:45:38 UTC (rev 13105)
@@ -19,5 +19,7 @@
public Object getID();
+ public boolean isRootNode();
+
public boolean isAttribute();
}
Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/SmooksUIActivator.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/SmooksUIActivator.java 2009-01-18 07:41:24 UTC (rev 13104)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/SmooksUIActivator.java 2009-01-18 07:45:38 UTC (rev 13105)
@@ -68,6 +68,10 @@
// regist java images
reg.put(JavaImageConstants.IMAGE_JAVA_ATTRIBUTE,
imageDescriptorFromPlugin(PLUGIN_ID, JavaImageConstants.IMAGE_JAVA_ATTRIBUTE));
+ reg.put(JavaImageConstants.IMAGE_CHECKBOX_CHECK,
+ imageDescriptorFromPlugin(PLUGIN_ID, JavaImageConstants.IMAGE_CHECKBOX_CHECK));
+ reg.put(JavaImageConstants.IMAGE_CHECKBOX_UNCHECK,
+ imageDescriptorFromPlugin(PLUGIN_ID, JavaImageConstants.IMAGE_CHECKBOX_UNCHECK));
reg.put(JavaImageConstants.IMAGE_JAVA_OBJECT,
imageDescriptorFromPlugin(PLUGIN_ID, "icons/full/obj16/class_obj.gif"));
reg.put(JavaImageConstants.IMAGE_JAVA_ARRAY,
Added: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/TargetTreeDragListener.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/TargetTreeDragListener.java (rev 0)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/TargetTreeDragListener.java 2009-01-18 07:45:38 UTC (rev 13105)
@@ -0,0 +1,64 @@
+/**
+ *
+ */
+package org.jboss.tools.smooks.ui;
+
+import org.eclipse.gef.GraphicalViewer;
+import org.eclipse.gef.dnd.TemplateTransfer;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.swt.dnd.DragSourceAdapter;
+import org.eclipse.swt.dnd.DragSourceEvent;
+import org.jboss.tools.smooks.graphical.util.GraphicalAdapterFactory;
+import org.jboss.tools.smooks.ui.gef.tools.SmooksCustomConnectionCreationTool;
+
+/**
+ * @author Dart
+ *
+ */
+public class TargetTreeDragListener extends DragSourceAdapter {
+
+ private TreeViewer hostViewer = null;
+
+ private GraphicalViewer graphicalViewer = null;
+
+
+ public TargetTreeDragListener(TreeViewer hostViewer , GraphicalViewer graphicalViewer){
+ super();
+ setHostViewer(hostViewer);
+ setGraphicalViewer(graphicalViewer);
+ }
+
+ public GraphicalViewer getGraphicalViewer() {
+ return graphicalViewer;
+ }
+
+
+ public void setGraphicalViewer(GraphicalViewer graphicalViewer) {
+ this.graphicalViewer = graphicalViewer;
+ }
+
+ public TreeViewer getHostViewer() {
+ return hostViewer;
+ }
+
+ public void setHostViewer(TreeViewer hostViewer) {
+ this.hostViewer = hostViewer;
+ }
+
+ public void dragStart(DragSourceEvent event) {
+ if(getHostViewer() != null){
+ TreeViewer viewer = getHostViewer();
+ IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();
+ if(selection == null) return;
+ event.data = selection;
+ TemplateTransfer.getInstance().setTemplate(
+ viewer.getSelection());
+ event.doit = true;
+
+ getGraphicalViewer().getEditDomain().setActiveTool(
+ new SmooksCustomConnectionCreationTool(selection.getFirstElement(),
+ getGraphicalViewer()));
+ }
+ }
+}
Property changes on: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/TargetTreeDragListener.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/editors/SmooksGraphicalFormPage.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/editors/SmooksGraphicalFormPage.java 2009-01-18 07:41:24 UTC (rev 13104)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/editors/SmooksGraphicalFormPage.java 2009-01-18 07:45:38 UTC (rev 13105)
@@ -28,7 +28,6 @@
import org.eclipse.draw2d.ColorConstants;
import org.eclipse.draw2d.ConnectionLayer;
import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.emf.ecore.resource.Resource.IOWrappedException;
import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
import org.eclipse.gef.DefaultEditDomain;
import org.eclipse.gef.GraphicalViewer;
@@ -106,7 +105,6 @@
import org.eclipse.ui.forms.widgets.Hyperlink;
import org.eclipse.ui.forms.widgets.ScrolledForm;
import org.eclipse.ui.forms.widgets.Section;
-import org.eclipse.ui.internal.handlers.WizardHandler.New;
import org.eclipse.wst.sse.ui.StructuredTextEditor;
import org.jboss.tools.smooks.analyzer.AnalyzerFactory;
import org.jboss.tools.smooks.analyzer.DesignTimeAnalyzeResult;
@@ -135,7 +133,9 @@
import org.jboss.tools.smooks.ui.IViewerInitor;
import org.jboss.tools.smooks.ui.SmooksUIActivator;
import org.jboss.tools.smooks.ui.StructuredDataCreationWizardDailog;
+import org.jboss.tools.smooks.ui.TargetTreeDragListener;
import org.jboss.tools.smooks.ui.ViewerInitorStore;
+import org.jboss.tools.smooks.ui.gef.commands.DeleteConnectionCommand;
import org.jboss.tools.smooks.ui.gef.editparts.SmooksEditPartFactory;
import org.jboss.tools.smooks.ui.gef.model.AbstractStructuredDataModel;
import org.jboss.tools.smooks.ui.gef.model.GraphRootModel;
@@ -274,20 +274,20 @@
}
protected void cleanMappingResourceConfig() {
- SmooksResourceListType list = null;
- if (!smooksResource.getContents().isEmpty()) {
- DocumentRoot doc = (DocumentRoot) this.smooksResource.getContents()
- .get(0);
- list = doc.getSmooksResourceList();
- ResourceConfigEraser eraser = new ResourceConfigEraser();
- eraser.cleanMappingResourceConfig(list, mappingResourceConfigList,
- this.editingDomain);
- } else {
- DocumentRoot doc = SmooksFactory.eINSTANCE.createDocumentRoot();
- smooksResource.getContents().add(doc);
- list = SmooksFactory.eINSTANCE.createSmooksResourceListType();
- doc.setSmooksResourceList(list);
- }
+ // SmooksResourceListType list = null;
+ // if (!smooksResource.getContents().isEmpty()) {
+ // DocumentRoot doc = (DocumentRoot) this.smooksResource.getContents()
+ // .get(0);
+ // list = doc.getSmooksResourceList();
+ // ResourceConfigEraser eraser = new ResourceConfigEraser();
+ // eraser.cleanMappingResourceConfig(list, mappingResourceConfigList,
+ // this.editingDomain);
+ // } else {
+ // DocumentRoot doc = SmooksFactory.eINSTANCE.createDocumentRoot();
+ // smooksResource.getContents().add(doc);
+ // list = SmooksFactory.eINSTANCE.createSmooksResourceListType();
+ // doc.setSmooksResourceList(list);
+ // }
}
public void addAnalyzeListener(IAnalyzeListener listener) {
@@ -351,7 +351,7 @@
// sashForm.setSashWidth(1);
SashForm mappingMainComposite = new SashForm(sashForm, SWT.NONE);
- // under the eclipse3.3
+ // TODO under the eclipse3.3
// mappingMainComposite.setSashWidth(1);
GridData sgd = new GridData(GridData.FILL_BOTH);
mappingGUISection.setLayoutData(sgd);
@@ -418,15 +418,6 @@
compositeSelectionProvider.addSelectionProvider(targetViewer);
composite3.setLayoutData(gd);
targetViewer.getTree().setLayoutData(gd);
- targetViewer.addDropSupport(DND.DROP_TARGET_MOVE | DND.DROP_MOVE
- | DND.DROP_LINK | DND.DROP_LINK,
- new Transfer[] { TemplateTransfer.getInstance() },
- new TargetTreeDropTargetListener(targetViewer,
- getGraphicalViewer()));
- targetViewer.getTree().addPaintListener(
- new TreePaintControlListener());
- targetViewer.getTree().addListener(SWT.PaintItem,
- new TreeItemPaintListener());
final MenuManager menuManager = new MenuManager("#TargetViewerMenu");
targetViewer.getTree().setMenu(
@@ -441,8 +432,6 @@
});
menuManager.add(new Separator("smooks_additions"));
getSite().registerContextMenu(menuManager, targetViewer);
-
- targetViewer.addSelectionChangedListener(this);
composite3.setBackground(GraphicsConstants.groupBorderColor);
}
@@ -488,23 +477,6 @@
targetViewer));
}
}
-
- // other fragment edit panel
-
- // Section section1 = this.createPageSectionHeader(rootMainControl,
- // Section.TITLE_BAR | Section.TWISTIE,
- // "Other Edit Panel", "Edit the filter panel");
- // Composite otherComposite = this.createUISectionContainer(section1,
- // 1);
- // section1.setClient(otherComposite);
- // FillLayout otherFillLayout = new FillLayout();
- // otherFillLayout.marginHeight = 0;
- // otherFillLayout.marginWidth = 0;
- // otherComposite.setLayout(otherFillLayout);
- // createOtherSmooksGUI(otherComposite,toolkit);
- // GridData sgd1 = new GridData(GridData.FILL_HORIZONTAL);
- // section1.setLayoutData(sgd1);
-
toolkit.paintBordersFor(rootMainControl);
form.pack();
@@ -531,12 +503,30 @@
}
getSite().setSelectionProvider(compositeSelectionProvider);
-
+ this.hookTargetTreeViewer(targetViewer);
this.hookGraphicalViewer();
this.initGraphicalViewer();
initMappingGUIStates();
}
+ protected void hookTargetTreeViewer(TreeViewer targetViewer) {
+ targetViewer.addDropSupport(DND.DROP_TARGET_MOVE | DND.DROP_MOVE
+ | DND.DROP_LINK | DND.DROP_LINK,
+ new Transfer[] { TemplateTransfer.getInstance() },
+ new TargetTreeDropTargetListener(targetViewer,
+ getGraphicalViewer()));
+
+ targetViewer.addDragSupport(DND.DROP_MOVE | DND.DROP_COPY
+ | DND.DROP_LINK, new Transfer[] { TemplateTransfer
+ .getInstance() }, new TargetTreeDragListener(targetViewer,
+ getGraphicalViewer()));
+
+ targetViewer.getTree().addPaintListener(new TreePaintControlListener());
+ targetViewer.getTree().addListener(SWT.PaintItem,
+ new TreeItemPaintListener());
+ targetViewer.addSelectionChangedListener(this);
+ }
+
protected void createErrorMessageLinkGUI(FormToolkit toolkit,
Composite parent) {
@@ -586,12 +576,12 @@
mappingGUISection.setEnabled(false);
this.notifyAnalyzeListeners(throwable);
}
-
+
// show/unshow the problem panel
- if(disableMappingGUI){
+ if (disableMappingGUI) {
analyzeResultList.clear();
updateNotifyMessage();
- }else{
+ } else {
analyzeDesignGraph();
}
}
@@ -628,12 +618,12 @@
mappingGUISection.setEnabled(false);
this.notifyAnalyzeListeners(throwable);
}
-
+
// show/unshow the problem panel
- if(disableMappingGUI){
+ if (disableMappingGUI) {
analyzeResultList.clear();
updateNotifyMessage();
- }else{
+ } else {
analyzeDesignGraph();
}
}
@@ -693,10 +683,24 @@
currentModel = connection.getSource();
}
Object parent = provider.getParent(currentModel);
- while (parent != null && parent != currentModel) {
- viewer.expandToLevel(parent, 1);
- parent = provider.getParent(parent);
+ try {
+ while (parent != null && parent != currentModel) {
+ viewer.expandToLevel(parent, 1);
+ parent = provider.getParent(parent);
+ }
+ } catch (Exception e) {
+ continue;
}
+ currentModel = connection.getSource();
+ parent = provider.getParent(currentModel);
+ try {
+ while (parent != null && parent != currentModel) {
+ viewer.expandToLevel(parent, 1);
+ parent = provider.getParent(parent);
+ }
+ } catch (Exception e) {
+ continue;
+ }
}
}
@@ -708,16 +712,21 @@
return this.initTreeViewerProvider(sourceViewer, sourceDataTypeID);
}
- /**
- * this method is only for demo
- *
- * @param items
- * @param modelClass
- */
protected void createGraphModels(TreeItem[] items,
- Class<? extends Object> modelClass) {
+ Class<? extends Object> modelClass, Object[] effectiveElements) {
for (int i = 0; i < items.length; i++) {
TreeItem item = (TreeItem) items[i];
+ if (effectiveElements != null) {
+ boolean effective = false;
+ for (int j = 0; j < effectiveElements.length; j++) {
+ if (item.getData() == effectiveElements[j]) {
+ effective = true;
+ break;
+ }
+ }
+ if (!effective)
+ continue;
+ }
if (item == null)
continue;
if (item.getData(REFERENCE_MODEL) != null && !item.isDisposed()) {
@@ -748,12 +757,23 @@
}
}
if (item.getExpanded() && item.getItemCount() > 0) {
- createGraphModels(item.getItems(), modelClass);
+ createGraphModels(item.getItems(), modelClass,
+ effectiveElements);
} else {
}
}
}
+ /**
+ *
+ * @param items
+ * @param modelClass
+ */
+ protected void createGraphModels(TreeItem[] items,
+ Class<? extends Object> modelClass) {
+ createGraphModels(items, modelClass, null);
+ }
+
protected void createSourceGraphModels() {
clearExsitingGraphModels(SourceModel.class);
if (sourceViewer == null)
@@ -793,7 +813,7 @@
*
* @param transformModel
*/
- public void clearGraphModel(Object transformModel) {
+ public boolean clearGraphModel(Object transformModel) {
AbstractStructuredDataModel graphModel = UIUtils.findGraphModel(
rootModel, transformModel);
if (graphModel != null) {
@@ -804,7 +824,9 @@
for (Iterator iterator = temp.iterator(); iterator.hasNext();) {
LineConnectionModel line = (LineConnectionModel) iterator
.next();
- line.disConnect();
+ DeleteConnectionCommand command = new DeleteConnectionCommand();
+ command.setConnectionModel(line);
+ getEditDomain().getCommandStack().execute(command);
}
temp.clear();
list.clear();
@@ -817,13 +839,18 @@
for (Iterator iterator = temp.iterator(); iterator.hasNext();) {
LineConnectionModel line = (LineConnectionModel) iterator
.next();
- line.disConnect();
+ DeleteConnectionCommand command = new DeleteConnectionCommand();
+ command.setConnectionModel(line);
+ getEditDomain().getCommandStack().execute(command);
}
temp.clear();
list.clear();
}
rootModel.removeChild(graphModel);
deAssosiateGraphAndTransformModel(graphModel);
+ return true;
+ } else {
+ return false;
}
}
@@ -880,7 +907,14 @@
protected TreeViewer createTargetTreeViewer(Composite parent, int style) {
TreeViewer viewer = new TransformDataTreeViewer(parent, SWT.NONE
- | style, this);
+ | style, this) {
+ protected void internalRefresh(Object obj) {
+ super.internalRefresh(obj);
+ if (obj != null)
+ createGraphModels(getTree().getItems(), TargetModel.class,
+ null);
+ }
+ };
return viewer;
}
@@ -1008,6 +1042,14 @@
context.setDataMappingRootModel(this.rootModel);
context.setSmooksConfigFile(((IFileEditorInput) getEditorInput())
.getFile());
+ context.setGefDomain(getEditDomain());
+ List contents = this.smooksResource.getContents();
+ if (contents.size() > 0) {
+ DocumentRoot documentRoot = (DocumentRoot) contents.get(0);
+ context.setSmooksResourceListModel(documentRoot
+ .getSmooksResourceList());
+ }
+ context.setDomain(getEditingDomain());
if (sourceViewer != null) {
context.setSourceViewerLabelProvider((LabelProvider) sourceViewer
.getLabelProvider());
@@ -1099,26 +1141,37 @@
protected void createConnectionModels() {
if (rootModel == null)
return;
- List children = this.rootModel.getChildren();
- for (Iterator iterator = children.iterator(); iterator.hasNext();) {
- TreeItemRelationModel source = (TreeItemRelationModel) iterator
- .next();
- if (source instanceof SourceModel) {
- for (Iterator iterator2 = children.iterator(); iterator2
- .hasNext();) {
- TreeItemRelationModel target = (TreeItemRelationModel) iterator2
- .next();
- if (target instanceof TargetModel) {
- MappingModel mapping = getMappingModel(source, target);
- if (mapping != null) {
- LineConnectionModel connection = new LineConnectionModel(
- source, target);
- connection.setProperties(mapping.getProperties());
- }
- }
+
+ List<SourceModel> sourceModelList = rootModel.loadSourceModelList();
+ List<TargetModel> targetModelList = rootModel.loadTargetModelList();
+
+ for (Iterator iterator = sourceModelList.iterator(); iterator.hasNext();) {
+ SourceModel sourceModel = (SourceModel) iterator.next();
+ for (Iterator iterator2 = targetModelList.iterator(); iterator2
+ .hasNext();) {
+ TargetModel targetModel = (TargetModel) iterator2.next();
+ MappingModel mapping = getMappingModel(sourceModel, targetModel);
+ if (mapping != null) {
+ LineConnectionModel connection = new LineConnectionModel(
+ sourceModel, targetModel);
+ connection.setProperties(mapping.getProperties());
}
}
}
+ List temp = new ArrayList(targetModelList);
+ for (Iterator iterator = targetModelList.iterator(); iterator.hasNext();) {
+ TargetModel targetModel = (TargetModel) iterator.next();
+ for (Iterator iterator2 = temp.iterator(); iterator2.hasNext();) {
+ TargetModel targetModel1 = (TargetModel) iterator2.next();
+ MappingModel mapping = getMappingModel(targetModel,
+ targetModel1);
+ if (mapping != null) {
+ LineConnectionModel connection = new LineConnectionModel(
+ targetModel, targetModel1);
+ connection.setProperties(mapping.getProperties());
+ }
+ }
+ }
}
protected MappingModel getMappingModel(TreeItemRelationModel source,
@@ -1626,11 +1679,6 @@
modelClass = SourceModel.class;
}
createGraphModels(tree.getItems(), modelClass);
- // if (tree.getData(TreeItemRelationModel.PRO_TREE_REPAINT) != null)
- // {
- // // System.out.println("Block a event fire !!");
- // return;
- // }
rootModel.firePropertyChange(
AbstractStructuredDataModel.P_REFRESH_PANEL, null,
new Object());
Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/editors/SmooksNormalContentEditFormPage.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/editors/SmooksNormalContentEditFormPage.java 2009-01-18 07:41:24 UTC (rev 13104)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/editors/SmooksNormalContentEditFormPage.java 2009-01-18 07:45:38 UTC (rev 13105)
@@ -301,8 +301,13 @@
fileViewer = new TableViewer(viewerComposite, SWT.NONE);
fileViewer.setContentProvider(new FileImportContentProvider());
fileViewer.setLabelProvider(new FileImportLabelProvider());
- fileViewer.setInput(getModelPackage().getSmooksResourceList()
- .getAbstractResourceConfig());
+ if (getModelPackage() != null) {
+ SmooksResourceListType listType = getModelPackage()
+ .getSmooksResourceList();
+ if (listType != null && listType.getAbstractResourceConfig() != null) {
+ fileViewer.setInput(listType.getAbstractResourceConfig());
+ }
+ }
fileViewer.addDoubleClickListener(new IDoubleClickListener() {
public void doubleClick(DoubleClickEvent event) {
openFile(fileViewer.getSelection());
Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/editors/TransformDataTreeViewer.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/editors/TransformDataTreeViewer.java 2009-01-18 07:41:24 UTC (rev 13104)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/editors/TransformDataTreeViewer.java 2009-01-18 07:45:38 UTC (rev 13105)
@@ -64,12 +64,13 @@
ITreeContentProvider provider = (ITreeContentProvider) this
.getContentProvider();
if (provider != null) {
- editor.clearGraphModel(model);
- Object[] children = provider.getChildren(model);
- if (children != null) {
- for (int i = 0; i < children.length; i++) {
- Object child = children[i];
- removeGraphModel(child);
+ if (editor.clearGraphModel(model)) {
+ Object[] children = provider.getChildren(model);
+ if (children != null) {
+ for (int i = 0; i < children.length; i++) {
+ Object child = children[i];
+ removeGraphModel(child);
+ }
}
}
}
Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/commands/CreateConnectionCommand.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/commands/CreateConnectionCommand.java 2009-01-18 07:41:24 UTC (rev 13104)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/commands/CreateConnectionCommand.java 2009-01-18 07:45:38 UTC (rev 13105)
@@ -14,6 +14,7 @@
*/
public class CreateConnectionCommand extends Command {
+
private List<PropertyModel> propertyList = new ArrayList<PropertyModel>();
@@ -68,6 +69,7 @@
connection.setSource(source);
connection.setTarget(target);
connection.connect();
+
}
public void setConnection(Object model) {
Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/commands/DeleteConnectionCommand.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/commands/DeleteConnectionCommand.java 2009-01-18 07:41:24 UTC (rev 13104)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/commands/DeleteConnectionCommand.java 2009-01-18 07:45:38 UTC (rev 13105)
@@ -14,9 +14,10 @@
private IConnectableModel targetNode;
public void execute() {
-
- sourceNode.removeSourceConnection(connectionModel);
- targetNode.removeTargetConnection(connectionModel);
+ if (sourceNode != null && targetNode != null) {
+ sourceNode.removeSourceConnection(connectionModel);
+ targetNode.removeTargetConnection(connectionModel);
+ }
}
public void undo() {
@@ -35,6 +36,10 @@
public void setConnectionModel(
AbstractStructuredDataConnectionModel connectionModel) {
this.connectionModel = connectionModel;
+ if (connectionModel != null) {
+ setSourceNode(connectionModel.getSource());
+ setTargetNode(connectionModel.getTarget());
+ }
}
/**
Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/editparts/AbstractStructuredDataEditPart.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/editparts/AbstractStructuredDataEditPart.java 2009-01-18 07:41:24 UTC (rev 13104)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/editparts/AbstractStructuredDataEditPart.java 2009-01-18 07:45:38 UTC (rev 13105)
@@ -2,7 +2,11 @@
import java.beans.PropertyChangeListener;
+import org.eclipse.gef.DefaultEditDomain;
+import org.eclipse.gef.GraphicalViewer;
import org.eclipse.gef.editparts.AbstractGraphicalEditPart;
+import org.eclipse.ui.IEditorPart;
+import org.jboss.tools.smooks.ui.editors.SmooksGraphicalFormPage;
import org.jboss.tools.smooks.ui.gef.model.AbstractStructuredDataModel;
/**
@@ -12,6 +16,8 @@
*/
public abstract class AbstractStructuredDataEditPart extends
AbstractGraphicalEditPart implements PropertyChangeListener {
+
+
/*
* (non-Javadoc)
*
@@ -22,6 +28,32 @@
((AbstractStructuredDataModel) getModel())
.addPropertyChangeListener(this);
}
+
+ public String getSourceID(){
+ SmooksGraphicalFormPage page = getSmooksGraphicalPage();
+ if(page != null){
+ return page.getSourceDataTypeID();
+ }
+ return null;
+ }
+
+ public String getTargetID(){
+ SmooksGraphicalFormPage page = getSmooksGraphicalPage();
+ if(page != null){
+ return page.getTargetDataTypeID();
+ }
+ return null;
+ }
+
+ public SmooksGraphicalFormPage getSmooksGraphicalPage(){
+ GraphicalViewer viewer = (GraphicalViewer) this.getViewer();
+ DefaultEditDomain domain = (DefaultEditDomain) viewer.getEditDomain();
+ IEditorPart part = domain.getEditorPart();
+ if(part instanceof SmooksGraphicalFormPage){
+ return (SmooksGraphicalFormPage)part;
+ }
+ return null;
+ }
/*
* (non-Javadoc)
Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/editparts/ConnectionPointEditPart.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/editparts/ConnectionPointEditPart.java 2009-01-18 07:41:24 UTC (rev 13104)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/editparts/ConnectionPointEditPart.java 2009-01-18 07:45:38 UTC (rev 13105)
@@ -23,9 +23,13 @@
import org.eclipse.gef.NodeEditPart;
import org.eclipse.gef.Request;
import org.eclipse.swt.widgets.TreeItem;
+import org.jboss.tools.smooks.ui.editors.SmooksGraphicalFormPage;
+import org.jboss.tools.smooks.ui.gef.model.GraphicalModelListenerManager;
import org.jboss.tools.smooks.ui.gef.model.IConnectableModel;
+import org.jboss.tools.smooks.ui.gef.model.IGraphicalModelListener;
import org.jboss.tools.smooks.ui.gef.model.TreeItemRelationModel;
import org.jboss.tools.smooks.ui.gef.policy.CustomGraphicalNodeEditPolicy;
+import org.jboss.tools.smooks.ui.modelparser.SmooksConfigurationFileGenerateContext;
/**
* @author Dart Peng
@@ -46,43 +50,41 @@
return figure;
}
- public boolean isCollapse(){
- TreeItemRelationModel model = (TreeItemRelationModel) this.getModel();
- if(model == null) return false;
+ public boolean isCollapse() {
+ TreeItemRelationModel model = (TreeItemRelationModel) this.getModel();
+ if (model == null)
+ return false;
return model.isCollapse();
}
-
-
+
@Override
protected List getModelSourceConnections() {
Object model = getModel();
- if(model instanceof IConnectableModel){
- return ((IConnectableModel)model).getModelSourceConnections();
+ if (model instanceof IConnectableModel) {
+ return ((IConnectableModel) model).getModelSourceConnections();
}
return super.getModelSourceConnections();
}
-
-
@Override
protected List getModelTargetConnections() {
Object model = getModel();
- if(model instanceof IConnectableModel){
- return ((IConnectableModel)model).getModelTargetConnections();
+ if (model instanceof IConnectableModel) {
+ return ((IConnectableModel) model).getModelTargetConnections();
}
return super.getModelTargetConnections();
}
-
- public void refreshAllSourceConnectionLineStyle(){
+
+ public void refreshAllSourceConnectionLineStyle() {
List sourceConnection = this.getSourceConnections();
for (Iterator iterator = sourceConnection.iterator(); iterator
.hasNext();) {
- StructuredDataConnectionEditPart connection = (StructuredDataConnectionEditPart) iterator.next();
+ StructuredDataConnectionEditPart connection = (StructuredDataConnectionEditPart) iterator
+ .next();
connection.refresh();
}
}
-
/*
* (non-Javadoc)
*
@@ -97,14 +99,34 @@
/*
* (non-Javadoc)
*
- * @see java.beans.PropertyChangeListener#propertyChange(java.beans.PropertyChangeEvent)
+ * @seejava.beans.PropertyChangeListener#propertyChange(java.beans.
+ * PropertyChangeEvent)
*/
public void propertyChange(PropertyChangeEvent evt) {
String pname = evt.getPropertyName();
- if (IConnectableModel.P_SOURCE_CONNECTION.equals(pname)) {
+ String sid = getSourceID();
+ String tid = getTargetID();
+ SmooksGraphicalFormPage page = getSmooksGraphicalPage();
+ SmooksConfigurationFileGenerateContext context = null;
+ if(page != null){
+ context = page.getSmooksConfigurationFileGenerateContext();
+ }
+ IGraphicalModelListener listener = GraphicalModelListenerManager
+ .getInstance().getPaintListener(sid, tid);
+ if (IConnectableModel.P_ADD_SOURCE_CONNECTION.equals(pname) ||
+ IConnectableModel.P_REMOVE_SOURCE_CONNECTION.equals(pname)) {
+ if (listener != null) {
+ if(IConnectableModel.P_ADD_SOURCE_CONNECTION.equals(pname)){
+ listener.modelAdded(evt.getNewValue(), context);
+ }
+ if(IConnectableModel.P_REMOVE_SOURCE_CONNECTION.equals(pname)){
+ listener.modelRemoved(evt.getOldValue(), context);
+ }
+ }
this.refreshSourceConnections();
}
- if (IConnectableModel.P_TARGET_CONNECTION.equals(pname)) {
+ if (IConnectableModel.P_ADD_TARGET_CONNECTION.equals(pname) ||
+ IConnectableModel.P_REMOVE_TARGET_CONNECTION.equals(pname)) {
this.refreshTargetConnections();
}
}
Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/editparts/StructuredDataConnectionEditPart.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/editparts/StructuredDataConnectionEditPart.java 2009-01-18 07:41:24 UTC (rev 13104)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/editparts/StructuredDataConnectionEditPart.java 2009-01-18 07:45:38 UTC (rev 13105)
@@ -1,248 +1,256 @@
-package org.jboss.tools.smooks.ui.gef.editparts;
-
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-
-import org.eclipse.draw2d.ColorConstants;
-import org.eclipse.draw2d.ConnectionLocator;
-import org.eclipse.draw2d.Figure;
-import org.eclipse.draw2d.Graphics;
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.Shape;
-import org.eclipse.draw2d.geometry.Point;
-import org.eclipse.draw2d.geometry.PointList;
-import org.eclipse.gef.DefaultEditDomain;
-import org.eclipse.gef.EditPart;
-import org.eclipse.gef.EditPolicy;
-import org.eclipse.gef.GraphicalViewer;
-import org.eclipse.gef.editparts.AbstractConnectionEditPart;
-import org.eclipse.gef.editpolicies.ConnectionEndpointEditPolicy;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.widgets.Tree;
-import org.eclipse.swt.widgets.TreeItem;
-import org.eclipse.ui.IEditorPart;
-import org.jboss.tools.smooks.ui.editors.SmooksGraphicalFormPage;
-import org.jboss.tools.smooks.ui.gef.figures.CurveLineConnection;
-import org.jboss.tools.smooks.ui.gef.figures.ILineFigurePaintListener;
-import org.jboss.tools.smooks.ui.gef.figures.LineFigurePaintListenerManager;
-import org.jboss.tools.smooks.ui.gef.model.AbstractStructuredDataConnectionModel;
-import org.jboss.tools.smooks.ui.gef.model.IConnectableModel;
-import org.jboss.tools.smooks.ui.gef.model.LineConnectionModel;
-import org.jboss.tools.smooks.ui.gef.model.TreeItemRelationModel;
-import org.jboss.tools.smooks.ui.gef.policy.DeleteConnectionEditPolicy;
-import org.jboss.tools.smooks.ui.gef.util.GraphicsConstants;
-
-public class StructuredDataConnectionEditPart extends
- AbstractConnectionEditPart implements PropertyChangeListener {
-
- public StructuredDataConnectionEditPart() {
- super();
- }
-
- public void activate() {
- super.activate();
- Object model = getModel();
- if (model instanceof AbstractStructuredDataConnectionModel) {
- ((AbstractStructuredDataConnectionModel) model)
- .addPropertyChangeListener(this);
- }
- }
-
- public void deactivate() {
- Object model = getModel();
- if (model instanceof AbstractStructuredDataConnectionModel) {
- ((AbstractStructuredDataConnectionModel) model)
- .removePropertyChangeListener(this);
- }
- super.deactivate();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.gef.editparts.AbstractConnectionEditPart#refresh()
- */
- @Override
- public void refresh() {
- super.refresh();
- changeLineStyleWithCollapseStatus();
- }
-
- protected void createEditPolicies() {
- installEditPolicy(EditPolicy.CONNECTION_ENDPOINTS_ROLE,
- new ConnectionEndpointEditPolicy());
- installEditPolicy(EditPolicy.COMPONENT_ROLE,
- new DeleteConnectionEditPolicy());
- }
-
- private String getSourceDataTypeID() {
- GraphicalViewer viewer = (GraphicalViewer) this.getViewer();
- IEditorPart editor = ((DefaultEditDomain) viewer.getEditDomain())
- .getEditorPart();
- if (editor instanceof SmooksGraphicalFormPage) {
- return ((SmooksGraphicalFormPage) editor).getSourceDataTypeID();
- }
- return null;
- }
-
- private String getTargetDataTypeID() {
- GraphicalViewer viewer = (GraphicalViewer) this.getViewer();
- IEditorPart editor = ((DefaultEditDomain) viewer.getEditDomain())
- .getEditorPart();
- if (editor instanceof SmooksGraphicalFormPage) {
- return ((SmooksGraphicalFormPage) editor).getTargetDataTypeID();
- }
- return null;
- }
-
- protected IFigure createFigure() {
- CurveLineConnection conn = new CurveLineConnection(this) {
-
- public void paintFigure(Graphics graphics) {
- String sourceid = getSourceDataTypeID();
- String targetid = getTargetDataTypeID();
- ILineFigurePaintListener listener = LineFigurePaintListenerManager
- .getInstance().getPaintListener(sourceid, targetid);
- if (listener != null) {
- listener.drawLineAdditions(graphics, this,
- (LineConnectionModel) getHostEditPart().getModel());
- }
- super.paintFigure(graphics);
- }
- };
- // conn.setSmoothness(SmoothPolyLineConnection.SMOOTH_MORE);
- Figure targetFlagFigure = new Figure() {
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.draw2d.Figure#paint(org.eclipse.draw2d.Graphics)
- */
- @Override
- public void paint(Graphics graphics) {
- graphics.pushState();
- String sourceid = getSourceDataTypeID();
- String targetid = getTargetDataTypeID();
- ILineFigurePaintListener listener = LineFigurePaintListenerManager
- .getInstance().getPaintListener(sourceid, targetid);
- if (listener != null) {
- listener.drawLineTargetLocator(graphics, this,(LineConnectionModel) getModel());
- }
- super.paint(graphics);
- graphics.popState();
- }
-
- };
-
- Figure sourceFlagFigure = new Figure() {
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.draw2d.Figure#paint(org.eclipse.draw2d.Graphics)
- */
- @Override
- public void paint(Graphics graphics) {
- graphics.pushState();
- String sourceid = getSourceDataTypeID();
- String targetid = getTargetDataTypeID();
- ILineFigurePaintListener listener = LineFigurePaintListenerManager
- .getInstance().getPaintListener(sourceid, targetid);
- if (listener != null) {
- listener.drawLineSourceLocator(graphics, this,(LineConnectionModel) getModel());
- }
- super.paint(graphics);
- graphics.popState();
- }
-
- };
- targetFlagFigure.setSize(10, 10);
- sourceFlagFigure.setSize(10, 10);
- ConnectionLocator targetLocator = new ConnectionLocator(conn,
- ConnectionLocator.TARGET);
- conn.add(targetFlagFigure, targetLocator);
- ConnectionLocator sourceLocator = new ConnectionLocator(conn,
- ConnectionLocator.SOURCE);
- conn.add(sourceFlagFigure, sourceLocator);
- return conn;
- }
-
- protected void changeLineStyleWithCollapseStatus() {
- Shape figure = (Shape) this.getFigure();
- LineConnectionModel model = (LineConnectionModel) this.getModel();
- IConnectableModel source = model.getSource();
- IConnectableModel target = model.getTarget();
- boolean collapse = false;
- if (source instanceof TreeItemRelationModel) {
- if (((TreeItemRelationModel) source).isCollapse()) {
- collapse = true;
- }
- }
- if (target instanceof TreeItemRelationModel) {
- if (((TreeItemRelationModel) target).isCollapse()) {
- collapse = true;
- }
- }
- if (collapse) {
- // figure.setForegroundColor(GraphicsConstants.groupBorderColor);
- figure.setForegroundColor(new Color(null, 224, 224, 224));
- // figure.setLineStyle(Graphics.LINE_DOT);
- } else {
- figure.setForegroundColor(GraphicsConstants.groupBorderColor);
- // figure.setLineStyle(Graphics.LINE_SOLID);
- }
- }
-
- protected void changeTreeItemSelectionStatus(boolean selected) {
- LineConnectionModel model = (LineConnectionModel) this.getModel();
- IConnectableModel source = model.getSource();
- IConnectableModel target = model.getTarget();
- Tree sourceTree = null;
- Tree targetTree = null;
- if (source instanceof TreeItemRelationModel) {
- TreeItem item = ((TreeItemRelationModel) source).getTreeItem();
- if (!item.isDisposed()) {
- item.setData(
- TreeItemRelationModel.PRO_TREE_ITEM_SELECTION_STATUS,
- new Boolean(selected));
- sourceTree = item.getParent();
- }
- }
- if (target instanceof TreeItemRelationModel) {
- TreeItem item = ((TreeItemRelationModel) target).getTreeItem();
- if (!item.isDisposed()) {
- item.setData(
- TreeItemRelationModel.PRO_TREE_ITEM_SELECTION_STATUS,
- new Boolean(selected));
- targetTree = item.getParent();
- }
- }
- refreshTree(sourceTree);
- refreshTree(targetTree);
- }
-
- private void refreshTree(Tree tree) {
- if (tree != null) {
- tree.setData(TreeItemRelationModel.PRO_TREE_REPAINT, new Object());
- tree.redraw();
- tree.setData(TreeItemRelationModel.PRO_TREE_REPAINT, null);
- }
- }
-
- public void setSelected(int value) {
- super.setSelected(value);
- if (value == EditPart.SELECTED_NONE) {
- ((Shape) figure).setLineWidth(1);
- ((Shape) figure)
- .setForegroundColor(GraphicsConstants.groupBorderColor);
- changeTreeItemSelectionStatus(false);
- } else {
- ((Shape) figure).setLineWidth(2);
- figure.setForegroundColor(ColorConstants.darkBlue);
- changeTreeItemSelectionStatus(true);
- }
- }
-
- public void propertyChange(PropertyChangeEvent evt) {
-
- }
+package org.jboss.tools.smooks.ui.gef.editparts;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import org.eclipse.draw2d.ColorConstants;
+import org.eclipse.draw2d.ConnectionLocator;
+import org.eclipse.draw2d.Figure;
+import org.eclipse.draw2d.Graphics;
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.draw2d.PolylineConnection;
+import org.eclipse.draw2d.Shape;
+import org.eclipse.draw2d.geometry.Point;
+import org.eclipse.draw2d.geometry.PointList;
+import org.eclipse.gef.DefaultEditDomain;
+import org.eclipse.gef.EditPart;
+import org.eclipse.gef.EditPolicy;
+import org.eclipse.gef.GraphicalViewer;
+import org.eclipse.gef.editparts.AbstractConnectionEditPart;
+import org.eclipse.gef.editpolicies.ConnectionEndpointEditPolicy;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.widgets.Tree;
+import org.eclipse.swt.widgets.TreeItem;
+import org.eclipse.ui.IEditorPart;
+import org.jboss.tools.smooks.ui.editors.SmooksGraphicalFormPage;
+import org.jboss.tools.smooks.ui.gef.figures.CurveLineConnection;
+import org.jboss.tools.smooks.ui.gef.figures.ILineFigurePaintListener;
+import org.jboss.tools.smooks.ui.gef.figures.LineFigurePaintListenerManager;
+import org.jboss.tools.smooks.ui.gef.model.AbstractStructuredDataConnectionModel;
+import org.jboss.tools.smooks.ui.gef.model.IConnectableModel;
+import org.jboss.tools.smooks.ui.gef.model.LineConnectionModel;
+import org.jboss.tools.smooks.ui.gef.model.TreeItemRelationModel;
+import org.jboss.tools.smooks.ui.gef.policy.DeleteConnectionEditPolicy;
+import org.jboss.tools.smooks.ui.gef.util.GraphicsConstants;
+
+public class StructuredDataConnectionEditPart extends
+ AbstractConnectionEditPart implements PropertyChangeListener {
+
+ public StructuredDataConnectionEditPart() {
+ super();
+ }
+
+ public void activate() {
+ super.activate();
+ Object model = getModel();
+ if (model instanceof AbstractStructuredDataConnectionModel) {
+ ((AbstractStructuredDataConnectionModel) model)
+ .addPropertyChangeListener(this);
+ }
+ }
+
+ public void deactivate() {
+ Object model = getModel();
+ if (model instanceof AbstractStructuredDataConnectionModel) {
+ ((AbstractStructuredDataConnectionModel) model)
+ .removePropertyChangeListener(this);
+ }
+ super.deactivate();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.gef.editparts.AbstractConnectionEditPart#refresh()
+ */
+ @Override
+ public void refresh() {
+ super.refresh();
+ changeLineStyleWithCollapseStatus();
+ }
+
+ protected void createEditPolicies() {
+ installEditPolicy(EditPolicy.CONNECTION_ENDPOINTS_ROLE,
+ new ConnectionEndpointEditPolicy());
+ installEditPolicy(EditPolicy.COMPONENT_ROLE,
+ new DeleteConnectionEditPolicy());
+ }
+
+ private String getSourceDataTypeID() {
+ GraphicalViewer viewer = (GraphicalViewer) this.getViewer();
+ IEditorPart editor = ((DefaultEditDomain) viewer.getEditDomain())
+ .getEditorPart();
+ if (editor instanceof SmooksGraphicalFormPage) {
+ return ((SmooksGraphicalFormPage) editor).getSourceDataTypeID();
+ }
+ return null;
+ }
+
+ private String getTargetDataTypeID() {
+ GraphicalViewer viewer = (GraphicalViewer) this.getViewer();
+ IEditorPart editor = ((DefaultEditDomain) viewer.getEditDomain())
+ .getEditorPart();
+ if (editor instanceof SmooksGraphicalFormPage) {
+ return ((SmooksGraphicalFormPage) editor).getTargetDataTypeID();
+ }
+ return null;
+ }
+
+ protected IFigure createFigure() {
+ final String sourceid = getSourceDataTypeID();
+ final String targetid = getTargetDataTypeID();
+ final ILineFigurePaintListener listener = LineFigurePaintListenerManager
+ .getInstance().getPaintListener(sourceid, targetid);
+ PolylineConnection connection = null;
+ if (listener != null) {
+ connection = listener
+ .createHostFigure((LineConnectionModel) getModel());
+ }
+ if (connection == null) {
+ connection = new CurveLineConnection(this) {
+ public void paintFigure(Graphics graphics) {
+ ILineFigurePaintListener listener = LineFigurePaintListenerManager
+ .getInstance().getPaintListener(sourceid, targetid);
+ if (listener != null) {
+ listener.drawLineAdditions(graphics, this,
+ (LineConnectionModel) getHostEditPart()
+ .getModel());
+ }
+ super.paintFigure(graphics);
+ }
+ };
+ }
+ // conn.setSmoothness(SmoothPolyLineConnection.SMOOTH_MORE);
+ Figure targetFlagFigure = new Figure() {
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.draw2d.Figure#paint(org.eclipse.draw2d.Graphics)
+ */
+ @Override
+ public void paint(Graphics graphics) {
+ graphics.pushState();
+ ILineFigurePaintListener listener = LineFigurePaintListenerManager
+ .getInstance().getPaintListener(sourceid, targetid);
+ if (listener != null) {
+ listener.drawLineTargetLocator(graphics, this,
+ (LineConnectionModel) getModel());
+ }
+ super.paint(graphics);
+ graphics.popState();
+ }
+
+ };
+
+ Figure sourceFlagFigure = new Figure() {
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.draw2d.Figure#paint(org.eclipse.draw2d.Graphics)
+ */
+ @Override
+ public void paint(Graphics graphics) {
+ graphics.pushState();
+ ILineFigurePaintListener listener = LineFigurePaintListenerManager
+ .getInstance().getPaintListener(sourceid, targetid);
+ if (listener != null) {
+ listener.drawLineSourceLocator(graphics, this,
+ (LineConnectionModel) getModel());
+ }
+ super.paint(graphics);
+ graphics.popState();
+ }
+
+ };
+ targetFlagFigure.setSize(10, 10);
+ sourceFlagFigure.setSize(10, 10);
+ ConnectionLocator targetLocator = new ConnectionLocator(connection,
+ ConnectionLocator.TARGET);
+ connection.add(targetFlagFigure, targetLocator);
+ ConnectionLocator sourceLocator = new ConnectionLocator(connection,
+ ConnectionLocator.SOURCE);
+ connection.add(sourceFlagFigure, sourceLocator);
+ return connection;
+ }
+
+ protected void changeLineStyleWithCollapseStatus() {
+ Shape figure = (Shape) this.getFigure();
+ LineConnectionModel model = (LineConnectionModel) this.getModel();
+ IConnectableModel source = model.getSource();
+ IConnectableModel target = model.getTarget();
+ boolean collapse = false;
+ if (source instanceof TreeItemRelationModel) {
+ if (((TreeItemRelationModel) source).isCollapse()) {
+ collapse = true;
+ }
+ }
+ if (target instanceof TreeItemRelationModel) {
+ if (((TreeItemRelationModel) target).isCollapse()) {
+ collapse = true;
+ }
+ }
+ if (collapse) {
+ // figure.setForegroundColor(GraphicsConstants.groupBorderColor);
+ figure.setForegroundColor(new Color(null, 224, 224, 224));
+ // figure.setLineStyle(Graphics.LINE_DOT);
+ } else {
+ figure.setForegroundColor(GraphicsConstants.groupBorderColor);
+ // figure.setLineStyle(Graphics.LINE_SOLID);
+ }
+ }
+
+ protected void changeTreeItemSelectionStatus(boolean selected) {
+ LineConnectionModel model = (LineConnectionModel) this.getModel();
+ IConnectableModel source = model.getSource();
+ IConnectableModel target = model.getTarget();
+ Tree sourceTree = null;
+ Tree targetTree = null;
+ if (source instanceof TreeItemRelationModel) {
+ TreeItem item = ((TreeItemRelationModel) source).getTreeItem();
+ if (!item.isDisposed()) {
+ item.setData(
+ TreeItemRelationModel.PRO_TREE_ITEM_SELECTION_STATUS,
+ new Boolean(selected));
+ sourceTree = item.getParent();
+ }
+ }
+ if (target instanceof TreeItemRelationModel) {
+ TreeItem item = ((TreeItemRelationModel) target).getTreeItem();
+ if (!item.isDisposed()) {
+ item.setData(
+ TreeItemRelationModel.PRO_TREE_ITEM_SELECTION_STATUS,
+ new Boolean(selected));
+ targetTree = item.getParent();
+ }
+ }
+ refreshTree(sourceTree);
+ refreshTree(targetTree);
+ }
+
+ private void refreshTree(Tree tree) {
+ if (tree != null) {
+ tree.setData(TreeItemRelationModel.PRO_TREE_REPAINT, new Object());
+ tree.redraw();
+ tree.setData(TreeItemRelationModel.PRO_TREE_REPAINT, null);
+ }
+ }
+
+ public void setSelected(int value) {
+ super.setSelected(value);
+ if (value == EditPart.SELECTED_NONE) {
+ ((Shape) figure).setLineWidth(1);
+ ((Shape) figure)
+ .setForegroundColor(GraphicsConstants.groupBorderColor);
+ changeTreeItemSelectionStatus(false);
+ } else {
+ ((Shape) figure).setLineWidth(2);
+ figure.setForegroundColor(ColorConstants.darkBlue);
+ changeTreeItemSelectionStatus(true);
+ }
+ }
+
+ public void propertyChange(PropertyChangeEvent evt) {
+
+ }
}
\ No newline at end of file
Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/figures/ILineFigurePaintListener.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/figures/ILineFigurePaintListener.java 2009-01-18 07:41:24 UTC (rev 13104)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/figures/ILineFigurePaintListener.java 2009-01-18 07:45:38 UTC (rev 13105)
@@ -5,6 +5,8 @@
import org.eclipse.draw2d.Graphics;
import org.eclipse.draw2d.IFigure;
+import org.eclipse.draw2d.PolylineConnection;
+import org.eclipse.gef.requests.CreateConnectionRequest;
import org.jboss.tools.smooks.ui.gef.model.LineConnectionModel;
/**
@@ -17,4 +19,18 @@
public void drawLineSourceLocator(Graphics graphics , IFigure hostFigure, LineConnectionModel model);
public void drawLineTargetLocator(Graphics graphics , IFigure hostFigure, LineConnectionModel model);
+ /**
+ * Return the line you wanted . If return figure is NOT null , the drawLineAdditions method will be disabled
+ * @param model
+ * @return
+ */
+ public PolylineConnection createHostFigure(LineConnectionModel model);
+
+ /**
+ *
+ * @param sid
+ * @param tid
+ * @return
+ */
+ public PolylineConnection createDummyFigure(CreateConnectionRequest req);
}
Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/figures/LinePaintListener.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/figures/LinePaintListener.java 2009-01-18 07:41:24 UTC (rev 13104)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/figures/LinePaintListener.java 2009-01-18 07:45:38 UTC (rev 13105)
@@ -6,8 +6,10 @@
import org.eclipse.draw2d.ColorConstants;
import org.eclipse.draw2d.Graphics;
import org.eclipse.draw2d.IFigure;
+import org.eclipse.draw2d.PolylineConnection;
import org.eclipse.draw2d.geometry.Point;
import org.eclipse.draw2d.geometry.PointList;
+import org.eclipse.gef.requests.CreateConnectionRequest;
import org.jboss.tools.smooks.ui.gef.model.LineConnectionModel;
import org.jboss.tools.smooks.ui.gef.util.GraphicsConstants;
@@ -81,4 +83,12 @@
graphics.popState();
}
+ public PolylineConnection createHostFigure(LineConnectionModel model) {
+ return null;
+ }
+
+ public PolylineConnection createDummyFigure(CreateConnectionRequest req) {
+ return null;
+ }
+
}
Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/model/AbstractStructuredDataConnectionModel.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/model/AbstractStructuredDataConnectionModel.java 2009-01-18 07:41:24 UTC (rev 13104)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/model/AbstractStructuredDataConnectionModel.java 2009-01-18 07:45:38 UTC (rev 13105)
@@ -24,6 +24,29 @@
attachTarget();
}
+ public void updateAndAddProperty(String propertyName,Object value){
+ for (Iterator iterator = properties.iterator(); iterator.hasNext();) {
+ PropertyModel property = (PropertyModel) iterator.next();
+ if(property.getName().equals(propertyName)){
+ property.setValue(value);
+ return;
+ }
+ }
+
+ PropertyModel model = new PropertyModel(propertyName,value);
+ properties.add(model);
+ }
+
+ public Object getProperty(String propertyName){
+ for (Iterator iterator = properties.iterator(); iterator.hasNext();) {
+ PropertyModel property = (PropertyModel) iterator.next();
+ if(property.getName().equals(propertyName)){
+ return property.getValue();
+ }
+ }
+ return null;
+ }
+
public AbstractStructuredDataConnectionModel(){
}
@@ -88,9 +111,21 @@
}
public void addPropertyModel(PropertyModel property){
- this.getProperties().add(property);
- property.addPropertyChangeListener(this);
- support.firePropertyChange(CONNECTION_PROPERTY_CHANGE, null, property);
+ if(properties != null){
+ boolean updated = false;
+ for (Iterator iterator = properties.iterator(); iterator.hasNext();) {
+ PropertyModel p = (PropertyModel) iterator.next();
+ if(p.getName().equals(property.getName())){
+ p.setValue(property.getValue());
+ updated = true;
+ }
+ }
+ if(!updated){
+ this.getProperties().add(property);
+ property.addPropertyChangeListener(this);
+ }
+ support.firePropertyChange(CONNECTION_PROPERTY_CHANGE, null, property);
+ }
}
public void removePropertyModel(String propertyName){
Added: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/model/GraphicalModelListenerManager.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/model/GraphicalModelListenerManager.java (rev 0)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/model/GraphicalModelListenerManager.java 2009-01-18 07:45:38 UTC (rev 13105)
@@ -0,0 +1,73 @@
+/**
+ *
+ */
+package org.jboss.tools.smooks.ui.gef.model;
+
+import java.util.HashMap;
+
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtensionPoint;
+import org.eclipse.core.runtime.IExtensionRegistry;
+import org.eclipse.core.runtime.Platform;
+import org.jboss.tools.smooks.utils.SmooksExtensionPointConstants;
+
+/**
+ * @author Dart
+ *
+ */
+public class GraphicalModelListenerManager {
+ private static GraphicalModelListenerManager instance;
+ private HashMap<String, IConfigurationElement> litenserMap = new HashMap<String, IConfigurationElement>();
+
+ private GraphicalModelListenerManager() {
+ super();
+ loadExtensions();
+ }
+
+ public synchronized static GraphicalModelListenerManager getInstance() {
+ if (instance == null) {
+ instance = new GraphicalModelListenerManager();
+ }
+ return instance;
+ }
+
+ public IGraphicalModelListener getPaintListener(String sid, String tid) {
+ try {
+ IConfigurationElement element = litenserMap.get(this.generateKey(
+ sid, tid));
+ if (element != null) {
+ return (IGraphicalModelListener) element
+ .createExecutableExtension(SmooksExtensionPointConstants.EXTENTION_POINT_ATTRIBUTE_CLASS);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ private void loadExtensions() {
+ IExtensionRegistry registry = Platform.getExtensionRegistry();
+ IExtensionPoint ep = registry
+ .getExtensionPoint(SmooksExtensionPointConstants.EXTENTION_POINT_GRAPHICAL_MODEL_LISTENER);
+ IConfigurationElement[] elements = ep.getConfigurationElements();
+ for (int i = 0; i < elements.length; i++) {
+ IConfigurationElement element = elements[i];
+ if (!element
+ .getName()
+ .equals(
+ SmooksExtensionPointConstants.EXTENTION_POINT_ELEMENT_GRAPHICAL_MODEL_LISTENER))
+ continue;
+ String sourceId = element
+ .getAttribute(SmooksExtensionPointConstants.EXTENTION_POINT_ATTRIBUTE_SOURCEID);
+ String targetId = element
+ .getAttribute(SmooksExtensionPointConstants.EXTENTION_POINT_ATTRIBUTE_TARGETID);
+ if (sourceId != null && targetId != null) {
+ litenserMap.put(generateKey(sourceId, targetId), element);
+ }
+ }
+ }
+
+ private String generateKey(String sid, String tid) {
+ return sid + ":" + tid;
+ }
+}
Property changes on: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/model/GraphicalModelListenerManager.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/model/IConnectableModel.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/model/IConnectableModel.java 2009-01-18 07:41:24 UTC (rev 13104)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/model/IConnectableModel.java 2009-01-18 07:45:38 UTC (rev 13105)
@@ -20,8 +20,11 @@
*/
public interface IConnectableModel {
- public static final String P_SOURCE_CONNECTION = "_source_connection";
- public static final String P_TARGET_CONNECTION = "_target_connection";
+ public static final String P_ADD_SOURCE_CONNECTION = "_source_add_connection";
+ public static final String P_ADD_TARGET_CONNECTION = "_add_target_connection";
+
+ public static final String P_REMOVE_SOURCE_CONNECTION = "_source_remove_connection";
+ public static final String P_REMOVE_TARGET_CONNECTION = "_remove_target_connection";
public void addSourceConnection(Object connx);
Added: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/model/IGraphicalModelListener.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/model/IGraphicalModelListener.java (rev 0)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/model/IGraphicalModelListener.java 2009-01-18 07:45:38 UTC (rev 13105)
@@ -0,0 +1,22 @@
+/**
+ *
+ */
+package org.jboss.tools.smooks.ui.gef.model;
+
+import org.jboss.tools.smooks.ui.modelparser.SmooksConfigurationFileGenerateContext;
+
+/**
+ * @author Dart
+ *
+ */
+public interface IGraphicalModelListener {
+
+ public void modelAdded(Object graphicalModel,
+ SmooksConfigurationFileGenerateContext context);
+
+ public void modelRemoved(Object graphicalModel,
+ SmooksConfigurationFileGenerateContext context);
+
+ public void modelChanged(Object graphicalModel,
+ SmooksConfigurationFileGenerateContext context);
+}
Property changes on: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/model/IGraphicalModelListener.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/model/PropertyModel.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/model/PropertyModel.java 2009-01-18 07:41:24 UTC (rev 13104)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/model/PropertyModel.java 2009-01-18 07:45:38 UTC (rev 13105)
@@ -16,9 +16,9 @@
*/
public class PropertyModel extends AbstractStructuredDataModel {
private String name;
- private String value;
+ private Object value;
- public PropertyModel(String name,String value){
+ public PropertyModel(String name,Object value){
this.name = name;
this.value = value;
}
@@ -39,7 +39,7 @@
oldName, this.name);
}
- public String getValue() {
+ public Object getValue() {
return value;
}
@@ -58,7 +58,7 @@
if (!this.name.equals(name)) {
return false;
}
- String value = ((PropertyModel) obj).getValue();
+ Object value = ((PropertyModel) obj).getValue();
if (value == null) {
if (this.value == null)
return true;
@@ -72,8 +72,8 @@
return false;
}
- public void setValue(String value) {
- String oldValue = this.value;
+ public void setValue(Object value) {
+ Object oldValue = this.value;
this.value = value;
firePropertyChange(
AbstractStructuredDataConnectionModel.CONNECTION_PROPERTY_CHANGE,
Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/model/StructuredDataContentModel.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/model/StructuredDataContentModel.java 2009-01-18 07:41:24 UTC (rev 13104)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/model/StructuredDataContentModel.java 2009-01-18 07:45:38 UTC (rev 13105)
@@ -103,7 +103,7 @@
public void addSourceConnection(Object connx) {
sourceConnections.add(connx);
- firePropertyChange(P_SOURCE_CONNECTION, null, connx);
+ firePropertyChange(P_ADD_SOURCE_CONNECTION, null, connx);
}
/**
@@ -112,7 +112,7 @@
public void addTargetConnection(Object connx) {
targetConnections.add(connx);
- firePropertyChange(P_TARGET_CONNECTION, null, connx);
+ firePropertyChange(P_ADD_TARGET_CONNECTION, null, connx);
}
public List getModelSourceConnections() {
@@ -126,13 +126,13 @@
public void removeSourceConnection(Object connx) {
sourceConnections.remove(connx);
- firePropertyChange(P_SOURCE_CONNECTION, connx, null);
+ firePropertyChange(P_ADD_SOURCE_CONNECTION, connx, null);
}
public void removeTargetConnection(Object connx) {
targetConnections.remove(connx);
- firePropertyChange(P_TARGET_CONNECTION, connx, null);
+ firePropertyChange(P_ADD_TARGET_CONNECTION, connx, null);
}
public boolean equals(Object node) {
Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/model/StructuredDataModel.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/model/StructuredDataModel.java 2009-01-18 07:41:24 UTC (rev 13104)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/model/StructuredDataModel.java 2009-01-18 07:45:38 UTC (rev 13105)
@@ -43,7 +43,7 @@
*/
public void addSourceConnection(Object connx) {
modelSourceConnections.add(connx);
- firePropertyChange(IConnectableModel.P_SOURCE_CONNECTION, null, connx);
+ firePropertyChange(IConnectableModel.P_ADD_SOURCE_CONNECTION, null, connx);
}
/*
@@ -55,7 +55,7 @@
*/
public void addTargetConnection(Object connx) {
modelTargetConnections.add(connx);
- firePropertyChange(IConnectableModel.P_TARGET_CONNECTION, null, connx);
+ firePropertyChange(IConnectableModel.P_ADD_TARGET_CONNECTION, null, connx);
}
/*
@@ -67,7 +67,7 @@
*/
public void removeSourceConnection(Object connx) {
modelSourceConnections.remove(connx);
- firePropertyChange(IConnectableModel.P_SOURCE_CONNECTION, connx, null);
+ firePropertyChange(IConnectableModel.P_ADD_SOURCE_CONNECTION, connx, null);
}
@@ -81,7 +81,7 @@
*/
public void removeTargetConnection(Object connx) {
modelTargetConnections.remove(connx);
- firePropertyChange(IConnectableModel.P_TARGET_CONNECTION, connx, null);
+ firePropertyChange(IConnectableModel.P_ADD_TARGET_CONNECTION, connx, null);
}
/**
Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/model/TreeItemRelationModel.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/model/TreeItemRelationModel.java 2009-01-18 07:41:24 UTC (rev 13104)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/model/TreeItemRelationModel.java 2009-01-18 07:45:38 UTC (rev 13105)
@@ -54,22 +54,22 @@
public void addSourceConnection(Object connx) {
this.getModelSourceConnections().add(connx);
- this.firePropertyChange(P_SOURCE_CONNECTION, null, connx);
+ this.firePropertyChange(P_ADD_SOURCE_CONNECTION, null, connx);
}
public void addTargetConnection(Object connx) {
this.getModelTargetConnections().add(connx);
- this.firePropertyChange(P_TARGET_CONNECTION, null, connx);
+ this.firePropertyChange(P_ADD_TARGET_CONNECTION, null, connx);
}
public void removeSourceConnection(Object connx) {
this.getModelSourceConnections().remove(connx);
- this.firePropertyChange(P_SOURCE_CONNECTION, connx, null);
+ this.firePropertyChange(P_REMOVE_SOURCE_CONNECTION, connx, null);
}
public void removeTargetConnection(Object connx) {
this.getModelTargetConnections().remove(connx);
- this.firePropertyChange(P_TARGET_CONNECTION, connx, null);
+ this.firePropertyChange(P_REMOVE_TARGET_CONNECTION, connx, null);
}
public List<Object> getModelSourceConnections() {
Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/policy/CustomGraphicalNodeEditPolicy.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/policy/CustomGraphicalNodeEditPolicy.java 2009-01-18 07:41:24 UTC (rev 13104)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/policy/CustomGraphicalNodeEditPolicy.java 2009-01-18 07:45:38 UTC (rev 13105)
@@ -4,18 +4,26 @@
import java.util.List;
import org.eclipse.core.runtime.CoreException;
+import org.eclipse.draw2d.Connection;
import org.eclipse.draw2d.ConnectionAnchor;
+import org.eclipse.draw2d.PolylineConnection;
import org.eclipse.gef.EditPart;
import org.eclipse.gef.EditPartViewer;
import org.eclipse.gef.GraphicalViewer;
import org.eclipse.gef.NodeEditPart;
+import org.eclipse.gef.Request;
import org.eclipse.gef.commands.Command;
import org.eclipse.gef.editpolicies.GraphicalNodeEditPolicy;
import org.eclipse.gef.requests.CreateConnectionRequest;
import org.eclipse.gef.requests.ReconnectRequest;
import org.jboss.tools.smooks.ui.gef.commandprocessor.CommandProcessorFactory;
import org.jboss.tools.smooks.ui.gef.commands.CreateConnectionCommand;
+import org.jboss.tools.smooks.ui.gef.editparts.AbstractStructuredDataEditPart;
+import org.jboss.tools.smooks.ui.gef.figures.CurveLineConnection;
+import org.jboss.tools.smooks.ui.gef.figures.ILineFigurePaintListener;
+import org.jboss.tools.smooks.ui.gef.figures.LineFigurePaintListenerManager;
import org.jboss.tools.smooks.ui.gef.model.AbstractStructuredDataModel;
+import org.jboss.tools.smooks.ui.gef.model.SourceModel;
public class CustomGraphicalNodeEditPolicy extends GraphicalNodeEditPolicy {
@@ -29,15 +37,40 @@
}
command.setTarget(getHost().getModel());
try {
- boolean cando = CommandProcessorFactory.getInstance().processGEFCommand(command,
- getHost());
- if(!cando) return null;
+ boolean cando = CommandProcessorFactory.getInstance()
+ .processGEFCommand(command, getHost());
+ if (!cando)
+ return null;
} catch (CoreException e) {
// ignore
}
return command;
}
+ protected Connection createDummyConnection(Request req) {
+ if (req instanceof CreateConnectionRequest) {
+ CreateConnectionRequest connectionRequest = (CreateConnectionRequest) req;
+ EditPart part = connectionRequest.getSourceEditPart();
+ if (part != null) {
+ if (part instanceof AbstractStructuredDataEditPart) {
+ String sid = ((AbstractStructuredDataEditPart) part)
+ .getSourceID();
+ String tid = ((AbstractStructuredDataEditPart) part)
+ .getTargetID();
+ ILineFigurePaintListener listener = LineFigurePaintListenerManager
+ .getInstance().getPaintListener(sid, tid);
+ if (listener != null) {
+ Connection connection = listener
+ .createDummyFigure(connectionRequest);
+ if (connection != null)
+ return connection;
+ }
+ }
+ }
+ }
+ return new CurveLineConnection(null);
+ }
+
protected EditPart findTheEditPart(Object model, GraphicalViewer viewer) {
EditPart rootEditPart = viewer.getContents();
EditPart resultEditPart = null;
@@ -47,7 +80,8 @@
EditPart childEditPart = (EditPart) iterator.next();
Object cm = childEditPart.getModel();
if (cm instanceof AbstractStructuredDataModel) {
- if (((AbstractStructuredDataModel) cm).getReferenceEntityModel() == model) {
+ if (((AbstractStructuredDataModel) cm)
+ .getReferenceEntityModel() == model) {
resultEditPart = childEditPart;
break;
}
@@ -62,9 +96,10 @@
command.setSource(getHost().getModel());
request.setStartCommand(command);
try {
- boolean cando = CommandProcessorFactory.getInstance().processGEFCommand(command,
- getHost());
- if(!cando) return null;
+ boolean cando = CommandProcessorFactory.getInstance()
+ .processGEFCommand(command, getHost());
+ if (!cando)
+ return null;
} catch (CoreException e) {
// ignore
}
Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/tools/TargetTreeDropTargetListener.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/tools/TargetTreeDropTargetListener.java 2009-01-18 07:41:24 UTC (rev 13104)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/tools/TargetTreeDropTargetListener.java 2009-01-18 07:45:38 UTC (rev 13105)
@@ -74,9 +74,12 @@
if (item == null)
return;
Object model = item.getData();
-
- SmooksCustomConnectionCreationTool tool = (SmooksCustomConnectionCreationTool) this
- .getGraphicalViewer().getEditDomain().getActiveTool();
+ Tool activeTool = getGraphicalViewer().getEditDomain()
+ .getActiveTool();
+ SmooksCustomConnectionCreationTool tool = null;
+ if (activeTool instanceof SmooksCustomConnectionCreationTool) {
+ tool = (SmooksCustomConnectionCreationTool) activeTool;
+ }
if (tool != null) {
tool.activeTargetEditPart(model, graphicalViewer);
Event temp = new Event();
@@ -97,8 +100,13 @@
public void drop(DropTargetEvent event) {
try {
Object source = TemplateTransfer.getInstance().getTemplate();
- SmooksCustomConnectionCreationTool tool = (SmooksCustomConnectionCreationTool) this
- .getGraphicalViewer().getEditDomain().getActiveTool();
+ Tool activeTool = getGraphicalViewer().getEditDomain()
+ .getActiveTool();
+ SmooksCustomConnectionCreationTool tool = null;
+ if (activeTool instanceof SmooksCustomConnectionCreationTool) {
+ tool = (SmooksCustomConnectionCreationTool) activeTool;
+ }
+ if(tool == null) return;
if (source == null) {
source = tool.getSourceModel();
}
Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/modelparser/SmooksConfigurationFileGenerateContext.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/modelparser/SmooksConfigurationFileGenerateContext.java 2009-01-18 07:41:24 UTC (rev 13104)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/modelparser/SmooksConfigurationFileGenerateContext.java 2009-01-18 07:45:38 UTC (rev 13105)
@@ -17,6 +17,8 @@
import org.eclipse.core.resources.IFile;
import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.gef.EditDomain;
+import org.eclipse.gef.commands.CommandStack;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.swt.widgets.Shell;
@@ -39,6 +41,16 @@
protected IFile smooksConfigFile = null;
protected EditingDomain domain;
+ protected EditDomain gefDomain;
+
+ public EditDomain getGefDomain() {
+ return gefDomain;
+ }
+
+ public void setGefDomain(EditDomain gefDomain) {
+ this.gefDomain = gefDomain;
+ }
+
protected ITreeContentProvider sourceViewerProvider;
protected ITreeContentProvider targetViewerProvider;
Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/utils/SmooksExtensionPointConstants.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/utils/SmooksExtensionPointConstants.java 2009-01-18 07:41:24 UTC (rev 13104)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/utils/SmooksExtensionPointConstants.java 2009-01-18 07:45:38 UTC (rev 13105)
@@ -28,8 +28,12 @@
public static final String EXTENTION_POINT_LINEPAINT_LISTENER = "org.jboss.tools.smooks.ui.linePaintListener";
+ public static final String EXTENTION_POINT_GRAPHICAL_MODEL_LISTENER = "org.jboss.tools.smooks.ui.graphicalModelListener";
+
public static final String EXTENTION_POINT_ELEMENT_LINEPAINT_LISTENER = "linePaintListener";
+ public static final String EXTENTION_POINT_ELEMENT_GRAPHICAL_MODEL_LISTENER = "graphicalModelListener";
+
public static final String EXTENTION_POINT_ELEMENT_SOURCEMODEL_ANALYZER = "sourceModelAnalyzer";
public static final String EXTENTION_POINT_ELEMENT_TARGETMODEL_ANALYZER = "targetModelAnalyzer";
Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/utils/UIUtils.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/utils/UIUtils.java 2009-01-18 07:41:24 UTC (rev 13104)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/utils/UIUtils.java 2009-01-18 07:45:38 UTC (rev 13105)
@@ -9,10 +9,13 @@
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.Status;
+import org.eclipse.emf.common.command.Command;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.emf.ecore.util.ExtendedMetaData;
import org.eclipse.emf.ecore.util.FeatureMap;
import org.eclipse.emf.ecore.xml.type.AnyType;
+import org.eclipse.emf.edit.command.AddCommand;
+import org.eclipse.emf.edit.domain.EditingDomain;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jface.dialogs.ErrorDialog;
@@ -34,6 +37,7 @@
import org.jboss.tools.smooks.javabean.model.JavaBeanModel;
import org.jboss.tools.smooks.model.AbstractResourceConfig;
import org.jboss.tools.smooks.model.ResourceConfigType;
+import org.jboss.tools.smooks.model.SmooksPackage;
import org.jboss.tools.smooks.model.SmooksResourceListType;
import org.jboss.tools.smooks.model.util.SmooksModelUtils;
import org.jboss.tools.smooks.ui.IXMLStructuredObject;
@@ -67,6 +71,15 @@
return fill;
}
+ public synchronized static void addResourceConfigType(EditingDomain domain,
+ SmooksResourceListType list, ResourceConfigType obj) {
+ Command addResourceConfigCommand = AddCommand.create(domain, list,
+ SmooksPackage.eINSTANCE
+ .getSmooksResourceListType_AbstractResourceConfig(),
+ obj);
+ addResourceConfigCommand.execute();
+ }
+
public static AbstractXMLObject getRootTagXMLObject(AbstractXMLObject xmlObj) {
if (xmlObj == null)
return null;
@@ -149,11 +162,13 @@
}
if (ignore)
continue;
- String pvalue = property.getValue();
- binding.getAnyAttribute()
- .add(
- ExtendedMetaData.INSTANCE.demandFeature(null,
- pname, false), pvalue);
+ Object obj = property.getValue();
+ if (obj != null) {
+ String pvalue = obj.toString();
+ binding.getAnyAttribute().add(
+ ExtendedMetaData.INSTANCE.demandFeature(null, pname,
+ false), pvalue);
+ }
}
}
@@ -610,36 +625,37 @@
public static IXMLStructuredObject getRootParent(IXMLStructuredObject child) {
IXMLStructuredObject parent = child.getParent();
- if (parent == null)
+ if (parent == null || parent.isRootNode())
return child;
IXMLStructuredObject temp = parent;
- while (temp != null) {
+ while (temp != null && !temp.isRootNode()) {
parent = temp;
temp = temp.getParent();
}
return parent;
}
- public static String generatePath(IXMLStructuredObject node,
- IXMLStructuredObject contextNode, final String sperator,
+ public static String generatePath(IXMLStructuredObject startNode,
+ IXMLStructuredObject stopNode, final String sperator,
boolean includeContext) {
- IXMLStructuredObject parent = node.getParent();
- String name = node.getNodeName();
+ String name = "";
List<IXMLStructuredObject> nodeList = new ArrayList<IXMLStructuredObject>();
- if (parent == null) {
-
- } else {
- IXMLStructuredObject temp = parent;
-
+ IXMLStructuredObject temp = startNode;
+ if (stopNode != null) {
+ while (temp != stopNode && temp != null) {
+ nodeList.add(temp);
+ temp = temp.getParent();
+ }
}
- if(node.isAttribute()){
- name = "@" + name;
- }
- for(int i = nodeList.size() ; i > 0 ; i --){
+ for (int i =0; i < nodeList.size(); i++) {
IXMLStructuredObject n = nodeList.get(i);
- name = n.getNodeName() + sperator + name;
+ String nodeName = n.getNodeName();
+ if(n.isAttribute()){
+ nodeName = "@" + nodeName;
+ }
+ name = nodeName + sperator + name;
}
- return "";
+ return name;
}
public static IXMLStructuredObject getChildNodeWithName(String name,
Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/xml/model/AbstractXMLObject.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/xml/model/AbstractXMLObject.java 2009-01-18 07:41:24 UTC (rev 13104)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/xml/model/AbstractXMLObject.java 2009-01-18 07:45:38 UTC (rev 13105)
@@ -112,6 +112,10 @@
public String getNodeName() {
return getName();
}
+
+ public boolean isRootNode() {
+ return false;
+ }
}
Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/xml/model/TagList.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/xml/model/TagList.java 2009-01-18 07:41:24 UTC (rev 13104)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/xml/model/TagList.java 2009-01-18 07:45:38 UTC (rev 13105)
@@ -83,7 +83,16 @@
public AbstractXMLObject getParent() {
return null;
}
+
+
+
+ @Override
+ public boolean isRootNode() {
+ return true;
+ }
+
+
}
Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/xml/ui/AddXMLChildNodeAction.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/xml/ui/AddXMLChildNodeAction.java 2009-01-18 07:41:24 UTC (rev 13104)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/xml/ui/AddXMLChildNodeAction.java 2009-01-18 07:45:38 UTC (rev 13105)
@@ -7,10 +7,8 @@
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.TreeViewer;
import org.jboss.tools.smooks.ui.popup.SmooksAction;
import org.jboss.tools.smooks.xml.model.AbstractXMLObject;
-import org.jboss.tools.smooks.xml.model.TagList;
import org.jboss.tools.smooks.xml.model.TagObject;
import org.jboss.tools.smooks.xml.model.TagPropertyObject;
Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/xml/ui/XMLPropertiesSection.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/xml/ui/XMLPropertiesSection.java 2009-01-18 07:41:24 UTC (rev 13104)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/xml/ui/XMLPropertiesSection.java 2009-01-18 07:45:38 UTC (rev 13105)
@@ -35,11 +35,11 @@
public static final String MAPPING_TYPE = "mappingType";
public static final String SELECTOR_NAMESPACE = "selector-namespace";
-
+
public static final String MAPPING = "mapping";
-
+
public static final String BINDING = "binding";
-
+
private Text namespaceText;
private Button checkButton;
private CCombo connectionTypeCombo;
@@ -124,12 +124,12 @@
List<PropertyModel> list = connection.getProperties();
for (Iterator iterator = list.iterator(); iterator.hasNext();) {
PropertyModel propertyModel = (PropertyModel) iterator.next();
- if(propertyModel.getName().equals(MAPPING_TYPE)){
+ if (propertyModel.getName().equals(MAPPING_TYPE)) {
type = propertyModel;
break;
}
}
- if(type == null){
+ if (type == null) {
type = new PropertyModel();
type.setName(MAPPING_TYPE);
}
@@ -166,9 +166,9 @@
}
if (propertyModel.getName().equals(MAPPING_TYPE)) {
- String type = propertyModel.getValue();
- if (type != null)
- connectionTypeCombo.setText(type);
+ Object value = propertyModel.getValue();
+ if (value != null)
+ connectionTypeCombo.setText(value.toString());
}
}
}
Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/xml2java/analyzer/XML2JavaAnalyzer.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/xml2java/analyzer/XML2JavaAnalyzer.java 2009-01-18 07:41:24 UTC (rev 13104)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/xml2java/analyzer/XML2JavaAnalyzer.java 2009-01-18 07:45:38 UTC (rev 13105)
@@ -158,9 +158,11 @@
.hasNext();) {
PropertyModel propertyModel = (PropertyModel) iterator.next();
if (propertyModel.getName().equals("selector-namespace")) {
- resourceConfigType.setSelectorNamespace(propertyModel
- .getValue());
+ Object value = propertyModel.getValue();
+ if (value != null)
+ resourceConfigType.setSelectorNamespace(value.toString());
break;
+
}
}
// create a resource and add it to resourceConfig
@@ -323,7 +325,8 @@
for (int i = startIndex; i < rlist.size(); i++) {
AbstractResourceConfig abstractRC = (AbstractResourceConfig) rlist
.get(i);
- if(!(abstractRC instanceof ResourceConfigType)) continue;
+ if (!(abstractRC instanceof ResourceConfigType))
+ continue;
ResourceConfigType resourceConfig = (ResourceConfigType) abstractRC;
ResourceType resource = resourceConfig.getResource();
if (resource == null)
@@ -339,8 +342,9 @@
continue;
}
String selector = resourceConfig.getSelector();
- AbstractXMLObject source = (AbstractXMLObject) UIUtils.localXMLNodeWithPath(selector, sourceRoot);
-// findXMLNodeWithSelector(selector, sourceRoot);
+ AbstractXMLObject source = (AbstractXMLObject) UIUtils
+ .localXMLNodeWithPath(selector, sourceRoot);
+ // findXMLNodeWithSelector(selector, sourceRoot);
if (source == null) {
// TODO if can't find the root , throw exception
// MODIFY by Dart 2008.11.17
@@ -408,7 +412,8 @@
if (selector.equalsIgnoreCase(root.getName()))
return root;
if (root instanceof TagObject) {
- List<AbstractXMLObject> children = ((TagObject) root).getXMLNodeChildren();
+ List<AbstractXMLObject> children = ((TagObject) root)
+ .getXMLNodeChildren();
List<TagPropertyObject> properties = ((TagObject) root)
.getProperties();
for (Iterator iterator = children.iterator(); iterator.hasNext();) {
@@ -548,8 +553,9 @@
String newSelector = processingResourceConfig.getSelector();
if (newSelector == null)
return;
- AbstractXMLObject newRoot = (AbstractXMLObject) UIUtils.localXMLNodeWithPath(newSelector, root);
-// findXMLNodeWithSelector(newSelector,root);
+ AbstractXMLObject newRoot = (AbstractXMLObject) UIUtils
+ .localXMLNodeWithPath(newSelector, root);
+ // findXMLNodeWithSelector(newSelector,root);
if (newRoot == null) {
// TODO If can't find the element , throw exception
// MODIFY by Dart , 2008.11.07
@@ -561,7 +567,8 @@
processingResourceConfig, newRoot, targetBean);
} else {
- AbstractXMLObject source = (AbstractXMLObject) UIUtils.localXMLNodeWithPath(selector, root);
+ AbstractXMLObject source = (AbstractXMLObject) UIUtils
+ .localXMLNodeWithPath(selector, root);
if (source == null) {
// TODO If can't find the element , throw exception
// MODIFY by Dart , 2008.11.07
@@ -622,8 +629,10 @@
SmooksResourceListType listType) {
List list = listType.getAbstractResourceConfig();
for (Iterator iterator = list.iterator(); iterator.hasNext();) {
- AbstractResourceConfig abstractRC = (AbstractResourceConfig) iterator.next();
- if(!(abstractRC instanceof ResourceConfigType)) continue;
+ AbstractResourceConfig abstractRC = (AbstractResourceConfig) iterator
+ .next();
+ if (!(abstractRC instanceof ResourceConfigType))
+ continue;
ResourceConfigType resource = (ResourceConfigType) abstractRC;
ResourceType rt = resource.getResource();
if (rt == null)
Added: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/xml2java/analyzer/XML2JavaAnalyzer2.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/xml2java/analyzer/XML2JavaAnalyzer2.java (rev 0)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/xml2java/analyzer/XML2JavaAnalyzer2.java 2009-01-18 07:45:38 UTC (rev 13105)
@@ -0,0 +1,25 @@
+/**
+ *
+ */
+package org.jboss.tools.smooks.xml2java.analyzer;
+
+import org.jboss.tools.smooks.javabean.model.JavaBeanList;
+import org.jboss.tools.smooks.javabean.ui.BeanPopulatorMappingAnalyzer;
+import org.jboss.tools.smooks.xml.model.TagList;
+
+/**
+ * @author Dart
+ *
+ */
+public class XML2JavaAnalyzer2 extends BeanPopulatorMappingAnalyzer {
+
+ @Override
+ protected boolean checkSourceAndTarget(Object sourceObject,
+ Object targetObject) {
+ if(sourceObject instanceof TagList && targetObject instanceof JavaBeanList){
+ return true;
+ }
+ return false;
+ }
+
+}
Property changes on: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/xml2java/analyzer/XML2JavaAnalyzer2.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
More information about the jbosstools-commits
mailing list