[jboss-svn-commits] JBL Code SVN: r12634 - in labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor: core and 1 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sat Jun 16 18:12:15 EDT 2007


Author: KrisVerlaenen
Date: 2007-06-16 18:12:15 -0400 (Sat, 16 Jun 2007)
New Revision: 12634

Added:
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/editpart/DirectedGraphLayoutVisitor.java
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/editpart/GraphLayoutManager.java
Modified:
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/GenericActionBarContributor.java
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/GenericContextMenuProvider.java
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/GenericModelEditor.java
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/core/ProcessWrapper.java
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/editpart/ElementEditPart.java
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/editpart/ProcessEditPart.java
Log:
JBRULES-618: Ruleflow IDE integration
 - added snap to grid
 - added more advanced routers

Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/GenericActionBarContributor.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/GenericActionBarContributor.java	2007-06-16 21:45:33 UTC (rev 12633)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/GenericActionBarContributor.java	2007-06-16 22:12:15 UTC (rev 12634)
@@ -18,17 +18,18 @@
 
 import org.eclipse.draw2d.PositionConstants;
 import org.eclipse.gef.ui.actions.ActionBarContributor;
-import org.eclipse.gef.ui.actions.AlignmentAction;
 import org.eclipse.gef.ui.actions.AlignmentRetargetAction;
 import org.eclipse.gef.ui.actions.DeleteRetargetAction;
 import org.eclipse.gef.ui.actions.GEFActionConstants;
 import org.eclipse.gef.ui.actions.RedoRetargetAction;
 import org.eclipse.gef.ui.actions.UndoRetargetAction;
 import org.eclipse.gef.ui.actions.ZoomComboContributionItem;
-import org.eclipse.jface.action.Action;
+import org.eclipse.gef.ui.actions.ZoomInRetargetAction;
+import org.eclipse.gef.ui.actions.ZoomOutRetargetAction;
 import org.eclipse.jface.action.IToolBarManager;
 import org.eclipse.jface.action.Separator;
 import org.eclipse.ui.actions.ActionFactory;
