Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » GMF (Graphical Modeling Framework) » Combining Command
Combining Command [message #226319] Thu, 16 April 2009 09:26 Go to next message
Esteban Dugueperoux is currently offline Esteban DugueperouxFriend
Messages: 472
Registered: July 2009
Senior Member
Hi,

I'm created a GMF editor and a view both displaying Views of my ecore
EObjects from separate EditingDomains . Now I want to add two features :

- Drag'n Drop from Navigator (also Package Explorer and Project
Explorer) to my GMF editor;

- Drag'n Drop from my view to my GMF editor.


Then In my XXDiagramEditor.initializeGraphicalViewer() method I have
added two DropTargetListener :

- a first DiagramDropTargetListener which manage LocalTransfer from my
view to my GMF editor;

- a second DiagramDropTargetListener which manage FileTransfer from
Project Explorer (for example) to my GMF editor.

In my RootEditPart, I have installed a DiagramDragDropEditPolicy, I have
overrided getDropObjectsCommand() method and I iterate on
dropRequest.getObjects() :

- if the current object is a String, then it's a FileName from a
FileTransfer then I insert a new EObject with
CreateViewAndElementRequest in my GMF models (domain and diagram), this
works fine.
But I don't know which request to combine (SetRequest, ...) and how to
use it to initialize my EObject created previously with values according
to FileName dropped. To use SetRequest I must specify to which EObject
to set property's values consenquently how to fetch EObject created
previously with the CreateViewAndElementRequest request?

- then if the current object is a EObject corresponding to a element of
my ecore metamodel, I want to insert it to my domain model and that GMF
create a corresponding view. Currently I insert my EObject by EMF
Command (RecordingCommand) and GMF must resynchronize his diagram domain
with the corresponding domain model. It display a popup "File Changed
....". I don't see this popup, I want to use GMF command framework to
drop my EObject.

Is it clear?

