Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » GMF (Graphical Modeling Framework) » Delete the target node when deleting a link
Delete the target node when deleting a link [message #229216] Thu, 07 May 2009 14:59 Go to next message
Jose Salazar is currently offline Jose SalazarFriend
Messages: 34
Registered: July 2009
Member
Hello,

When I delete a link, I would remove the target node. I tried to achieve
this goal in several ways, but unsatisfactorily. One performs the
following, modifying
XXXItemSemanticEditPolicy#getDestroyElementCommand(DestroyEl ementRequest)

DestroyElementRequest myDER = new
DestroyElementRequest(getEditingDomain(), relation.getTarget(), false);
IElementType context =
ElementTypeRegistry.getInstance().getElementType(myDER.getEd itHelperContext());
ICommand command = context.getEditCommand(myDER);
cc.add(new ICommandProxy(command));

But "command" is always null.

Deleting the node with a RemoveCommand doesn't work either.

How could I implement this behavior?
The idea is that this will be deleted spreading, ie, deleting a node,
their links are deleted, they deleted their target nodes ...

Thanks in advance.
Re: Delete the target node when deleting a link [message #229644 is a reply to message #229216] Tue, 12 May 2009 13:51 Go to previous messageGo to next message
Alexander Shatalin is currently offline Alexander ShatalinFriend
Messages: 2928
Registered: July 2009
Senior Member
Hello Jose,

Try to create new DestroyElementCommand() using DestroyElementRequest as
a parameter.

-----------------
Alex Shatalin
Re: Delete the target node when deleting a link [message #230108 is a reply to message #229644] Wed, 13 May 2009 13:55 Go to previous message
Jose Salazar is currently offline Jose SalazarFriend
Messages: 34
Registered: July 2009
Member
Hello Alex,

I already tried to do so, but it does not work (at least to me).

This is an extract of my code:


protected Command getDestroyElementCommand(DestroyElementRequest req) {
CompoundCommand cc = new CompoundCommand();
Relation relationFeature = (Relation) req.getElementToDestroy();
DestroyElementRequest myDER = new DestroyElementRequest(
getEditingDomain(), ((Relation)relationFeature).getTarget(), false);
DestroyElementCommand myDEC = new DestroyElementCommand(myDER);
cc.add(getGEFWrapper(myDEC));

cc.add(getGEFWrapper(new DestroyElementCommand(req)));

return cc.unwrap();
}


This way I get the following two errors:


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 22)
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 .notifyNotOK(DefaultOperationHistory.java:1017)
at
org.eclipse.core.commands.operations.DefaultOperationHistory .notifyNotOK(DefaultOperationHistory.java:1001)
at
org.eclipse.core.commands.operations.DefaultOperationHistory .execute(DefaultOperationHistory.java:518)
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:174)
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:318)
at
org.eclipse.gmf.runtime.diagram.ui.internal.parts.DiagramGra phicalViewerKeyHandler.keyPressed(DiagramGraphicalViewerKeyH andler.java:109)
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.gmf.runtime.diagram.ui.services.palette.Selectio nToolEx.handleKeyDown(SelectionToolEx.java:112)
at org.eclipse.gef.tools.AbstractTool.keyDown(AbstractTool.java :912)
at org.eclipse.gef.tools.SelectionTool.keyDown(SelectionTool.ja va:468)
at org.eclipse.gef.EditDomain.keyDown(EditDomain.java:156)
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:155)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java :84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1027)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1012)
at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1040 )
at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1036 )
at org.eclipse.swt.widgets.Widget.wmKeyDown(Widget.java:1653)
at org.eclipse.swt.widgets.Control.WM_KEYDOWN(Control.java:4122 )
at org.eclipse.swt.widgets.Control.windowProc(Control.java:3818 )
at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:337)
at org.eclipse.swt.widgets.Display.windowProc(Display.java:4528 )
at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method)
at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:23 71)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java :3420)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.jav a:2384)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2348)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:22 00)
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:495)
at
org.eclipse.core.databinding.observable.Realm.runWithDefault (Realm.java:288)
at
org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Work bench.java:490)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.j ava:149)
at
org.eclipse.ui.internal.ide.application.IDEApplication.start (IDEApplication.java:113)
at
org.eclipse.equinox.internal.app.EclipseAppHandle.run(Eclips eAppHandle.java:193)
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(EclipseS tarter.java:386)
at
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:179)
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: 549)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
at org.eclipse.equinox.launcher.Main.main(Main.java:1212)



