Change connection ends programatically [message #147496] |
Wed, 22 August 2007 10:47  |
Eclipse User |
|
|
|
Hi,
I'm trying to change the source and the target editparts of a connection
programatically by setting them within the connection editpart.
Therefore I override the handleNotificationEvent(), which contains the
following code.
if(somePropertyHasChanged) {
ModelLinkUpdater updater = new
ModelLinkUpdater(getDiagramView().getDiagram());
View view = updater.getEObject2ViewMap().get(newValue);
EditPart targetEditPart = (EditPart)
getViewer().getEditPartRegistry().get(view);
setTarget(targetEditPart);
refresh();
}
Now I just want to know if this is the right approach to do this, or if
there is a better way to change the end points?
The code above refreshs the link view, but afterwards the link makes
some trouble. For e.g. if I try to delete the link the following
exception will be thrown:
java.lang.NullPointerException
at
org.eclipse.gmf.runtime.diagram.ui.internal.actions.ToggleRo uterAction.getNewPropertyValue(ToggleRouterAction.java:82)
at
org.eclipse.gmf.runtime.diagram.ui.internal.actions.Property ChangeAction.updateTargetRequest(PropertyChangeAction.java:1 18)
at
org.eclipse.gmf.runtime.diagram.ui.actions.DiagramAction.ref resh(DiagramAction.java:113)
at
org.eclipse.gmf.runtime.diagram.ui.actions.CheckedPropertyAc tion.refresh(CheckedPropertyAction.java:64)
at
org.eclipse.gmf.runtime.common.ui.action.AbstractActionHandl er.historyNotification(AbstractActionHandler.java:601)
at
org.eclipse.core.commands.operations.DefaultOperationHistory $2.run(DefaultOperationHistory.java:929)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
at
org.eclipse.core.commands.operations.DefaultOperationHistory .notifyListeners(DefaultOperationHistory.java:918)
at
org.eclipse.core.commands.operations.DefaultOperationHistory .notifyAdd(DefaultOperationHistory.java:980)
at
org.eclipse.core.commands.operations.DefaultOperationHistory .add(DefaultOperationHistory.java:190)
at
org.eclipse.core.commands.operations.DefaultOperationHistory .execute(DefaultOperationHistory.java:528)
at
org.eclipse.gmf.runtime.diagram.ui.parts.DiagramCommandStack .execute(DiagramCommandStack.java:205)
at
org.eclipse.gmf.runtime.diagram.ui.parts.DiagramCommandStack .execute(DiagramCommandStack.java:168)
at
org.eclipse.gmf.runtime.diagram.ui.parts.DiagramCommandStack .execute(DiagramCommandStack.java:155)
at
org.eclipse.gef.ui.actions.WorkbenchPartAction.execute(Workb enchPartAction.java:76)
at
org.eclipse.gmf.runtime.diagram.ui.internal.actions.Promptin gDeleteAction.run(PromptingDeleteAction.java:134)
at org.eclipse.gef.KeyHandler.performStroke(KeyHandler.java:76)
at org.eclipse.gef.KeyHandler.keyPressed(KeyHandler.java:50)
at org.eclipse.gef.KeyHandler.keyPressed(KeyHandler.java:54)
at
org.eclipse.gef.ui.parts.GraphicalViewerKeyHandler.keyPresse d(GraphicalViewerKeyHandler.java:317)
at
org.eclipse.gmf.runtime.diagram.ui.internal.parts.DiagramGra phicalViewerKeyHandler.keyPressed(DiagramGraphicalViewerKeyH andler.java:93)
at org.eclipse.gef.KeyHandler.keyPressed(KeyHandler.java:54)
at
org.eclipse.gmf.runtime.diagram.ui.internal.parts.DirectEdit KeyHandler.keyPressed(DirectEditKeyHandler.java:89)
at
org.eclipse.gef.tools.SelectionTool.handleKeyDown(SelectionT ool.java:319)
at org.eclipse.gef.tools.AbstractTool.keyDown(AbstractTool.java :901)
at org.eclipse.gef.tools.SelectionTool.keyDown(SelectionTool.ja va:468)
at org.eclipse.gef.EditDomain.keyDown(EditDomain.java:153)
at
org.eclipse.gef.ui.parts.DomainEventDispatcher.dispatchKeyPr essed(DomainEventDispatcher.java:246)
at
org.eclipse.draw2d.LightweightSystem$EventHandler.keyPressed (LightweightSystem.java:488)
at
org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListe ner.java:154)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java :66)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:938)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:962)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:947)
at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:975)
at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:971)
at org.eclipse.swt.widgets.Widget.wmKeyDown(Widget.java:1570)
at org.eclipse.swt.widgets.Control.WM_KEYDOWN(Control.java:3992 )
at org.eclipse.swt.widgets.Control.windowProc(Control.java:3701 )
at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:291)
at org.eclipse.swt.widgets.Display.windowProc(Display.java:4364 )
at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method)
at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:22 64)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java :3291)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.jav a:2389)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2353)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:22 19)
at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:466)
at
org.eclipse.core.databinding.observable.Realm.runWithDefault (Realm.java:289)
at
org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Work bench.java:461)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.j ava:149)
at
org.eclipse.ui.internal.ide.application.IDEApplication.start (IDEApplication.java:106)
at
org.eclipse.equinox.internal.app.EclipseAppHandle.run(Eclips eAppHandle.java:153)
at
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .runApplication(EclipseAppLauncher.java:106)
at
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .start(EclipseAppLauncher.java:76)
at
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:363)
at
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:176)
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: 504)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:443)
at org.eclipse.equinox.launcher.Main.run(Main.java:1169)
at org.eclipse.equinox.launcher.Main.main(Main.java:1144)
Thanks for your help,
Andreas
|
|
|
Re: Change connection ends programatically [message #149441 is a reply to message #147496] |
Thu, 06 September 2007 11:33  |
Eclipse User |
|
|
|
Andreas,
I'm not too sure what is required exactly, but I did take a look at
org.eclipse.gmf.runtime.diagram.ui.editpolicies.GraphicalNod eEditPolicy.getReconnectSourceCommand(ReconnectRequest
request). This is where the command is to reorient a connection to a
new source. There are two commands being executed here:
SetConnectionEndsCommand and SetConnectionAnchorsCommand.
Maybe you need to do something with the anchors.
- Cherie
A.Schuster wrote:
> Hi,
>
> I'm trying to change the source and the target editparts of a connection
> programatically by setting them within the connection editpart.
> Therefore I override the handleNotificationEvent(), which contains the
> following code.
>
> if(somePropertyHasChanged) {
> ModelLinkUpdater updater = new
> ModelLinkUpdater(getDiagramView().getDiagram());
> View view = updater.getEObject2ViewMap().get(newValue);
> EditPart targetEditPart = (EditPart)
> getViewer().getEditPartRegistry().get(view);
> setTarget(targetEditPart);
> refresh();
> }
>
> Now I just want to know if this is the right approach to do this, or if
> there is a better way to change the end points?
>
> The code above refreshs the link view, but afterwards the link makes
> some trouble. For e.g. if I try to delete the link the following
> exception will be thrown:
>
> java.lang.NullPointerException
> at
> org.eclipse.gmf.runtime.diagram.ui.internal.actions.ToggleRo uterAction.getNewPropertyValue(ToggleRouterAction.java:82)
>
> at
> org.eclipse.gmf.runtime.diagram.ui.internal.actions.Property ChangeAction.updateTargetRequest(PropertyChangeAction.java:1 18)
>
> at
> org.eclipse.gmf.runtime.diagram.ui.actions.DiagramAction.ref resh(DiagramAction.java:113)
>
> at
> org.eclipse.gmf.runtime.diagram.ui.actions.CheckedPropertyAc tion.refresh(CheckedPropertyAction.java:64)
>
> at
> org.eclipse.gmf.runtime.common.ui.action.AbstractActionHandl er.historyNotification(AbstractActionHandler.java:601)
>
> at
> org.eclipse.core.commands.operations.DefaultOperationHistory $2.run(DefaultOperationHistory.java:929)
>
> at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
> at
> org.eclipse.core.commands.operations.DefaultOperationHistory .notifyListeners(DefaultOperationHistory.java:918)
>
> at
> org.eclipse.core.commands.operations.DefaultOperationHistory .notifyAdd(DefaultOperationHistory.java:980)
>
> at
> org.eclipse.core.commands.operations.DefaultOperationHistory .add(DefaultOperationHistory.java:190)
>
> at
> org.eclipse.core.commands.operations.DefaultOperationHistory .execute(DefaultOperationHistory.java:528)
>
> at
> org.eclipse.gmf.runtime.diagram.ui.parts.DiagramCommandStack .execute(DiagramCommandStack.java:205)
>
> at
> org.eclipse.gmf.runtime.diagram.ui.parts.DiagramCommandStack .execute(DiagramCommandStack.java:168)
>
> at
> org.eclipse.gmf.runtime.diagram.ui.parts.DiagramCommandStack .execute(DiagramCommandStack.java:155)
>
> at
> org.eclipse.gef.ui.actions.WorkbenchPartAction.execute(Workb enchPartAction.java:76)
>
> at
> org.eclipse.gmf.runtime.diagram.ui.internal.actions.Promptin gDeleteAction.run(PromptingDeleteAction.java:134)
>
> at org.eclipse.gef.KeyHandler.performStroke(KeyHandler.java:76)
> at org.eclipse.gef.KeyHandler.keyPressed(KeyHandler.java:50)
> at org.eclipse.gef.KeyHandler.keyPressed(KeyHandler.java:54)
> at
> org.eclipse.gef.ui.parts.GraphicalViewerKeyHandler.keyPresse d(GraphicalViewerKeyHandler.java:317)
>
> at
> org.eclipse.gmf.runtime.diagram.ui.internal.parts.DiagramGra phicalViewerKeyHandler.keyPressed(DiagramGraphicalViewerKeyH andler.java:93)
>
> at org.eclipse.gef.KeyHandler.keyPressed(KeyHandler.java:54)
> at
> org.eclipse.gmf.runtime.diagram.ui.internal.parts.DirectEdit KeyHandler.keyPressed(DirectEditKeyHandler.java:89)
>
> at
> org.eclipse.gef.tools.SelectionTool.handleKeyDown(SelectionT ool.java:319)
> at org.eclipse.gef.tools.AbstractTool.keyDown(AbstractTool.java :901)
> at org.eclipse.gef.tools.SelectionTool.keyDown(SelectionTool.ja va:468)
> at org.eclipse.gef.EditDomain.keyDown(EditDomain.java:153)
> at
> org.eclipse.gef.ui.parts.DomainEventDispatcher.dispatchKeyPr essed(DomainEventDispatcher.java:246)
>
> at
> org.eclipse.draw2d.LightweightSystem$EventHandler.keyPressed (LightweightSystem.java:488)
>
> at
> org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListe ner.java:154)
> at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java :66)
> at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:938)
> at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:962)
> at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:947)
> at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:975)
> at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:971)
> at org.eclipse.swt.widgets.Widget.wmKeyDown(Widget.java:1570)
> at org.eclipse.swt.widgets.Control.WM_KEYDOWN(Control.java:3992 )
> at org.eclipse.swt.widgets.Control.windowProc(Control.java:3701 )
> at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:291)
> at org.eclipse.swt.widgets.Display.windowProc(Display.java:4364 )
> at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method)
> at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:22 64)
> at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java :3291)
> at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.jav a:2389)
> at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2353)
> at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:22 19)
> at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:466)
> at
> org.eclipse.core.databinding.observable.Realm.runWithDefault (Realm.java:289)
>
> at
> org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Work bench.java:461)
> at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.j ava:149)
> at
> org.eclipse.ui.internal.ide.application.IDEApplication.start (IDEApplication.java:106)
>
> at
> org.eclipse.equinox.internal.app.EclipseAppHandle.run(Eclips eAppHandle.java:153)
>
> at
> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .runApplication(EclipseAppLauncher.java:106)
>
> at
> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .start(EclipseAppLauncher.java:76)
>
> at
> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:363)
>
> at
> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:176)
>
> 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: 504)
> at org.eclipse.equinox.launcher.Main.basicRun(Main.java:443)
> at org.eclipse.equinox.launcher.Main.run(Main.java:1169)
> at org.eclipse.equinox.launcher.Main.main(Main.java:1144)
>
> Thanks for your help,
>
> Andreas
|
|
|
Powered by
FUDForum. Page generated in 0.04592 seconds