+import org.eclipse.ui.actions.RetargetAction;
 
 /**
  * Common implementation of a ActionBarContributor.
@@ -42,12 +43,18 @@
         addRetargetAction( new RedoRetargetAction() );
         addRetargetAction( new DeleteRetargetAction() );
 
+    	addRetargetAction( new ZoomInRetargetAction() );
+    	addRetargetAction( new ZoomOutRetargetAction() );
+    	
         addRetargetAction( new AlignmentRetargetAction( PositionConstants.LEFT ) );
         addRetargetAction( new AlignmentRetargetAction( PositionConstants.CENTER ) );
         addRetargetAction( new AlignmentRetargetAction( PositionConstants.RIGHT ) );
         addRetargetAction( new AlignmentRetargetAction( PositionConstants.TOP ) );
         addRetargetAction( new AlignmentRetargetAction( PositionConstants.MIDDLE ) );
         addRetargetAction( new AlignmentRetargetAction( PositionConstants.BOTTOM ) );
+        
+    	addRetargetAction( new RetargetAction(
+			GEFActionConstants.TOGGLE_GRID_VISIBILITY, "Grid" ));
     }
 
     public void contributeToToolBar(IToolBarManager toolBarManager) {
@@ -66,10 +73,11 @@
         alignMenu.add( getActionRegistry().getAction( GEFActionConstants.ALIGN_MIDDLE ) );
         alignMenu.add( getActionRegistry().getAction( GEFActionConstants.ALIGN_BOTTOM ) );
         toolBarManager.add( alignMenu );
-
+        
+        toolBarManager.add( new Separator() );                              
+        toolBarManager.add( getAction(GEFActionConstants.TOGGLE_GRID_VISIBILITY) );
     }
-
+    
     protected void declareGlobalActionKeys() {
-        
     }
 }

Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/GenericContextMenuProvider.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/GenericContextMenuProvider.java	2007-06-16 21:45:33 UTC (rev 12633)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/GenericContextMenuProvider.java	2007-06-16 22:12:15 UTC (rev 12634)
@@ -19,7 +19,6 @@
 import org.eclipse.gef.GraphicalViewer;
 import org.eclipse.gef.ui.actions.ActionRegistry;
 import org.eclipse.gef.ui.actions.GEFActionConstants;
-import org.eclipse.gef.ui.actions.ToggleGridAction;
 import org.eclipse.jface.action.IAction;
 import org.eclipse.jface.action.IMenuManager;
 import org.eclipse.ui.actions.ActionFactory;

Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/GenericModelEditor.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/GenericModelEditor.java	2007-06-16 21:45:33 UTC (rev 12633)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/GenericModelEditor.java	2007-06-16 22:12:15 UTC (rev 12634)
@@ -44,6 +44,7 @@
 import org.eclipse.gef.ui.actions.AlignmentAction;
 import org.eclipse.gef.ui.actions.DirectEditAction;
 import org.eclipse.gef.ui.actions.GEFActionConstants;
+import org.eclipse.gef.ui.actions.ToggleGridAction;
 import org.eclipse.gef.ui.parts.GraphicalEditorWithPalette;
 import org.eclipse.gef.ui.parts.GraphicalViewerKeyHandler;
 import org.eclipse.jface.action.IAction;
@@ -150,13 +151,16 @@
 				new GraphicalViewerKeyHandler(getGraphicalViewer())
 						.setParent(getCommonKeyHandler()));
 
+		IAction showGrid = new ToggleGridAction(getGraphicalViewer());
+		getActionRegistry().registerAction(showGrid);
+
 		ContextMenuProvider provider = new GenericContextMenuProvider(
 				getGraphicalViewer(), getActionRegistry());
 		getGraphicalViewer().setContextMenu(provider);
 		getSite().registerContextMenu("org.drools.eclipse.flow.editor.contextmenu",
 				provider, getGraphicalViewer());
 	}
-
+	
 	protected abstract EditPartFactory createEditPartFactory();
 
 	protected void initializeGraphicalViewer() {

Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/core/ProcessWrapper.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/core/ProcessWrapper.java	2007-06-16 21:45:33 UTC (rev 12633)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/core/ProcessWrapper.java	2007-06-16 22:12:15 UTC (rev 12634)
@@ -26,6 +26,7 @@
 import java.util.Map;
 
 import org.drools.ruleflow.common.core.Process;
+import org.eclipse.ui.views.properties.ComboBoxPropertyDescriptor;
 import org.eclipse.ui.views.properties.IPropertyDescriptor;
 import org.eclipse.ui.views.properties.IPropertySource;
 import org.eclipse.ui.views.properties.TextPropertyDescriptor;
@@ -38,22 +39,31 @@
 public abstract class ProcessWrapper implements IPropertySource, Serializable {
 
 	public static final int CHANGE_ELEMENTS = 1;
-	
+	public static final int CHANGE_ROUTER_LAYOUT = 2;
+
+    public static final Integer ROUTER_LAYOUT_MANUAL = new Integer(0);
+    public static final Integer ROUTER_LAYOUT_MANHATTAN = new Integer(1);
+    public static final Integer ROUTER_LAYOUT_SHORTEST_PATH = new Integer(2);
+
     protected static IPropertyDescriptor[] descriptors;
 
     public static final String NAME = "name";
     public static final String VERSION = "version";
     public static final String ID = "id";
+    public static final String ROUTER_LAYOUT = "routerLayout";
     static {
         descriptors = new IPropertyDescriptor[] {
             new TextPropertyDescriptor(NAME, "Name"),
             new TextPropertyDescriptor(VERSION, "Version"),
             new TextPropertyDescriptor(ID, "Id"),
+            new ComboBoxPropertyDescriptor(ROUTER_LAYOUT, "Router Layout", 
+                new String[] { "Manual", "Manhatten", "Shortest Path" }),
         };
     }
     
     private Process process;
     private Map elements = new HashMap();
+    private Integer routerLayout;
     private transient List listeners = new ArrayList();
     
     public ProcessWrapper() {
@@ -90,6 +100,18 @@
     	process.setId(id);
     }
     
+    public Integer getRouterLayout() {
+    	if (routerLayout == null) {
+    		routerLayout = ROUTER_LAYOUT_SHORTEST_PATH;
+    	}
+    	return routerLayout;
+    }
+    
+    public void setRouterLayout(Integer routerLayout) {
+    	this.routerLayout = routerLayout;
+    	notifyListeners(CHANGE_ROUTER_LAYOUT);
+    }
+    
     public List getElements() {
         return Collections.unmodifiableList(new ArrayList(elements.values()));
     }
@@ -154,6 +176,9 @@
         if (ID.equals(id)) {
             return getId() + "";
         }
+        if (ROUTER_LAYOUT.equals(id)) {
+            return routerLayout;
+        }
         return null;
     }
 
@@ -171,6 +196,9 @@
         if (ID.equals(id)) {
             setId("");
         }
+        if (ID.equals(id)) {
+            setRouterLayout(null);
+        }
     }
 
     public void setPropertyValue(Object id, Object value) {
@@ -180,6 +208,8 @@
             setVersion((String) value);
         } else if (ID.equals(id)) {
             setId((String) value);
+        } else if (ROUTER_LAYOUT.equals(id)) {
+            setRouterLayout((Integer) value);
         }
     }
 }

Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/editpart/DirectedGraphLayoutVisitor.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/editpart/DirectedGraphLayoutVisitor.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/editpart/DirectedGraphLayoutVisitor.java	2007-06-16 22:12:15 UTC (rev 12634)
@@ -0,0 +1,128 @@
+package org.drools.eclipse.flow.common.editor.editpart;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.drools.eclipse.flow.common.editor.editpart.figure.ElementFigure;
+import org.eclipse.draw2d.AbsoluteBendpoint;
+import org.eclipse.draw2d.PolygonDecoration;
+import org.eclipse.draw2d.PolylineConnection;
+import org.eclipse.draw2d.geometry.Insets;
+import org.eclipse.draw2d.geometry.Rectangle;
+import org.eclipse.draw2d.graph.DirectedGraph;
+import org.eclipse.draw2d.graph.DirectedGraphLayout;
+import org.eclipse.draw2d.graph.Edge;
+import org.eclipse.draw2d.graph.Node;
+import org.eclipse.draw2d.graph.NodeList;
+
+public class DirectedGraphLayoutVisitor {
+
+	private Map partToNodesMap;
+	private DirectedGraph graph;
+
+	public void layoutDiagram(ProcessEditPart diagram) {
+		partToNodesMap = new HashMap();
+		graph = new DirectedGraph();
+		addNodes(diagram);
+		if (graph.nodes.size() > 0) {	
+			addEdges(diagram);
+			new DirectedGraphLayout().visit(graph);
+			applyResults(diagram);
+		}
+	}
+
+	protected void addNodes(ProcessEditPart diagram) {
+		for (int i = 0; i < diagram.getChildren().size(); i++) {
+			ElementEditPart elementEditPart = (ElementEditPart) diagram.getChildren().get(i);
+			addNodes(elementEditPart);
+		}
+	}
+
+	protected void addNodes(ElementEditPart elementEditPart) {
+		Node n = new Node(elementEditPart);
+		n.width = elementEditPart.getFigure().getPreferredSize(400, 300).width;
+		n.height = elementEditPart.getFigure().getPreferredSize(400, 300).height;
+		n.setPadding(new Insets(10, 8, 10, 12));
+		partToNodesMap.put(elementEditPart, n);
+		graph.nodes.add(n);
+	}
+
+	protected void addEdges(ProcessEditPart diagram) {
+		for (int i = 0; i < diagram.getChildren().size(); i++) {
+			ElementEditPart elementEditPart = (ElementEditPart) diagram.getChildren().get(i);
+			addEdges(elementEditPart);
+		}
+	}
+
+	protected void addEdges(ElementEditPart elementEditPart) {
+		List outgoing = elementEditPart.getSourceConnections();
+		for (int i = 0; i < outgoing.size(); i++) {
+			ElementConnectionEditPart connectionPart = (ElementConnectionEditPart) elementEditPart.getSourceConnections().get(i);
+			addEdges(connectionPart);
+		}
+	}
+
+	protected void addEdges(ElementConnectionEditPart connectionPart) {
+		Node source = (Node) partToNodesMap.get(connectionPart.getSource());
+		Node target = (Node) partToNodesMap.get(connectionPart.getTarget());
+		Edge e = new Edge(connectionPart, source, target);
+		e.weight = 2;
+		graph.edges.add(e);
+		partToNodesMap.put(connectionPart, e);
+	}
+
+	protected void applyResults(ProcessEditPart diagram) {
+		applyChildrenResults(diagram);
+	}
+
+	protected void applyChildrenResults(ProcessEditPart diagram) {
+		for (int i = 0; i < diagram.getChildren().size(); i++) {
+			ElementEditPart elementEditPart = (ElementEditPart) diagram.getChildren().get(i);
+			applyResults(elementEditPart);
+		}
+	}
+
+	protected void applyOwnResults(ProcessEditPart diagram) {
+	}
+
+	public void applyResults(ElementEditPart elementEditPart) {
+		Node n = (Node) partToNodesMap.get(elementEditPart);
+		ElementFigure elementFigure = (ElementFigure) elementEditPart.getFigure();
+		Rectangle bounds = new Rectangle(n.x, n.y, elementFigure.getPreferredSize().width,
+				elementFigure.getPreferredSize().height);
+		elementFigure.setBounds(bounds);
+		for (int i = 0; i < elementEditPart.getSourceConnections().size(); i++) {
+			ElementConnectionEditPart connectionPart = (ElementConnectionEditPart) elementEditPart.getSourceConnections().get(i);
+			applyResults(connectionPart);
+		}
+	}
+
+	protected void applyResults(ElementConnectionEditPart connectionPart)	{
+		Edge e = (Edge) partToNodesMap.get(connectionPart);
+		NodeList nodes = e.vNodes;
+		PolylineConnection conn = (PolylineConnection) connectionPart.getConnectionFigure();
+		conn.setTargetDecoration(new PolygonDecoration());
+		if (nodes != null) {
+			List bends = new ArrayList();
+			for (int i = 0; i < nodes.size(); i++) {
+				Node vn = nodes.getNode(i);
+				int x = vn.x;
+				int y = vn.y;
+				if (e.isFeedback()) {
+					bends.add(new AbsoluteBendpoint(x, y + vn.height));
+					bends.add(new AbsoluteBendpoint(x, y));
+				} else {
+					bends.add(new AbsoluteBendpoint(x, y));
+					bends.add(new AbsoluteBendpoint(x, y + vn.height));
+				}
+			}
+			conn.setRoutingConstraint(bends);
+		} else {
+			conn.setRoutingConstraint(Collections.EMPTY_LIST);
+		}
+	}
+
+}

Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/editpart/ElementEditPart.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/editpart/ElementEditPart.java	2007-06-16 21:45:33 UTC (rev 12633)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/editpart/ElementEditPart.java	2007-06-16 22:12:15 UTC (rev 12634)
@@ -52,14 +52,16 @@
         installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new ElementDirectEditPolicy());
     }
     
+    protected ElementWrapper getElementWrapper() {
+    	return (ElementWrapper) getModel();
+    }
+
     protected List getModelSourceConnections() {
-        ElementWrapper task = (ElementWrapper) getModel();
-        return task.getOutgoingConnections();
+        return getElementWrapper().getOutgoingConnections();
     }
     
     protected List getModelTargetConnections() {
-        ElementWrapper task = (ElementWrapper) getModel();
-        return task.getIncomingConnections();
+        return getElementWrapper().getIncomingConnections();
     }
     
     public ConnectionAnchor getSourceConnectionAnchor(ConnectionEditPart connection) {
@@ -79,7 +81,7 @@
     }
 
     protected void refreshVisuals() {
-        ElementWrapper element = (ElementWrapper) getModel();
+        ElementWrapper element = getElementWrapper();
         ElementFigure figure = (ElementFigure) getFigure();
         figure.setText(element.getName());
         if (element.getConstraint().width == -1) {

Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/editpart/GraphLayoutManager.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/editpart/GraphLayoutManager.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/editpart/GraphLayoutManager.java	2007-06-16 22:12:15 UTC (rev 12634)
@@ -0,0 +1,26 @@
+package org.drools.eclipse.flow.common.editor.editpart;
+
+import org.eclipse.draw2d.AbstractLayout;
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.draw2d.geometry.Dimension;
+
+public class GraphLayoutManager extends AbstractLayout {
+
+	private ProcessEditPart diagram;
+
+	public GraphLayoutManager(ProcessEditPart diagram) {
+		this.diagram = diagram;
+	}
+	
+	protected Dimension calculatePreferredSize(IFigure container, int wHint, int hHint) {		
+		container.validate();
+		return container.getSize();
+	}
+
+	
+	public void layout(IFigure container) {
+		new DirectedGraphLayoutVisitor().layoutDiagram(diagram);
+		// diagram.setTableModelBounds();
+	}
+	
+}
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/editpart/ProcessEditPart.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/editpart/ProcessEditPart.java	2007-06-16 21:45:33 UTC (rev 12633)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/editpart/ProcessEditPart.java	2007-06-16 22:12:15 UTC (rev 12634)
@@ -15,18 +15,33 @@
  * limitations under the License.
  */
 
