[jbosstools-commits] JBoss Tools SVN: r13106 - in trunk/smooks/plugins/org.jboss.tools.smooks.ui: src/org/jboss/tools/smooks/javabean/commandprocessor and 7 other directories.

jbosstools-commits at lists.jboss.org jbosstools-commits at lists.jboss.org
Sun Jan 18 09:24:17 EST 2009


Author: DartPeng
Date: 2009-01-18 09:24:16 -0500 (Sun, 18 Jan 2009)
New Revision: 13106

Added:
   trunk/smooks/plugins/org.jboss.tools.smooks.ui/icons/full/obj16/int_obj.gif
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/model/BeanlabelProvider.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/BeanPopulatorGraphicalModelListener.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/JavaImageConstants.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/AddJavaBeanModelAction.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/gef/editparts/StructuredDataConnectionEditPart.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/utils/ProjectClassLoader.java
Log:
JBIDE-3539

Modify the ProjectClassLoader, allow the classloader to load the classes which is from the required projects.

Added: trunk/smooks/plugins/org.jboss.tools.smooks.ui/icons/full/obj16/int_obj.gif
===================================================================
(Binary files differ)


Property changes on: trunk/smooks/plugins/org.jboss.tools.smooks.ui/icons/full/obj16/int_obj.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

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:45:38 UTC (rev 13105)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/commandprocessor/JavaBeanModelCommandProcessor.java	2009-01-18 14:24:16 UTC (rev 13106)
@@ -11,6 +11,7 @@
 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;
@@ -19,6 +20,7 @@
 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.Java2JavaAnalyzer;
 import org.jboss.tools.smooks.javabean.model.JavaBeanList;
 import org.jboss.tools.smooks.javabean.model.JavaBeanModel;
 import org.jboss.tools.smooks.javabean.ui.BeanPopulatorMappingAnalyzer;
@@ -84,6 +86,8 @@
 			AbstractStructuredDataModel sourceGraphModel,
 			AbstractStructuredDataModel targetGraphModel,
 			SmooksConfigurationFileGenerateContext context) {
+		if (sourceGraphModel instanceof TargetModel)
+			return true;
 		Object source = ((AbstractStructuredDataModel) sourceGraphModel)
 				.getReferenceEntityModel();
 		Object t = ((AbstractStructuredDataModel) targetGraphModel)
@@ -142,24 +146,54 @@
 		if (sourceGraphModel instanceof SourceModel) {
 			return true;
 		}
+		Object sourceParent = sourceGraphModel.getReferenceEntityModel();
+		if(!(sourceParent instanceof JavaBeanModel)){
+			return false;
+		}
+		sourceParent = ((JavaBeanModel)sourceParent).getParent();
+		if(sourceParent == null){
+			return false;
+		}
+		if(sourceParent instanceof JavaBeanList){
+			return false;
+		}
+		IConnectableModel sourceParentGraph = (IConnectableModel) UIUtils
+				.findGraphModel(context.getGraphicalRootModel(), sourceParent);
 		List connections = ((IConnectableModel) targetGraphModel)
 				.getModelTargetConnections();
 		List connections1 = ((IConnectableModel) sourceGraphModel)
-		.getModelSourceConnections();
-		// *2Java , allow the target node have two connections :
+				.getModelSourceConnections();
+		// If the source's parent node haven't any associated resource-config ,
+		// refuse the connect request.
+		List parentConnections = sourceParentGraph.getModelTargetConnections();
+		if (parentConnections.size() == 0)
+			return false;
+		for (Iterator iterator = parentConnections.iterator(); iterator
+				.hasNext();) {
+			LineConnectionModel object = (LineConnectionModel) iterator.next();
+			if (object.getProperty(Java2JavaAnalyzer.REFERENCE_RESOURCE_CONFIG) == null) {
+				return false;
+			}
+		}
+
+		if (connections1.size() > 0)
+			return false;
+		boolean hasBeanCreation = false;
+		// *2Java , allow the target node have two kind 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)
+		for (Iterator iterator = connections.iterator(); iterator.hasNext();) {
+			LineConnectionModel line = (LineConnectionModel) iterator.next();
+			Object bindingType = line
+					.getProperty(BeanPopulatorMappingAnalyzer.BINDING_TYPE);
+			if (BeanPopulatorMappingAnalyzer.BEAN_CREATION.equals(bindingType)) {
+				hasBeanCreation = true;
+				break;
+			}
+		}
+		if (!hasBeanCreation)
 			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;
 	}
 

Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/model/BeanlabelProvider.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/model/BeanlabelProvider.java	2009-01-18 07:45:38 UTC (rev 13105)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/model/BeanlabelProvider.java	2009-01-18 14:24:16 UTC (rev 13106)
@@ -74,6 +74,11 @@
 								.getImageRegistry()
 								.get(JavaImageConstants.IMAGE_JAVA_COLLECTION);
 					}
