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.
view plainprint?
@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.
view plainprint?
public boolean isDirty()
{
return _dirty;
}
protected void setDirty(boolean value)
{
_dirty = value;
firePropertyChange(PROP_DIRTY);
}
Editors implement IEditorPart interface which extends ISaveablePart. ISaveablePart has the following methods.
view plainprint?
@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.
view plainprint?
public boolean isDirty()
{
return _dirty;
}
protected void setDirty(boolean value)
{
_dirty = value;
firePropertyChange(PROP_DIRTY);
}
然后在菜单中配置的 org.eclipse.ui.file.save 将能监听到此 view 的变化。