+import java.util.Iterator;
 import java.util.List;
 
+import org.drools.eclipse.flow.common.editor.core.ElementWrapper;
 import org.drools.eclipse.flow.common.editor.core.ModelEvent;
 import org.drools.eclipse.flow.common.editor.core.ModelListener;
 import org.drools.eclipse.flow.common.editor.core.ProcessWrapper;
+import org.drools.eclipse.flow.common.editor.editpart.figure.ElementFigure;
 import org.drools.eclipse.flow.common.editor.policy.ProcessLayoutEditPolicy;
+import org.eclipse.draw2d.Animation;
+import org.eclipse.draw2d.AutomaticRouter;
+import org.eclipse.draw2d.BendpointConnectionRouter;
+import org.eclipse.draw2d.ConnectionLayer;
+import org.eclipse.draw2d.FanRouter;
 import org.eclipse.draw2d.Figure;
 import org.eclipse.draw2d.IFigure;
+import org.eclipse.draw2d.ManhattanConnectionRouter;
+import org.eclipse.draw2d.ShortestPathConnectionRouter;
 import org.eclipse.draw2d.XYLayout;
+import org.eclipse.draw2d.geometry.Rectangle;
 import org.eclipse.gef.EditPolicy;
+import org.eclipse.gef.LayerConstants;
+import org.eclipse.gef.SnapToGrid;
+import org.eclipse.gef.SnapToHelper;
 import org.eclipse.gef.editparts.AbstractGraphicalEditPart;
 import org.eclipse.gef.editpolicies.RootComponentEditPolicy;