+					if (typeRef.isInterface()) {
+						return SmooksUIActivator.getDefault()
+								.getImageRegistry()
+								.get(JavaImageConstants.IMAGE_JAVA_INTERFACE);
+					}
 				}
 				return this.getJavaObjectImage();
 			}

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:45:38 UTC (rev 13105)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/model/JavaBeanModel.java	2009-01-18 14:24:16 UTC (rev 13106)
@@ -91,6 +91,10 @@
 	}
 
 	public void addPropertyChangeListener(PropertyChangeListener listener) {
+		PropertyChangeListener[] array = support.getPropertyChangeListeners();
+		for (int i = 0; i < array.length; i++) {
+			if(listener == array[i]) return;
+		}
 		support.addPropertyChangeListener(listener);
 	}
 

Modified: 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	2009-01-18 07:45:38 UTC (rev 13105)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/BeanPopulatorGraphicalModelListener.java	2009-01-18 14:24:16 UTC (rev 13106)
@@ -3,6 +3,7 @@
  */
 package org.jboss.tools.smooks.javabean.ui;
 
+import java.beans.PropertyChangeEvent;
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
@@ -19,6 +20,7 @@
 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.AbstractStructuredDataConnectionModel;
 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;
@@ -132,12 +134,14 @@
 					return;
 				}
 				beanId = beanId.trim();
-				String propertyName = ((JavaBeanModel)source).getName();
-				if(((JavaBeanModel)sourceParent).isArray() || ((JavaBeanModel)sourceParent).isList()){
+				String propertyName = ((JavaBeanModel) source).getName();
+				if (((JavaBeanModel) sourceParent).isArray()
+						|| ((JavaBeanModel) sourceParent).isList()) {
 					propertyName = null;
 				}
-				String selector = "${" + beanId +"}";
-				addBindingToParamType(hostResourceConfig, propertyName, selector, line);
+				String selector = "${" + beanId + "}";
+				addBindingToParamType(hostResourceConfig, propertyName,
+						selector, line);
 			}
 		}
 	}
@@ -145,7 +149,8 @@
 	private void setReferenceResourceConfig(ResourceConfigType resourceConfig,
 			LineConnectionModel connection) {
 		connection.updateAndAddProperty(
-				BeanPopulatorMappingAnalyzer.REFERENCE_RESOURCE_CONFIG, resourceConfig);
+				BeanPopulatorMappingAnalyzer.REFERENCE_RESOURCE_CONFIG,
+				resourceConfig);
 	}
 
 	private ResourceConfigType getResourceConfig(LineConnectionModel line) {
@@ -286,19 +291,19 @@
 			JavaBeanModel parent, GraphRootModel root,
 			ResourceConfigType referenceResourceConfig) {
 		IConnectableModel parentGraphModel = (IConnectableModel) UIUtils
-		.findGraphModel(root, parent);
-		List targetConnections  = parentGraphModel.getModelTargetConnections();
+				.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)){
+		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
@@ -362,7 +367,8 @@
 		EditingDomain domain = context.getDomain();
 		UIUtils.addResourceConfigType(domain, listType, resourceConfig);
 		PropertyModel bindingModel = new PropertyModel(
-				BeanPopulatorMappingAnalyzer.REFERENCE_RESOURCE_CONFIG, resourceConfig);
+				BeanPopulatorMappingAnalyzer.REFERENCE_RESOURCE_CONFIG,
+				resourceConfig);
 		((LineConnectionModel) graphicalModel).addPropertyModel(bindingModel);
 	}
 
