Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » GMF (Graphical Modeling Framework) » creating a link the target is always null
creating a link the target is always null [message #156136] Wed, 17 October 2007 17:53 Go to next message
Eclipse UserFriend
Originally posted by: bmoros.um.es

Hi all,

I am completely frustrated!! I have been trying to create a element and a
link programmatically for some weeks with no success. Although I have
followed the example provided in the GMF tutorial (MindMap example) I only
have been able to create the element but not the link.

I am trying to create them in the handleNotificationEvent-method of the
ElementEditPart since the new element has to be created when the current
element changes. Once the new element is created, it has to be linked to the
current one. The current element is the source (sourceViewAdapter) of the
DeferredCreateConnectionViewAndElementCommand, and the new element is the
target (targetViewAdapter) of the Command. Consequently, the command is
created as follows:

//Target of the link: the new created element
IAdaptable targetViewAdapter =
(IAdaptable)((List)elementRequest.getNewObject()).get(0);

// Source of the link: the current element

IAdaptable sourceViewAdapter = new EObjectAdapter((EObject)this.getModel());


ICommand createLinkCmd = new DeferredCreateConnectionViewAndElementCommand(

createLinkRequest,

sourceViewAdapter,

targetViewAdapter,

this.getViewer());

Debugging the code, I have realized that the execution of the
doExecuteWithResult-method, in the DeferredCreateConnectionViewAndElement
class, looks for the EditPart corresponding to the targetViewAdapter. The
targetViewAdapter is not a key of the EditPartRegistry (I guess the reason
is that the element has been already created and the registry has not been
updated yet) so the targetEditPart is always null. Then, the command is not
executed and the link is not created.

I do not understand why the creation works when the element and the link are
created in an Action but it does not work when they are created in a method
of an EditPart.

Can anybody explain it to me? can anybody give me a hint?

Best regards,
Bego
Re: creating a link the target is always null [message #156145 is a reply to message #156136] Wed, 17 October 2007 18:50 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: trommas.yahoo.com

the targetEditPart is always null. Then, the command is not
> executed and the link is not created.

I had the same problem. I solved it by executing the command that
creates target first. Have you tired this?

Regards,

Tomas
Re: creating a link the target is always null [message #156160 is a reply to message #156145] Wed, 17 October 2007 21:05 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: bmoros.um.es

Thank you again Tomas. I tried it. I followed the code that you sent me but
it didn
Re: creating a link the target is always null [message #157391 is a reply to message #156136] Fri, 26 October 2007 20:05 Go to previous messageGo to next message
Cherie Revells is currently offline Cherie RevellsFriend
Messages: 299
Registered: July 2009
Senior Member
Begoña,

The handleNotificationEvent() method of an editpart is not the correct
place to create a new element for the relationship. This element should
be created by the edithelpers as these are responsible for creating the
semantic elements.

Is your diagram canonical? If so, then if the element is created the
connection should be created automatically.

Regards,
Cherie

Begoña Moros wrote:
> Hi all,
>
> I am completely frustrated!! I have been trying to create a element and a
> link programmatically for some weeks with no success. Although I have
> followed the example provided in the GMF tutorial (MindMap example) I only
> have been able to create the element but not the link.
>
> I am trying to create them in the handleNotificationEvent-method of the
> ElementEditPart since the new element has to be created when the current
> element changes. Once the new element is created, it has to be linked to the
> current one. The current element is the source (sourceViewAdapter) of the
> DeferredCreateConnectionViewAndElementCommand, and the new element is the
> target (targetViewAdapter) of the Command. Consequently, the command is
> created as follows:
>
> //Target of the link: the new created element
> IAdaptable targetViewAdapter =
> (IAdaptable)((List)elementRequest.getNewObject()).get(0);
>
> // Source of the link: the current element
>
> IAdaptable sourceViewAdapter = new EObjectAdapter((EObject)this.getModel());
>
>
> ICommand createLinkCmd = new DeferredCreateConnectionViewAndElementCommand(
>
> createLinkRequest,
>
> sourceViewAdapter,
>
> targetViewAdapter,
>
> this.getViewer());
>
> Debugging the code, I have realized that the execution of the
> doExecuteWithResult-method, in the DeferredCreateConnectionViewAndElement
> class, looks for the EditPart corresponding to the targetViewAdapter. The
> targetViewAdapter is not a key of the EditPartRegistry (I guess the reason
> is that the element has been already created and the registry has not been
> updated yet) so the targetEditPart is always null. Then, the command is not
> executed and the link is not created.
>
> I do not understand why the creation works when the element and the link are
> created in an Action but it does not work when they are created in a method
> of an EditPart.
>
> Can anybody explain it to me? can anybody give me a hint?
>
> Best regards,
> Begoña
>
>
>
Re: creating a link the target is always null [message #157452 is a reply to message #157391] Sun, 28 October 2007 08:04 Go to previous message
Eclipse UserFriend
Originally posted by: bmoros.um.es

Cherie, thank you very much for your answers!!!

> The handleNotificationEvent() method of an editpart is not the correct
> place to create a new element for the relationship. This element should
> be created by the edithelpers as these are responsible for creating the
> semantic elements.
>
I will study about edithelpers, any good reference?
I am using the editors generated automatically by GMF from the ecore and I
am afraid I am still not in control of all the GMF/EMF features.

> Is your diagram canonical? If so, then if the element is created the
> connection should be created automatically.
>
I really do not know. Is the diagram of the generated GMF editors canonical?
The problem is that the connection is not always created when a node is
created. A node can be created by means of the palette tool or
programmatically under some circunstances. Only when the node is created
programmatically the connection has to be created too.

Regards,
Bego
Previous Topic:Avoiding Duplicate EditParts?
Next Topic:translation of the diagram as scroll horizontally
Goto Forum:
  


Current Time: Thu Jun 27 21:19:07 GMT 2024

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

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

Back to the top