eclipse 插件开发-编辑器脏处理
1、强行添加command使编辑器脏。
getEditor().getCommandStack().execute(new Command() {});
?
2、
//第一步,对editor的构造函数添加EditDomainpublic MyGraphicalEditor() {setEditDomain(new DefaultEditDomain(this));}//第二步,对Command堆栈进行监听public void init(IEditorSite site, IEditorInput input) throws PartInitException {super.init(site, input);getCommandStack().addCommandStackListener(this);}//第三步,重载CommandStackListener的CommandStackChanged()方法public void commandStackChanged(EventObject event) {super.commandStackChanged(event);firePropertyChange(IEditorPart.PROP_DIRTY);// 别忘了}//第四步,定义一个boolean类型的变量dirty,并写其set方法。供涉及Command堆栈之外的操作对“脏”状态改的需求public void setDirty(boolean dirty){if (dirty != this.dirty) {this.dirty = dirty;firePropertyChange(IEditorPart.PROP_DIRTY);}}//第五步,重载editor的isDirty()方法public boolean isDirty() {return (getCommandStack().isDirty()) | dirty; }// 最后一步,doSave()方法的处理public void doSave(IProgressMonitor arg0) {getCommandStack().markSaveLocation();dirty = false;firePropertyChange(IEditorPart.PROP_DIRTY);// Todo others.....}
?