+import org.eclipse.swt.SWT;
 
 /**
  * Default implementation of a process EditPart.
@@ -35,10 +50,14 @@
  */
 public class ProcessEditPart extends AbstractGraphicalEditPart implements ModelListener {
     
+//	private GraphLayoutManager graphLayoutManager;
+	
     protected IFigure createFigure() {
         Figure f = new Figure();
-        f.setOpaque(true);
         f.setLayoutManager(new XYLayout());
+//        graphLayoutManager = new GraphLayoutManager(this);
+//        f.setLayoutManager(graphLayoutManager);
+//        graphLayoutManager.layout(f);
         return f;
     }
 
@@ -51,8 +70,12 @@
     }
 
     protected List getModelChildren() {
-        return ((ProcessWrapper) getModel()).getElements();
+        return getProcessWrapper().getElements();
     }
+    
+    protected ProcessWrapper getProcessWrapper() {
+    	return (ProcessWrapper) getModel();
+    }
 
     public void activate() {
         super.activate();
@@ -67,6 +90,52 @@
     public void modelChanged(ModelEvent event) {
         if (event.getChange() == ProcessWrapper.CHANGE_ELEMENTS) {
             refreshChildren();
+        } else if (event.getChange() == ProcessWrapper.CHANGE_ROUTER_LAYOUT) {
+    		refreshVisuals();
+    	}
+    }
+    
+    public Object getAdapter(Class adapter) {
+    	if (adapter == SnapToHelper.class) {
+    		Boolean val = (Boolean) getViewer().getProperty(SnapToGrid.PROPERTY_GRID_ENABLED);
+    		if (val != null && val.booleanValue()) {
+    			return new SnapToGrid(this);
+    		}
+    	}
+    	return super.getAdapter(adapter);
+    }
+    
+    protected void refreshVisuals() {
+    	Animation.markBegin();
+    	ConnectionLayer layer = (ConnectionLayer) getLayer(LayerConstants.CONNECTION_LAYER);
+        if ((getViewer().getControl().getStyle() & SWT.MIRRORED ) == 0) {
+            layer.setAntialias(SWT.ON);
         }
+
+    	if (getProcessWrapper().getRouterLayout().equals(ProcessWrapper.ROUTER_LAYOUT_MANUAL)) {
+    		AutomaticRouter router = new FanRouter();
+    		router.setNextRouter(new BendpointConnectionRouter());
+    		layer.setConnectionRouter(router);
+    	} else if (getProcessWrapper().getRouterLayout().equals(ProcessWrapper.ROUTER_LAYOUT_MANHATTAN)) {
+    		layer.setConnectionRouter(new ManhattanConnectionRouter());
+    	} else {
+    		layer.setConnectionRouter(new ShortestPathConnectionRouter(getFigure()));
+    	}
+    	Animation.run(400);
     }
+    
+	public boolean setTableModelBounds() {
+		List tableParts = getChildren();
+		for (Iterator iter = tableParts.iterator(); iter.hasNext(); ) {
+			ElementEditPart elementEditPart = (ElementEditPart) iter.next();
+			ElementFigure elementFigure = (ElementFigure) elementEditPart.getFigure();
+			if (elementFigure == null) {
+				continue;
+			}
+			Rectangle constraint = elementFigure.getBounds().getCopy();
+			ElementWrapper elementWrapper = elementEditPart.getElementWrapper();
+			elementWrapper.setConstraint(constraint);
+		}
+		return true;
+	}
 }




More information about the jboss-svn-commits mailing list