Bug 341476 - [StateMachine] Drag&Drop of transitions
Summary: [StateMachine] Drag&Drop of transitions
Status: RESOLVED FIXED
Alias: None
Product: Papyrus
Classification: Modeling
Component: Diagram (show other bugs)
Version: unspecified   Edit
Hardware: All All
: P3 normal (vote)
Target Milestone: 0.8.0   Edit
Assignee: Ansgar Radermacher CLA
QA Contact:
URL:
Whiteboard: Editors
Keywords: plan
Depends on:
Blocks:
 
Reported: 2011-03-31 08:51 EDT by Wladimir Schamai CLA
Modified: 2013-04-03 11:54 EDT (History)
1 user (show)

See Also:
sebastien.gerard: indigo+


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Wladimir Schamai CLA 2011-03-31 08:51:30 EDT
It is not possible to drag&drop an exising transition onto a diagram.
Comment 1 Ansgar Radermacher CLA 2011-09-26 10:35:34 EDT
A precision: it is possible to drag a transition into a diagram (with 0.8.x version), but dragging will also create the states associated with the transitions, even if these states already exist in the diagram. Thus, drag&drop of transition remains unusable (you cannot delete the existing states first, as the may be targeted by other transitions, for the same reason, you cannot delete the new ones later).
Comment 2 Sébastien Gérard CLA 2013-03-28 05:01:08 EDT
Droping a transition when the source and target state are displayed is ok. However, if the source or target state is not show, following error is raised:

null
Error
Wed Mar 27 23:22:31 CET 2013
Unhandled event loop exception

java.lang.ClassCastException: org.eclipse.uml2.uml.internal.impl.StateMachineImpl cannot be cast to org.eclipse.uml2.uml.Region
	at org.eclipse.papyrus.uml.diagram.statemachine.custom.policies.CustomStateMachineDiagramDragDropEditPolicy.dropTransition(CustomStateMachineDiagramDragDropEditPolicy.java:497)
	at org.eclipse.papyrus.uml.diagram.statemachine.custom.policies.CustomStateMachineDiagramDragDropEditPolicy.getSpecificDropCommand(CustomStateMachineDiagramDragDropEditPolicy.java:774)
	at org.eclipse.papyrus.uml.diagram.common.editpolicies.OldCommonDiagramDragDropEditPolicy.getDropObjectCommand(OldCommonDiagramDragDropEditPolicy.java:269)
	at org.eclipse.papyrus.uml.diagram.common.editpolicies.OldCommonDiagramDragDropEditPolicy.getDropObjectsCommand(OldCommonDiagramDragDropEditPolicy.java:241)
	at org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy.getCommand(DragDropEditPolicy.java:80)
	at org.eclipse.papyrus.infra.gmfdiag.dnd.strategy.DefaultDropStrategy.getCommand(DefaultDropStrategy.java:74)
	at org.eclipse.papyrus.infra.gmfdiag.dnd.policy.CustomizableDropEditPolicy.findStrategies(CustomizableDropEditPolicy.java:290)
	at org.eclipse.papyrus.infra.gmfdiag.dnd.policy.CustomizableDropEditPolicy.getCustomCommand(CustomizableDropEditPolicy.java:211)
	at org.eclipse.papyrus.infra.gmfdiag.dnd.policy.CustomizableDropEditPolicy.getCommand(CustomizableDropEditPolicy.java:98)
	at org.eclipse.gef.editparts.AbstractEditPart.getCommand(AbstractEditPart.java:502)
	at org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart.access$1(GraphicalEditPart.java:1)
	at org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart$1.run(GraphicalEditPart.java:482)
	at org.eclipse.emf.transaction.impl.TransactionalEditingDomainImpl.runExclusive(TransactionalEditingDomainImpl.java:328)
	at org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart.getCommand(GraphicalEditPart.java:477)
	at org.eclipse.gef.dnd.AbstractTransferDropTargetListener.getCommand(AbstractTransferDropTargetListener.java:215)
	at org.eclipse.gmf.runtime.diagram.ui.parts.DiagramDropTargetListener.isEnabled(DiagramDropTargetListener.java:224)
	at org.eclipse.jface.util.DelegatingDropAdapter.updateCurrentListener(DelegatingDropAdapter.java:365)
	at org.eclipse.jface.util.DelegatingDropAdapter.dragEnter(DelegatingDropAdapter.java:128)
	at org.eclipse.swt.dnd.DNDListener.handleEvent(DNDListener.java:60)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1057)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1081)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1066)
	at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:778)
	at org.eclipse.swt.dnd.DropTarget.DragEnter(DropTarget.java:297)
	at org.eclipse.swt.dnd.DropTarget.DragEnter_64(DropTarget.java:275)
	at org.eclipse.swt.dnd.DropTarget$3.method3(DropTarget.java:245)
	at org.eclipse.swt.internal.ole.win32.COMObject.callback3(COMObject.java:92)
	at org.eclipse.swt.internal.ole.win32.COM.DoDragDrop(Native Method)
	at org.eclipse.swt.dnd.DragSource.drag(DragSource.java:363)
	at org.eclipse.swt.dnd.DragSource.access$000(DragSource.java:102)
	at org.eclipse.swt.dnd.DragSource$1.handleEvent(DragSource.java:172)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1057)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4170)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3759)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1108)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:992)
	at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:137)
	at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:600)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:555)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:124)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:354)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:181)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:636)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:591)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1450)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1426)
Comment 3 Ansgar Radermacher CLA 2013-04-03 11:54:34 EDT
Fixed in revision 10770 of trunk and 10774 of 0.9.X revision