@@ -430,8 +436,18 @@
 	 * )
 	 */
 	public void modelChanged(Object graphicalModel,
-			SmooksConfigurationFileGenerateContext context) {
-
+			SmooksConfigurationFileGenerateContext context,
+			PropertyChangeEvent event) {
+		if(graphicalModel instanceof LineConnectionModel){
+			String pm = event.getPropertyName();
+			if(AbstractStructuredDataConnectionModel.CONNECTION_PROPERTY_CHANGE.equals(pm)){
+				if(event.getNewValue() != null){
+					if(event.getOldValue() != null){
+						PropertyModel model = (PropertyModel)event.getNewValue();
+					}
+				}
+			}
+		}
 	}
 
 	/*

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:45:38 UTC (rev 13105)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/JavaBeanModelLoadComposite.java	2009-01-18 14:24:16 UTC (rev 13106)
@@ -10,6 +10,7 @@
  ******************************************************************************/
 package org.jboss.tools.smooks.javabean.ui;
 
+import java.lang.reflect.Array;
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
@@ -242,7 +243,29 @@
 	}
 
 	public void widgetSelected(SelectionEvent arg0) {
-		IJavaSearchScope scope = JavaSearchScopeFactory.getInstance().createWorkspaceScope(true);
+
+		IJavaSearchScope scope = null;
+		if (javaProject == null) {
+			scope = JavaSearchScopeFactory.getInstance().createWorkspaceScope(
+					true);
+		} else {
+			String[] requiredProjects = null;
+			try {
+				requiredProjects = javaProject.getRequiredProjectNames();
+			} catch (Exception e) {
+			}
+			if (requiredProjects == null) {
+				requiredProjects = new String[] { javaProject.getElementName() };
+			} else {
+				String[] temp = new String[requiredProjects.length + 1];
+				temp[0] = javaProject.getElementName();
+				System.arraycopy(requiredProjects, 0, temp, 1,
+						requiredProjects.length);
+				requiredProjects = temp;
+			}
+			scope = JavaSearchScopeFactory.getInstance()
+					.createJavaProjectSearchScope(requiredProjects, true);
+		}
 		SelectionDialog dialog;
 		Throwable exception = null;
 		try {
@@ -340,12 +363,14 @@
 				switch (columnIndex) {
 				case 0:
 					if (isArray) {
-						return SmooksUIActivator.getDefault().getImageRegistry().get(
-								JavaImageConstants.IMAGE_JAVA_ARRAY);
+						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_COLLECTION);
 					}
 					return SmooksUIActivator.getDefault().getImageRegistry()
 							.get(JavaImageConstants.IMAGE_JAVA_OBJECT);

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:45:38 UTC (rev 13105)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/JavaImageConstants.java	2009-01-18 14:24:16 UTC (rev 13106)
@@ -4,6 +4,8 @@
 	public static final String IMAGE_JAVA_ATTRIBUTE = "icons/full/obj16/att_obj.gif";
 	public static final String IMAGE_JAVA_OBJECT = "java_object";
 	
+	public static final String IMAGE_JAVA_INTERFACE = "icons/full/obj16/int_obj.gif";
+	
 	public static final String IMAGE_JAVA_COLLECTION = "icons/full/obj16/javalistmodel.gif";
 	
 	public static final String IMAGE_JAVA_ARRAY = "icons/full/obj16/javaarraymodel.gif";

Modified: 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	2009-01-18 07:45:38 UTC (rev 13105)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/TargetReferenceConnectionLine.java	2009-01-18 14:24:16 UTC (rev 13106)
@@ -38,12 +38,10 @@
 		}
 
 		int width = getCenterWidth();
-		int h = Math.min(width/4, 15);
 		
-		
-		Point startnext = new Point(start.x - 30, start.y + h);
+		Point startnext = new Point(start.x - 30, start.y );
 
-		Point endnext = new Point(end.x - 30, end.y - h);
+		Point endnext = new Point(end.x - 30, end.y );
 
 		start = new Point(start.x - 5,start.y);
 		end = new Point(end.x - 5,end.y);
@@ -78,8 +76,30 @@
 
 	@Override
 	public boolean containsPoint(int x, int y) {
-		// TODO Auto-generated method stub
-		return super.containsPoint(x, y);
+		Point start = getStart();
+		Point end = getEnd();
+		
+		Point startnext = new Point(start.x - 30, start.y );
+
+		Point endnext = new Point(end.x - 30, end.y );
+
+		start = new Point(start.x - 5,start.y);
+		end = new Point(end.x - 5,end.y);
+		
+		if(x >= startnext.x && (Math.abs(y - startnext.y) <= 2) && x <= start.x){
+			return true;
+		}
+		if(x >= endnext.x && (Math.abs(y - endnext.y) <= 2) && x <= end.x){
+			return true;
+		}
+		int y1 = Math.max(startnext.y, endnext.y);
+		int y2 = Math.min(startnext.y, endnext.y);
+		
+		if(y <= y1 && y >= y2 && (Math.abs(x - startnext.x) <= 2)){
+			return true;
+		}
+		
+		return false;
 	}
 
 }

