Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

E4/EAS/Saveable Life Cycle

< E4‎ | EAS
Revision as of 15:01, 24 October 2009 by Remysuen.ca.ibm.com (Talk | contribs) (Dirty state modification)

When a user modifies something, a component may choose to notify the user of this in some way. This state transition from "unmodified" to "modified" is known as the "dirty state". When something is dirty, it means that the user has interacted with the object in some way. It may or may not actually be different from the original object but is an indicator to the user that something may be different.

Eclipse 3.x API

In Eclipse 3.x, the visual cue to the user that a workbench part is dirty is by appending the asterisk character ('*') in front of the part's title. So if the original file was called 'Main.java' and it was edited by the user in the text editor, the title in the tab would switch from 'Main.java' to '*Main.java'. Workbench parts that wish to expose this functionality do so by implementing the org.eclipse.ui.ISaveablePart interface.

Saveable declaration

public class ModelTransformationView extends ViewPart implements ISaveablePart {
 
  private boolean fDirty = false;
 
  /**
   * Alters the dirty state of this part and notifies the workbench
   * of the change.
   */
  private void setDirty(boolean dirty) {
    fDirty = dirty;
    firePropertyChange(IWorkbenchPartConstants.PROP_DIRTY);
  }
 
  public boolean isDirty() {
    return fDirty;
  }
 
  /* Other code not included... */
 
}

Dirty state modification

fStateCheckbox.addListener(SWT.Selection, new Listener() {
  public void handleEvent(Event e) {
    // modify the model based on what the user selected
    // in the UI
    fModel.setState(fStateCheckbox.getSelection());
    // send out a dirty notification
    setDirty(true);
  }
});

Back to the top