org.eclipse.core.commands.ExecutionException: While executing the
operation, an exception occurred
at
org.eclipse.core.commands.operations.DefaultOperationHistory .execute(DefaultOperationHistory.java:519)
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:174)
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:318)
at
org.eclipse.gmf.runtime.diagram.ui.internal.parts.DiagramGra phicalViewerKeyHandler.keyPressed(DiagramGraphicalViewerKeyH andler.java:109)
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.gmf.runtime.diagram.ui.services.palette.Selectio nToolEx.handleKeyDown(SelectionToolEx.java:112)
at org.eclipse.gef.tools.AbstractTool.keyDown(AbstractTool.java :912)
at org.eclipse.gef.tools.SelectionTool.keyDown(SelectionTool.ja va:468)
at org.eclipse.gef.EditDomain.keyDown(EditDomain.java:156)
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:155)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java :84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1027)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1012)
at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1040 )
at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1036 )
at org.eclipse.swt.widgets.Widget.wmKeyDown(Widget.java:1653)
at org.eclipse.swt.widgets.Control.WM_KEYDOWN(Control.java:4122 )
at org.eclipse.swt.widgets.Control.windowProc(Control.java:3818 )
at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:337)
at org.eclipse.swt.widgets.Display.windowProc(Display.java:4528 )
at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method)
at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:23 71)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java :3420)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.jav a:2384)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2348)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:22 00)
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:495)
at
org.eclipse.core.databinding.observable.Realm.runWithDefault (Realm.java:288)
at
org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Work bench.java:490)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.j ava:149)
at
org.eclipse.ui.internal.ide.application.IDEApplication.start (IDEApplication.java:113)
at
org.eclipse.equinox.internal.app.EclipseAppHandle.run(Eclips eAppHandle.java:193)
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(EclipseS tarter.java:386)
at
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:179)
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: 549)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
at org.eclipse.equinox.launcher.Main.main(Main.java:1212)
Caused by: java.lang.IllegalArgumentException: The feature 'name' is not a
valid feature
at
org.eclipse.emf.ecore.impl.BasicEObjectImpl.eOpenGet(BasicEO bjectImpl.java:1062)
at
org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjec tImpl.java:1016)
at
org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjec tImpl.java:1004)
at
org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjec tImpl.java:999)
at arbol.diagram.parsers.AbstractParser.getValue(AbstractParser .java:150)
at arbol.diagram.parsers.AbstractParser.getValues(AbstractParse r.java:141)
at
arbol.diagram.parsers.MessageFormatParser.getPrintString(Mes sageFormatParser.java:173)
at
arbol.diagram.edit.parts.NodeNameEditPart.getLabelText(NodeN ameEditPart.java:212)
at
arbol.diagram.edit.parts.NodeNameEditPart.refreshLabel(NodeN ameEditPart.java:413)
at
arbol.diagram.edit.parts.NodeNameEditPart.refreshVisuals(Nod eNameEditPart.java:402)
at
arbol.diagram.edit.parts.NodeNameEditPart.setLabel(NodeNameE ditPart.java:170)
at
arbol.diagram.edit.parts.NodeEditPart.addFixedChild(NodeEdit Part.java:137)
at
arbol.diagram.edit.parts.NodeEditPart.addChildVisual(NodeEdi tPart.java:156)
at
org.eclipse.gef.editparts.AbstractEditPart.addChild(Abstract EditPart.java:197)
at
org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPa rt.addChild(GraphicalEditPart.java:1295)
at
org.eclipse.gef.editparts.AbstractEditPart.refreshChildren(A bstractEditPart.java:727)
at
org.eclipse.gef.editparts.AbstractEditPart.refresh(AbstractE ditPart.java:677)
at
org.eclipse.gef.editparts.AbstractGraphicalEditPart.refresh( AbstractGraphicalEditPart.java:571)
at
org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPa rt.access$3(GraphicalEditPart.java:1)
at
org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPa rt$3.run(GraphicalEditPart.java:839)
at
org.eclipse.emf.transaction.impl.TransactionalEditingDomainI mpl.runExclusive(TransactionalEditingDomainImpl.java:289)
at
org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPa rt.refresh(GraphicalEditPart.java:829)
at
org.eclipse.gef.editparts.AbstractEditPart.addNotify(Abstrac tEditPart.java:235)
at
org.eclipse.gef.editparts.AbstractGraphicalEditPart.addNotif y(AbstractGraphicalEditPart.java:219)
at
org.eclipse.gef.editparts.AbstractEditPart.addChild(Abstract EditPart.java:198)
at
org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPa rt.addChild(GraphicalEditPart.java:1295)
at
org.eclipse.gef.editparts.AbstractEditPart.refreshChildren(A bstractEditPart.java:727)
at
org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPa rt.refreshChild(GraphicalEditPart.java:1208)
at
org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPa rt.handleMajorSemanticChange(GraphicalEditPart.java:1234)
at
org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeEditPart.h andleNotificationEvent(ShapeEditPart.java:145)
at
org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeNodeEditPa rt.handleNotificationEvent(ShapeNodeEditPart.java:231)
at
org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPa rt.notifyChanged(GraphicalEditPart.java:1414)
at
org.eclipse.gmf.runtime.diagram.core.listener.DiagramEventBr oker.fireNotification(DiagramEventBroker.java:500)
at
org.eclipse.gmf.runtime.diagram.core.listener.DiagramEventBr oker.resourceSetChanged(DiagramEventBroker.java:395)
at
org.eclipse.gmf.runtime.diagram.ui.internal.DiagramEventBrok erThreadSafe.resourceSetChanged(DiagramEventBrokerThreadSafe .java:72)
at
org.eclipse.gmf.runtime.diagram.core.DiagramEditingDomainFac tory$DiagramEditingDomain.postcommit(DiagramEditingDomainFac tory.java:213)
at
org.eclipse.emf.transaction.impl.TransactionalEditingDomainI mpl.deactivate(TransactionalEditingDomainImpl.java:504)
at
org.eclipse.emf.transaction.impl.TransactionImpl.close(Trans actionImpl.java:623)
at
org.eclipse.emf.transaction.impl.TransactionImpl.commit(Tran sactionImpl.java:415)
at
org.eclipse.emf.workspace.AbstractEMFOperation.execute(Abstr actEMFOperation.java:172)
at
org.eclipse.core.commands.operations.DefaultOperationHistory .execute(DefaultOperationHistory.java:511)
... 55 more



What am I doing wrong?

Thanks for your response.
Previous Topic:Overlapping connections
Next Topic:Referencing elements created in diagram editor (at runtime)
Goto Forum:
  


Current Time: Thu Apr 25 11:55:10 GMT 2024

Powered by FUDForum. Page generated in 0.02731 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top