Modified: 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	2009-01-18 07:45:38 UTC (rev 13105)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/action/AddJavaBeanModelAction.java	2009-01-18 14:24:16 UTC (rev 13106)
@@ -58,6 +58,9 @@
 			}else{
 				if(input instanceof JavaBeanList){
 					List children = list.getChildren();
+					if(viewer instanceof PropertyChangeListener){
+						((JavaBeanList)input).addPropertyChangeListener((PropertyChangeListener)viewer);
+					}
 					for (Iterator iterator = children.iterator(); iterator
 							.hasNext();) {
 						JavaBeanModel javaBean = (JavaBeanModel) iterator.next();

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:45:38 UTC (rev 13105)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/SmooksUIActivator.java	2009-01-18 14:24:16 UTC (rev 13106)
@@ -66,6 +66,8 @@
 						"icons/full/obj16/element_obj.gif"));
 		
 		// regist java images
+		reg.put(JavaImageConstants.IMAGE_JAVA_INTERFACE,
+				imageDescriptorFromPlugin(PLUGIN_ID, JavaImageConstants.IMAGE_JAVA_INTERFACE));
 		reg.put(JavaImageConstants.IMAGE_JAVA_ATTRIBUTE,
 				imageDescriptorFromPlugin(PLUGIN_ID, JavaImageConstants.IMAGE_JAVA_ATTRIBUTE));
 		reg.put(JavaImageConstants.IMAGE_CHECKBOX_CHECK,

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:45:38 UTC (rev 13105)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/editparts/StructuredDataConnectionEditPart.java	2009-01-18 14:24:16 UTC (rev 13106)
@@ -27,11 +27,14 @@
 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.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.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;
+import org.jboss.tools.smooks.ui.modelparser.SmooksConfigurationFileGenerateContext;
 
 public class StructuredDataConnectionEditPart extends
 		AbstractConnectionEditPart implements PropertyChangeListener {
@@ -86,6 +89,17 @@
 		return null;
 	}
 
+	private SmooksConfigurationFileGenerateContext getSmooksContext() {
+		GraphicalViewer viewer = (GraphicalViewer) this.getViewer();
+		IEditorPart editor = ((DefaultEditDomain) viewer.getEditDomain())
+				.getEditorPart();
+		if (editor instanceof SmooksGraphicalFormPage) {
+			return ((SmooksGraphicalFormPage) editor)
+					.getSmooksConfigurationFileGenerateContext();
+		}
+		return null;
+	}
+
 	private String getTargetDataTypeID() {
 		GraphicalViewer viewer = (GraphicalViewer) this.getViewer();
 		IEditorPart editor = ((DefaultEditDomain) viewer.getEditDomain())
@@ -251,6 +265,15 @@
 	}
 
 	public void propertyChange(PropertyChangeEvent evt) {
-
+		String pm = evt.getPropertyName();
+		if (AbstractStructuredDataConnectionModel.CONNECTION_PROPERTY_CHANGE
+				.equals(pm)) {
+			IGraphicalModelListener listener = GraphicalModelListenerManager
+					.getInstance().getPaintListener(getSourceDataTypeID(),
+							getTargetDataTypeID());
+			if (listener == null)
+				return;
+			listener.modelChanged(getModel(), getSmooksContext(),evt);
+		}
 	}
 }
\ No newline at end of file

Modified: 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	2009-01-18 07:45:38 UTC (rev 13105)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/gef/model/IGraphicalModelListener.java	2009-01-18 14:24:16 UTC (rev 13106)
@@ -3,6 +3,8 @@
  */
 package org.jboss.tools.smooks.ui.gef.model;
 
+import java.beans.PropertyChangeEvent;
+
 import org.jboss.tools.smooks.ui.modelparser.SmooksConfigurationFileGenerateContext;
 
 /**
@@ -18,5 +20,5 @@
 			SmooksConfigurationFileGenerateContext context);
 	
 	public void modelChanged(Object graphicalModel,
-			SmooksConfigurationFileGenerateContext context);
+			SmooksConfigurationFileGenerateContext context , PropertyChangeEvent event);
 }

Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/utils/ProjectClassLoader.java
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/utils/ProjectClassLoader.java	2009-01-18 07:45:38 UTC (rev 13105)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/utils/ProjectClassLoader.java	2009-01-18 14:24:16 UTC (rev 13106)
@@ -7,89 +7,102 @@
 import java.util.Iterator;
 import java.util.List;
 
+import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IWorkspaceRoot;
 import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.FileLocator;
 import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Platform;
 import org.eclipse.jdt.core.IJavaProject;
 import org.eclipse.jdt.core.IPackageFragmentRoot;
+import org.eclipse.jdt.core.JavaCore;
 import org.eclipse.jdt.core.JavaModelException;
+
 /**
  * This class code comes from HibernateSynchronizer
+ * 
  * @author Dart Peng
  * 
  * @CreateTime Jul 21, 2008
  */
 public class ProjectClassLoader extends URLClassLoader {
 
-	public ProjectClassLoader (IJavaProject project) throws JavaModelException  {
-		super(getURLSFromProject(project, null), Thread.currentThread().getContextClassLoader());
+	public ProjectClassLoader(IJavaProject project) throws JavaModelException {
+		super(getURLSFromProject(project, null, true), Thread.currentThread()
+				.getContextClassLoader());
 	}
 
-	public ProjectClassLoader (IJavaProject project, URL[] extraUrls) throws JavaModelException  {
-		super(getURLSFromProject(project, extraUrls), Thread.currentThread().getContextClassLoader());
+	public ProjectClassLoader(IJavaProject project, URL[] extraUrls)
+			throws JavaModelException {
+		super(getURLSFromProject(project, extraUrls, true), Thread
+				.currentThread().getContextClassLoader());
 	}
 
-	private static URL[] getURLSFromProject (IJavaProject project, URL[] extraUrls) throws JavaModelException {
-		List list = new ArrayList();
+	private static URL[] getURLSFromProject(IJavaProject project,
+			URL[] extraUrls, boolean cludeRequiredProject)
+			throws JavaModelException {
+		List<URL> list = new ArrayList<URL>();
 		if (null != extraUrls) {
-			for (int i=0; i<extraUrls.length; i++) {
+			for (int i = 0; i < extraUrls.length; i++) {
 				list.add(extraUrls[i]);
 			}
 		}
-		
+
 		IPackageFragmentRoot[] roots = project.getAllPackageFragmentRoots();
-		String installLoc = ResourcesPlugin.getWorkspace().getRoot().getLocation().toFile().getAbsolutePath();
-		installLoc = installLoc.replace('\\', '/');
-		if (installLoc.endsWith("/")) installLoc = installLoc.substring(0, installLoc.length()-1);
-
-		for (int i=0; i<roots.length; i++) {
+		if (cludeRequiredProject) {
+			String[] requiredProjectNames = project.getRequiredProjectNames();
+			for (int i = 0; i < requiredProjectNames.length; i++) {
+				String requiredProjectName = requiredProjectNames[i];
+				IProject requiredProject = ResourcesPlugin.getWorkspace()
+						.getRoot().getProject(requiredProjectName);
+				if (requiredProject != null && requiredProject.isOpen()) {
+					IJavaProject jp = JavaCore.create(requiredProject);
+					if (jp == null)
+						continue;
+					URL[] requeiredURL = getURLSFromProject(jp, extraUrls,
+							false);
+					if (requeiredURL == null)
+						continue;
+					for (int j = 0; j < requeiredURL.length; j++) {
+						list.add(requeiredURL[j]);
+					}
+				}
+			}
+		}
+		IPath installPath = ResourcesPlugin.getWorkspace().getRoot()
+				.getLocation();
+		for (int i = 0; i < roots.length; i++) {
 			try {
 				if (roots[i].isArchive()) {
-					File f = new File(Platform.resolve(roots[i].getPath().makeAbsolute().toFile().toURL()).getFile());
-					if (f.exists()) {
-						list.add(Platform.resolve(roots[i].getPath().makeAbsolute().toFile().toURL()));
+					File f = new File(FileLocator.resolve(
+							installPath.append(roots[i].getPath()).toFile()
+									.toURL()).getFile());
+					if (!f.exists()) {
+						f = new File(FileLocator.resolve(
+								roots[i].getPath().makeAbsolute().toFile()
+										.toURL()).getFile());
 					}
-					else {
-						String s = roots[i].getPath().toOSString().replace('\\', '/');
-						if (!s.startsWith("/")) s = "/" + s;
-						f = new File(installLoc + s);
-						if (f.exists()) {
-							list.add(f.toURL());
-						}
-						else {
-							f = new File("c:" + installLoc + s);
-							if (f.exists()) {
-								list.add(f.toURL());
-							}
-							else {
-								f = new File("d:" + installLoc + s);
-								if (f.exists()) {
-									list.add(f.toURL());
-								}
-							}
-						}
+					list.add(f.toURL());
+				} else {
+					IPath path = roots[i].getJavaProject().getOutputLocation();
+					if (path.segmentCount() > 1) {
+						IWorkspaceRoot root = ResourcesPlugin.getWorkspace()
+								.getRoot();
+						path = root.getFolder(path).getLocation();
+						list.add(path.toFile().toURL());
+					} else {
+						path = roots[i].getJavaProject().getProject()
+								.getLocation();
+						list.add(path.toFile().toURL());
 					}
 				}
-				else {
-                    IPath path = roots[i].getJavaProject().getOutputLocation();
-                    if (path.segmentCount() > 1) {
-                        IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
-                        path = root.getFolder(path).getLocation();
-                        list.add(path.toFile().toURL());
-                    }
-                    else {
-                        path = roots[i].getJavaProject().getProject().getLocation();
-                        list.add(path.toFile().toURL());
-                    }
-				}
+			} catch (Exception e) {
 			}
-			catch (Exception e) {}
+
 		}
-		
+
 		URL[] urls = new URL[list.size()];
 		int index = 0;
-		for (Iterator i=list.iterator(); i.hasNext(); index++) {
+		for (Iterator i = list.iterator(); i.hasNext(); index++) {
 			urls[index] = (URL) i.next();
 		}
 		return urls;




More information about the jbosstools-commits mailing list