Thanks.
Re: Combining Command [message #226369 is a reply to message #226319] Thu, 16 April 2009 11:41 Go to previous messageGo to next message
Alexander Shatalin is currently offline Alexander ShatalinFriend
Messages: 2928
Registered: July 2009
Senior Member
Hello Esteban,

> to FileName dropped. To use SetRequest I must specify to which EObject
> to set property's values consenquently how to fetch EObject created
> previously with the CreateViewAndElementRequest request?
Try calling CreateViewAndElementRequest.getViewAndElementDescriptor().ge tElementAdapter().getAdapter(EObject.class).

-----------------
Alex Shatalin
Re: Combining Command [message #226446 is a reply to message #226369] Thu, 16 April 2009 16:41 Go to previous messageGo to next message
Esteban Dugueperoux is currently offline Esteban DugueperouxFriend
Messages: 472
Registered: July 2009
Senior Member
Hi Alex,


I tried to fetch the EObject with your tip but
CreateViewAndElementRequest.getViewAndElementDescriptor().ge tElementAdapter().getAdapter(EObject.class)

return null;

I don't understand, this is how I proceed :

In my DiagramDragDropEditPolicy.getDropObjectsCommand(DropObjectsR equest)

I initialized a ViewAndElementDescriptor :

MDAProjectEditPart editPart = (MDAProjectEditPart) getHost();
IElementType type = MdaElementTypes.Model_1004;

ViewAndElementDescriptor viewDescriptor = new ViewAndElementDescriptor(
new CreateElementRequestAdapter(
new CreateElementRequest(type)),
Node.class,
((IHintedType)type).getSemanticHint(),
editPart.getDiagramPreferencesHint()
);

Then I created request :

CreateViewAndElementRequest req = new
CreateViewAndElementRequest(viewDescriptor);


I get corresponding command :

Command command = editPart.getCommand(req);


I tried to use
CreateViewAndElementRequest.getViewAndElementDescriptor().ge tElementAdapter().setNewElement(EObject)
with my EObject initialized but nothing changed.
Also I tried to set a CreationFactory to CreateViewAndElementRequest but
it doesn't like this, I have :

java.lang.UnsupportedOperationException: The Factory mechanism is not used

Is it really possible to implement my features in GMF?

Thanks.

Alex Shatalin a écrit :
> Hello Esteban,
>
>> to FileName dropped. To use SetRequest I must specify to which EObject
>> to set property's values consenquently how to fetch EObject created
>> previously with the CreateViewAndElementRequest request?
> Try calling
> CreateViewAndElementRequest.getViewAndElementDescriptor().ge tElementAdapter().getAdapter(EObject.class).
>
>
> -----------------
> Alex Shatalin
>
>
Re: Combining Command [message #226495 is a reply to message #226446] Fri, 17 April 2009 08:55 Go to previous messageGo to next message
Alexander Shatalin is currently offline Alexander ShatalinFriend
Messages: 2928
Registered: July 2009
Senior Member
Hello Esteban,

> I tried to fetch the EObject with your tip but
> CreateViewAndElementRequest.getViewAndElementDescriptor().ge tElementAd
> apter().getAdapter(EObject.class)
> return null;
Are you sure you call CreateViewAndElementRequest.getViewAndElementDescriptor().ge tElementAdapter().getAdapter(EObject.class)
after the corresponding create element command execution? This method will
return null in case created command was not executed yet.

> Is it really possible to implement my features in GMF?
I think so. D&D support will be generated for you if you switch on shortcutting
support in GMF. At least, it should be possible to D&D model elemet from
ProjectExplorer/EMF editor onto the diagram..

-----------------
Alex Shatalin
Re: Combining Command [message #226584 is a reply to message #226495] Fri, 17 April 2009 13:16 Go to previous messageGo to next message
Esteban Dugueperoux is currently offline Esteban DugueperouxFriend
Messages: 472
Registered: July 2009
Senior Member
Hi Alex,

Thanks for your help, I execute my command with :

editPart.getDiagramEditDomain().getDiagramCommandStack().exe cute(command);

After getCommand(req) like in first tip of
http://wiki.eclipse.org/index.php/GMF_Tips

but :

req.getViewAndElementDescriptor().getElementAdapter().getAda pter(EObject.class);

return always null.

I don't understand because my element are well created.

Best Regards.

Alex Shatalin a écrit :
> Hello Esteban,
>
>> I tried to fetch the EObject with your tip but
>> CreateViewAndElementRequest.getViewAndElementDescriptor().ge tElementAd
>> apter().getAdapter(EObject.class)
>> return null;
> Are you sure you call
> CreateViewAndElementRequest.getViewAndElementDescriptor().ge tElementAdapter().getAdapter(EObject.class)
> after the corresponding create element command execution? This method
> will return null in case created command was not executed yet.
>
>> Is it really possible to implement my features in GMF?
> I think so. D&D support will be generated for you if you switch on
> shortcutting support in GMF. At least, it should be possible to D&D
> model elemet from ProjectExplorer/EMF editor onto the diagram..
>
> -----------------
> Alex Shatalin
>
>
Re: Combining Command [message #226677 is a reply to message #226584] Mon, 20 April 2009 11:13 Go to previous message
Alexander Shatalin is currently offline Alexander ShatalinFriend
Messages: 2928
Registered: July 2009
Senior Member
Hello Esteban,

> req.getViewAndElementDescriptor().getElementAdapter().getAda pter(EObje
> ct.class);
> return always null.
This is really strange.. Can you try following the way to get nely created
elements described here: http://wiki.eclipse.org/index.php/GMF_Tips#Change_Names_Of_N ewly_Created_Elements?

-----------------
Alex Shatalin
Previous Topic:Generated wizard does not start
Next Topic:Using XPand from Java
Goto Forum:
  


Current Time: Thu Apr 18 23:41:03 GMT 2024

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

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

Back to the top