Wednesday, February 11, 2009

Eclipse : How to save a dirty view

Eclipse has editors and views. When the contents of a editor is modified, the editor's state changes to dirty state and the user is asked to save it when he closes the application.

Editors implement IEditorPart interface which extends ISaveablePart. ISaveablePart has the following methods.



@Override
public void doSave(IProgressMonitor monitor)
{

}

@Override
public void doSaveAs()
{

}

@Override
public boolean isDirty()
{

return false;
}

@Override
public boolean isSaveAsAllowed()
{

return false;
}

@Override
public boolean isSaveOnCloseNeeded()
{

return false;
}



So if you need the ViewPart to behave like a editor when the content is modified, the ISaveablePart should be implemented by the ViewPart class.

More importantly when something is changed on the View, set the dirty flag to true and fire a property change event to the workbench, otherwise the Save menu item will not be enabled on the workbench.


public boolean isDirty()
{
return _dirty;
}

protected void setDirty(boolean value)
{
_dirty = value;
firePropertyChange(PROP_DIRTY);
}

No comments: