Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » Graphiti » Editor is dirty when create method returns EMPTY
Editor is dirty when create method returns EMPTY [message #902971] Tue, 21 August 2012 13:17 Go to next message
Joao S is currently offline Joao SFriend
Messages: 51
Registered: January 2011
Member
Hello everyone,

Following graphiti tutorial:

public Object[] create(ICreateContext context) {
        // ask user for EClass name
        String newClassName = ExampleUtil.askString(TITLE, USER_QUESTION, "");
        if (newClassName == null || newClassName.trim().length() == 0) {
            return EMPTY;
        }
 
        // create EClass
        EClass newClass = EcoreFactory.eINSTANCE.createEClass();
        // Add model element to resource.
        // We add the model element to the resource of the diagram for
        // simplicity's sake. Normally, a customer would use its own
        // model persistence layer for storing the business model separately.
        getDiagram().eResource().getContents().add(newClass);
        newClass.setName(newClassName);
 
        // do the add
        addGraphicalRepresentation(context, newClass);
 
        // return newly created business object(s)
        return new Object[] { newClass };
    }


When this method returns EMPTY, the editor still gets dirty despite no object was added to the resource.

Is this the expected behaviour?

Is there anyway that I can avoid this?

Thanks,
Joao
Re: Editor is dirty when create method returns EMPTY [message #902978 is a reply to message #902971] Tue, 21 August 2012 13:51 Go to previous messageGo to next message
Rob Cernich is currently offline Rob CernichFriend
Messages: 40
Registered: September 2011
Member
You need to override hasDoneChanges() to return true or false depending on whether or not you changed the model. Returning false will keep the dirty flag from appearing.

Hope that helps.
Rob
Re: Editor is dirty when create method returns EMPTY [message #1852475 is a reply to message #902971] Tue, 17 May 2022 14:53 Go to previous message
Che Bumagat is currently offline Che BumagatFriend
Messages: 46
Registered: February 2012
Member
This seem to work on custom Features but not when you use a Pattern.
I noticed that the CreateFeatureForPattern object always returns true and the GFCommandStack only queries the top CreateFeatureForPattern and not the actual delegated class pattern (e.g. MyCustomPattern).

So even if I override the hasDoneChanges() in my custom pattern, it has no effect. Once the Command executes the create(), the Editor will always be dirty.

Is there are a good way around this?

I see two options
a. Use a custom Create Feature - but this defeats the purpose of using a pattern, no?
b. Create your own GFCommandStack and update the execute() logic to query the delegate pattern's hasDoneChanges().

Anyone ran into a similar issue on using Patterns?
Previous Topic:Select pictogram element in editor on add
Next Topic:Blurry context buttons on subsequent use
Goto Forum:
  


Current Time: Fri Apr 19 09:07:30 GMT 2024

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

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

Back to the top