Author: koen.aers(a)jboss.com
Date: 2009-05-26 18:20:57 -0400 (Tue, 26 May 2009)
New Revision: 15524
Added:
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/editpart/ListenerListTreeEditPart.java
Modified:
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/plugin.xml
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/editor/JpdlDeserializer.java
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/editor/JpdlSerializer.java
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/editpart/EventListenerListTreeEditPart.java
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/editpart/JpdlTreeEditPartFactory.java
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/editpart/ProcessTreeRootEditPart.java
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/editpart/SequenceFlowTreeRootEditPart.java
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/editpart/TaskTreeRootEditPart.java
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/handler/AddEventListenerHandler.java
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/handler/AddSwimlaneHandler.java
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/handler/AddTimerHandler.java
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/handler/DeleteElementHandler.java
Log:
- Event listeners on nodes and transitions (GPD-332)
- Deserialization of decision handler (GPD-342)
- Adding second swimlane and timer (GPD-343)
- On elements are no longer removed from nodes (GPD-340)
Modified: trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/plugin.xml
===================================================================
--- trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/plugin.xml 2009-05-26 20:53:13 UTC (rev
15523)
+++ trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/plugin.xml 2009-05-26 22:20:57 UTC (rev
15524)
@@ -489,6 +489,12 @@
value="org.jboss.tools.flow.jpdl4.editpart.ProcessTreeRootEditPart">
</instanceof>
<instanceof
+
value="org.jboss.tools.flow.jpdl4.editpart.TaskTreeRootEditPart">
+ </instanceof>
+ <instanceof
+
value="org.jboss.tools.flow.jpdl4.editpart.SequenceFlowTreeRootEditPart">
+ </instanceof>
+ <instanceof
value="org.jboss.tools.flow.jpdl4.editpart.EventListenerListTreeEditPart">
</instanceof>
</or>
Modified:
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/editor/JpdlDeserializer.java
===================================================================
---
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/editor/JpdlDeserializer.java 2009-05-26
20:53:13 UTC (rev 15523)
+++
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/editor/JpdlDeserializer.java 2009-05-26
22:20:57 UTC (rev 15524)
@@ -221,7 +221,7 @@
}
}
- class ConnectionAttributeHandler extends DefaultAttributeDeserializer {
+ class SequenceFlowAttributeHandler extends DefaultAttributeDeserializer {
public void deserializeAttributes(Wrapper wrapper, Element element) {
super.deserializeAttributes(wrapper, element);
if (!(wrapper instanceof ConnectionWrapper)) return;
@@ -232,6 +232,24 @@
}
}
+ class SequenceFlowChildNodeHandler implements ChildNodeDeserializer {
+ public Wrapper deserializeChildNode(Wrapper parent, Node node) {
+ Wrapper result = null;
+ if (!(parent instanceof ConnectionWrapper)) return result;
+ ConnectionWrapper connectionWrapper = (ConnectionWrapper)parent;
+ if (node instanceof Element) {
+ result = createWrapper((Element)node);
+ if (result == null) return null;
+ if (result instanceof Wrapper) {
+ if (result.getElement() instanceof EventListener) {
+ connectionWrapper.addChild("listener", result);
+ }
+ }
+ }
+ return result;
+ }
+ }
+
class ProcessChildNodeHandler implements ChildNodeDeserializer {
public Wrapper deserializeChildNode(Wrapper parent, Node node) {
Wrapper result = null;
@@ -281,8 +299,12 @@
}
if (node instanceof Element) {
result = createWrapper((Element)node);
- if (result != null && result instanceof ConnectionWrapper) {
- flows.add((ConnectionWrapper)result);
+ if (result != null) {
+ if (result instanceof ConnectionWrapper) {
+ flows.add((ConnectionWrapper)result);
+ } else if (result.getElement() instanceof EventListenerContainer) {
+ parent.addChild("eventListener", result);
+ }
}
}
return result;
@@ -291,11 +313,13 @@
class ExclusiveGateWayChildNodeHandler extends NodeChildNodeHandler {
public Wrapper deserializeChildNode(Wrapper parent, Node node) {
- Wrapper result = super.deserializeChildNode(parent, node);
+ Wrapper result = null;
ExclusiveGateway exclusiveGateway = (ExclusiveGateway)parent.getElement();
if (node instanceof Element && "handler".equals(node.getNodeName()))
{
String className = ((Element)node).getAttribute("class");
exclusiveGateway.setHandler("".equals(className) ? null : className);
+ } else {
+ result = super.deserializeChildNode(parent, node);
}
return result;
}
@@ -383,7 +407,7 @@
} else if (wrapper instanceof NodeWrapper) {
return getNodeAttributeHandler(wrapper);
} else if (wrapper instanceof ConnectionWrapper) {
- return new ConnectionAttributeHandler();
+ return new SequenceFlowAttributeHandler();
} else if (wrapper instanceof DefaultWrapper) {
return getDefaultAttributeHandler(wrapper);
}
@@ -424,6 +448,8 @@
return getNodeChildNodeDeserializer(wrapper);
} else if (wrapper instanceof DefaultWrapper) {
return getDefaultChildNodeHandler(wrapper);
+ } else if (wrapper instanceof ConnectionWrapper) {
+ return new SequenceFlowChildNodeHandler();
}
return null;
}
Modified:
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/editor/JpdlSerializer.java
===================================================================
---
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/editor/JpdlSerializer.java 2009-05-26
20:53:13 UTC (rev 15523)
+++
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/editor/JpdlSerializer.java 2009-05-26
22:20:57 UTC (rev 15524)
@@ -265,6 +265,15 @@
buffer.append(labelBuffer);
buffer.append("\"");
}
+ public void appendBody(StringBuffer buffer, Wrapper wrapper, int level) {
+ List<Element> eventListeners = wrapper.getChildren("listener");
+ if (eventListeners != null) {
+ for (Element eventListener : eventListeners) {
+ if (!(eventListener instanceof Wrapper)) continue;
+ appendToBuffer(buffer, (Wrapper)eventListener, level+1);
+ }
+ }
+ }
}
class ProcessNodeWrapperSerializer extends AbstractWrapperSerializer {
@@ -305,6 +314,13 @@
}
public void appendBody(StringBuffer buffer, Wrapper wrapper, int level) {
NodeWrapper nodeWrapper = (NodeWrapper)wrapper;
+ List<Element> eventListenerContainers =
nodeWrapper.getChildren("eventListener");
+ if (eventListenerContainers != null) {
+ for (Element eventListenerContainer : eventListenerContainers) {
+ if (!(eventListenerContainer instanceof Wrapper)) continue;
+ appendToBuffer(buffer, (Wrapper)eventListenerContainer, level+1);
+ }
+ }
List<ConnectionWrapper> children = nodeWrapper.getOutgoingConnections();
for (ConnectionWrapper connectionWrapper : children) {
appendToBuffer(buffer, connectionWrapper, level+1);
Modified:
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/editpart/EventListenerListTreeEditPart.java
===================================================================
---
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/editpart/EventListenerListTreeEditPart.java 2009-05-26
20:53:13 UTC (rev 15523)
+++
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/editpart/EventListenerListTreeEditPart.java 2009-05-26
22:20:57 UTC (rev 15524)
@@ -59,7 +59,15 @@
((JpdlTreeEditPart)parent).modelChanged(modelEvent);
}
refreshChildren();
- } else if (event.getChangeType() == Wrapper.CHANGE_PROPERTY) {
+ } else if (event.getChangeType() == Wrapper.ADD_ELEMENT) {
+ refreshChildren();
+ Object object = event.getNewValue();
+ EditPart editPart = (EditPart)getViewer().getEditPartRegistry().get(object);
+ if (editPart != null) {
+ getViewer().select(editPart);
+ }
+ }
+ else if (event.getChangeType() == Wrapper.CHANGE_PROPERTY) {
refreshVisuals();
}
}
Modified:
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/editpart/JpdlTreeEditPartFactory.java
===================================================================
---
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/editpart/JpdlTreeEditPartFactory.java 2009-05-26
20:53:13 UTC (rev 15523)
+++
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/editpart/JpdlTreeEditPartFactory.java 2009-05-26
22:20:57 UTC (rev 15524)
@@ -28,6 +28,7 @@
}
if (model instanceof SwimlaneListTreeEditPart) return (EditPart)model;
if (model instanceof TimerListTreeEditPart) return (EditPart)model;
+ if (model instanceof ListenerListTreeEditPart) return (EditPart)model;
return new NoDetailsTreeRootEditPart();
}
Added:
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/editpart/ListenerListTreeEditPart.java
===================================================================
---
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/editpart/ListenerListTreeEditPart.java
(rev 0)
+++
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/editpart/ListenerListTreeEditPart.java 2009-05-26
22:20:57 UTC (rev 15524)
@@ -0,0 +1,33 @@
+package org.jboss.tools.flow.jpdl4.editpart;
+
+import java.util.List;
+
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.swt.graphics.Image;
+import org.jboss.tools.flow.common.model.Element;
+import org.jboss.tools.flow.jpdl4.util.SharedImages;
+
+public class ListenerListTreeEditPart extends JpdlTreeEditPart {
+
+ public ListenerListTreeEditPart(List<Element> timers) {
+ super(timers);
+ }
+
+ protected Image getImage() {
+ String iconPath = "icons/16/events_multiple.gif";
+ ImageDescriptor descriptor = ImageDescriptor.createFromURL(
+ Platform.getBundle("org.jboss.tools.flow.jpdl4").getEntry(iconPath));
+ return SharedImages.INSTANCE.getImage(descriptor);
+ }
+
+ protected String getText() {
+ return "Event Listeners";
+ }
+
+ @SuppressWarnings("unchecked")
+ protected List<Object> getModelChildren() {
+ return (List<Object>)getModel();
+ }
+
+}
Property changes on:
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/editpart/ListenerListTreeEditPart.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified:
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/editpart/ProcessTreeRootEditPart.java
===================================================================
---
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/editpart/ProcessTreeRootEditPart.java 2009-05-26
20:53:13 UTC (rev 15523)
+++
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/editpart/ProcessTreeRootEditPart.java 2009-05-26
22:20:57 UTC (rev 15524)
@@ -5,14 +5,13 @@
import org.eclipse.gef.EditPart;
import org.jboss.tools.flow.common.model.Element;
-import org.jboss.tools.flow.common.wrapper.FlowWrapper;
import org.jboss.tools.flow.common.wrapper.ModelEvent;
import org.jboss.tools.flow.common.wrapper.Wrapper;
public class ProcessTreeRootEditPart extends JpdlTreeEditPart {
- public ProcessTreeRootEditPart(FlowWrapper flowWrapper) {
- super(flowWrapper);
+ public ProcessTreeRootEditPart(Wrapper wrapper) {
+ super(wrapper);
}
protected void createEditPolicies() {
@@ -20,23 +19,23 @@
protected List<Object> getModelChildren() {
List<Object> result = new ArrayList<Object>();
- FlowWrapper flowWrapper = (FlowWrapper)getModel();
- if (flowWrapper == null) return null;
- addSwimlanes(result, flowWrapper);
- addEventListeners(result, flowWrapper);
- addTimers(result, flowWrapper);
+ Wrapper wrapper = (Wrapper)getModel();
+ if (wrapper == null) return null;
+ addSwimlanes(result, wrapper);
+ addEventListeners(result, wrapper);
+ addTimers(result, wrapper);
return result;
}
- private void addSwimlanes(List<Object> list, FlowWrapper flowWrapper) {
- List<Element> swimlanes = flowWrapper.getChildren("swimlane");
+ private void addSwimlanes(List<Object> list, Wrapper wrapper) {
+ List<Element> swimlanes = wrapper.getChildren("swimlane");
if (swimlanes != null && !swimlanes.isEmpty()) {
list.add(new SwimlaneListTreeEditPart(swimlanes));
}
}
- private void addEventListeners(List<Object> list, FlowWrapper flowWrapper) {
- List<Element> eventListeners =
flowWrapper.getChildren("eventListener");
+ private void addEventListeners(List<Object> list, Wrapper wrapper) {
+ List<Element> eventListeners = wrapper.getChildren("eventListener");
if (eventListeners == null) return;
for (Element element : eventListeners) {
if (element instanceof Wrapper) {
@@ -45,8 +44,8 @@
}
}
- private void addTimers(List<Object> list, FlowWrapper flowWrapper) {
- List<Element> timers = flowWrapper.getChildren("timer");
+ private void addTimers(List<Object> list, Wrapper wrapper) {
+ List<Element> timers = wrapper.getChildren("timer");
if (timers != null && !timers.isEmpty()) {
list.add(new TimerListTreeEditPart(timers));
}
@@ -67,11 +66,11 @@
public void activate() {
super.activate();
- ((FlowWrapper)getModel()).addListener(this);
+ ((Wrapper)getModel()).addListener(this);
}
public void deactivate() {
- ((FlowWrapper)getModel()).removeListener(this);
+ ((Wrapper)getModel()).removeListener(this);
super.deactivate();
}
Modified:
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/editpart/SequenceFlowTreeRootEditPart.java
===================================================================
---
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/editpart/SequenceFlowTreeRootEditPart.java 2009-05-26
20:53:13 UTC (rev 15523)
+++
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/editpart/SequenceFlowTreeRootEditPart.java 2009-05-26
22:20:57 UTC (rev 15524)
@@ -3,18 +3,53 @@
import java.util.ArrayList;
import java.util.List;
-import org.jboss.tools.flow.common.wrapper.ConnectionWrapper;
+import org.eclipse.gef.EditPart;
+import org.jboss.tools.flow.common.model.Element;
+import org.jboss.tools.flow.common.wrapper.ModelEvent;
+import org.jboss.tools.flow.common.wrapper.Wrapper;
public class SequenceFlowTreeRootEditPart extends JpdlTreeEditPart {
- public SequenceFlowTreeRootEditPart(ConnectionWrapper connectionWrapper) {
- super(connectionWrapper);
+ public SequenceFlowTreeRootEditPart(Wrapper wrapper) {
+ super(wrapper);
}
protected List<Object> getModelChildren() {
List<Object> result = new ArrayList<Object>();
- result.add(new EventListenerListTreeEditPart(null));
+ Wrapper wrapper = (Wrapper)getModel();
+ if (wrapper == null) return null;
+ addEventListeners(result, wrapper);
return result;
}
+ private void addEventListeners(List<Object> list, Wrapper wrapper) {
+ List<Element> eventListeners = wrapper.getChildren("listener");
+ if (eventListeners != null && !eventListeners.isEmpty()) {
+ list.add(new ListenerListTreeEditPart(eventListeners));
+ }
+ }
+
+ public void modelChanged(ModelEvent event) {
+ if (event.getChangeType() == Wrapper.ADD_ELEMENT) {
+ refreshChildren();
+ Object object = event.getNewValue();
+ EditPart editPart = (EditPart)getViewer().getEditPartRegistry().get(object);
+ if (editPart != null) {
+ getViewer().select(editPart);
+ }
+ } else if (event.getChangeType() == Wrapper.REMOVE_ELEMENT) {
+ refreshChildren();
+ }
+ }
+
+ public void activate() {
+ super.activate();
+ ((Wrapper)getModel()).addListener(this);
+ }
+
+ public void deactivate() {
+ ((Wrapper)getModel()).removeListener(this);
+ super.deactivate();
+ }
+
}
Modified:
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/editpart/TaskTreeRootEditPart.java
===================================================================
---
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/editpart/TaskTreeRootEditPart.java 2009-05-26
20:53:13 UTC (rev 15523)
+++
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/editpart/TaskTreeRootEditPart.java 2009-05-26
22:20:57 UTC (rev 15524)
@@ -3,18 +3,56 @@
import java.util.ArrayList;
import java.util.List;
-import org.jboss.tools.flow.common.wrapper.NodeWrapper;
+import org.eclipse.gef.EditPart;
+import org.jboss.tools.flow.common.model.Element;
+import org.jboss.tools.flow.common.wrapper.ModelEvent;
+import org.jboss.tools.flow.common.wrapper.Wrapper;
public class TaskTreeRootEditPart extends JpdlTreeEditPart {
- public TaskTreeRootEditPart(NodeWrapper nodeWrapper) {
- super(nodeWrapper);
+ public TaskTreeRootEditPart(Wrapper wrapper) {
+ super(wrapper);
}
protected List<Object> getModelChildren() {
List<Object> result = new ArrayList<Object>();
- result.add(new EventListenerListTreeEditPart(null));
+ Wrapper wrapper = (Wrapper)getModel();
+ if (wrapper == null) return null;
+ addEventListeners(result, wrapper);
return result;
}
+ private void addEventListeners(List<Object> list, Wrapper wrapper) {
+ List<Element> eventListeners = wrapper.getChildren("eventListener");
+ if (eventListeners == null) return;
+ for (Element element : eventListeners) {
+ if (element instanceof Wrapper) {
+ list.add((Wrapper)element);
+ }
+ }
+ }
+
+ public void modelChanged(ModelEvent event) {
+ if (event.getChangeType() == Wrapper.ADD_ELEMENT) {
+ refreshChildren();
+ Object object = event.getNewValue();
+ EditPart editPart = (EditPart)getViewer().getEditPartRegistry().get(object);
+ if (editPart != null) {
+ getViewer().select(editPart);
+ }
+ } else if (event.getChangeType() == Wrapper.REMOVE_ELEMENT) {
+ refreshChildren();
+ }
+ }
+
+ public void activate() {
+ super.activate();
+ ((Wrapper)getModel()).addListener(this);
+ }
+
+ public void deactivate() {
+ ((Wrapper)getModel()).removeListener(this);
+ super.deactivate();
+ }
+
}
Modified:
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/handler/AddEventListenerHandler.java
===================================================================
---
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/handler/AddEventListenerHandler.java 2009-05-26
20:53:13 UTC (rev 15523)
+++
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/handler/AddEventListenerHandler.java 2009-05-26
22:20:57 UTC (rev 15524)
@@ -15,7 +15,9 @@
import org.jboss.tools.flow.common.command.AddChildCommand;
import org.jboss.tools.flow.common.registry.ElementRegistry;
import org.jboss.tools.flow.common.wrapper.Wrapper;
+import org.jboss.tools.flow.jpdl4.editpart.SequenceFlowTreeRootEditPart;
import org.jboss.tools.flow.jpdl4.model.EventListenerContainer;
+import org.jboss.tools.flow.jpdl4.model.SequenceFlow;
public class AddEventListenerHandler extends AbstractHandler implements IHandler {
@@ -38,14 +40,20 @@
Wrapper parent = (Wrapper)model;
Wrapper child;
AddChildCommand addChildCommand = new AddChildCommand();
- if (editPart.getParent() != null && editPart.getParent() instanceof
RootEditPart) {
+ if (editPart.getParent() != null
+ && editPart.getParent() instanceof RootEditPart
+ && !(editPart instanceof SequenceFlowTreeRootEditPart)) {
child =
ElementRegistry.createWrapper("org.jboss.tools.flow.jpdl4.eventListenerContainer");
Wrapper wrapper =
ElementRegistry.createWrapper("org.jboss.tools.flow.jpdl4.eventListener");
addChildCommand.setType("eventListener");
child.addChild(EventListenerContainer.LISTENERS, wrapper);
} else {
child =
ElementRegistry.createWrapper("org.jboss.tools.flow.jpdl4.eventListener");
- addChildCommand.setType(EventListenerContainer.LISTENERS);
+ if (parent.getElement() instanceof SequenceFlow) {
+ addChildCommand.setType("listener");
+ } else {
+ addChildCommand.setType(EventListenerContainer.LISTENERS);
+ }
}
addChildCommand.setChild(child);
addChildCommand.setParent(parent);
Modified:
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/handler/AddSwimlaneHandler.java
===================================================================
---
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/handler/AddSwimlaneHandler.java 2009-05-26
20:53:13 UTC (rev 15523)
+++
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/handler/AddSwimlaneHandler.java 2009-05-26
22:20:57 UTC (rev 15524)
@@ -16,8 +16,8 @@
import org.jboss.tools.flow.common.wrapper.Wrapper;
public class AddSwimlaneHandler extends AbstractHandler implements IHandler {
-
- public Object execute(ExecutionEvent event) throws ExecutionException {
+
+ private Wrapper getParent(ExecutionEvent event) throws ExecutionException {
IWorkbenchPage page =
HandlerUtil.getActiveWorkbenchWindowChecked(event).getActivePage();
if (page == null) return null;
ISelection selection = page.getSelection();
@@ -26,9 +26,18 @@
Object first = structuredSelection.getFirstElement();
if (!(first instanceof EditPart)) return null;
EditPart editPart = (EditPart)first;
- Object model = editPart.getModel();
- if (model == null || !(model instanceof Wrapper)) return null;
- Wrapper parent = (Wrapper)model;
+ while (editPart != null) {
+ Object model = editPart.getModel();
+ if (model != null && model instanceof Wrapper) {
+ return (Wrapper)model;
+ }
+ editPart = editPart.getParent();
+ }
+ return null;
+ }
+
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ Wrapper parent = getParent(event);
IEditorPart editorPart = HandlerUtil.getActiveEditor(event);
if (editorPart == null) return null;
Object object = editorPart.getAdapter(CommandStack.class);
Modified:
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/handler/AddTimerHandler.java
===================================================================
---
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/handler/AddTimerHandler.java 2009-05-26
20:53:13 UTC (rev 15523)
+++
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/handler/AddTimerHandler.java 2009-05-26
22:20:57 UTC (rev 15524)
@@ -13,12 +13,11 @@
import org.eclipse.ui.handlers.HandlerUtil;
import org.jboss.tools.flow.common.command.AddChildCommand;
import org.jboss.tools.flow.common.registry.ElementRegistry;
-import org.jboss.tools.flow.common.wrapper.FlowWrapper;
import org.jboss.tools.flow.common.wrapper.Wrapper;
public class AddTimerHandler extends AbstractHandler implements IHandler {
- public Object execute(ExecutionEvent event) throws ExecutionException {
+ private Wrapper getParent(ExecutionEvent event) throws ExecutionException {
IWorkbenchPage page =
HandlerUtil.getActiveWorkbenchWindowChecked(event).getActivePage();
if (page == null) return null;
ISelection selection = page.getSelection();
@@ -27,9 +26,18 @@
Object first = structuredSelection.getFirstElement();
if (!(first instanceof EditPart)) return null;
EditPart editPart = (EditPart)first;
- Object model = editPart.getModel();
- if (model == null || !(model instanceof FlowWrapper)) return null;
- FlowWrapper flowWrapper = (FlowWrapper)model;
+ while (editPart != null) {
+ Object model = editPart.getModel();
+ if (model != null && model instanceof Wrapper) {
+ return (Wrapper)model;
+ }
+ editPart = editPart.getParent();
+ }
+ return null;
+ }
+
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ Wrapper parent = getParent(event);
IEditorPart editorPart = HandlerUtil.getActiveEditor(event);
if (editorPart == null) return null;
Object object = editorPart.getAdapter(CommandStack.class);
@@ -39,7 +47,7 @@
Wrapper child =
ElementRegistry.createWrapper("org.jboss.tools.flow.jpdl4.timer");
addChildCommand.setChild(child);
addChildCommand.setType("timer");
- addChildCommand.setParent(flowWrapper);
+ addChildCommand.setParent(parent);
commandStack.execute(addChildCommand);
return null;
}
Modified:
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/handler/DeleteElementHandler.java
===================================================================
---
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/handler/DeleteElementHandler.java 2009-05-26
20:53:13 UTC (rev 15523)
+++
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/handler/DeleteElementHandler.java 2009-05-26
22:20:57 UTC (rev 15524)
@@ -16,8 +16,10 @@
import org.jboss.tools.flow.common.model.Element;
import org.jboss.tools.flow.common.wrapper.Wrapper;
import org.jboss.tools.flow.jpdl4.Logger;
+import org.jboss.tools.flow.jpdl4.editpart.EventListenerListTreeEditPart;
import org.jboss.tools.flow.jpdl4.model.EventListener;
import org.jboss.tools.flow.jpdl4.model.EventListenerContainer;
+import org.jboss.tools.flow.jpdl4.model.SequenceFlow;
import org.jboss.tools.flow.jpdl4.model.Swimlane;
import org.jboss.tools.flow.jpdl4.model.Timer;
@@ -52,7 +54,11 @@
} else if (child.getElement() instanceof Timer) {
deleteChildCommand.setType("timer");
} else if (child.getElement() instanceof EventListener) {
- deleteChildCommand.setType(EventListenerContainer.LISTENERS);
+ if (parent.getElement() instanceof SequenceFlow) {
+ deleteChildCommand.setType("listener");
+ } else {
+ deleteChildCommand.setType(EventListenerContainer.LISTENERS);
+ }
} else if (child.getElement() instanceof EventListenerContainer) {
deleteChildCommand.setType("eventListener");
}
@@ -66,10 +72,10 @@
}
private EditPart getParentEditPart(Element element, EditPart editPart) {
- if (element instanceof Swimlane || element instanceof Timer) {
+ if (editPart.getParent() instanceof EventListenerListTreeEditPart) {
+ return editPart.getParent();
+ } else {
return getRootEditPart(editPart);
- } else {
- return editPart.getParent();
}
}