아마도 매우 쉬운 새내기 질문이지만 이미 한 쌍의 시간을 가져올 수는 없으므로 여기에 설명하겠습니다. 내 범위 : 일부 그래픽 편집기 (EditorPart 확장)가있는 RCP 응용 프로그램이 있습니다. 편집인은 변경 사항을 파악하고 직접 저장하려고합니다. 이를 위해 CommandStack이 변경되고 doSave 메소드가 시작되는 순간을 포착합니다. 문제는 내 저장 메서드가 CommadStack 변경 이벤트를 호출하고 변경 내용이 저장되어 있지만 편집자가 여전히 더티 플래그가있는 것보다이 호출을 건너 뛸 수 있다는 것입니다. 내 원하는 행동은 더티 플래그가 떨어져 있다는 것입니다 (정상적인 저장 동작처럼).
내 CommandStack 변경과 내 doSave 방법이 모두 아래에 있습니다. 저 좀 도와 주 시겠어요? getCommandStack(). markSaveLocation와CommandStack의 변경 사항을 저장하십시오.
@Override
public void commandStackChanged(EventObject event) {
firePropertyChange(IEditorPart.PROP_DIRTY);
doSave(null);
setDirty(false);
}
public void doSave(final IProgressMonitor progressMonitor) {
editorSaving = true;
SafeRunner.run(new SafeRunnable() {
public void run() throws Exception {
IFile targetFile = getFile();
List<GraphicalEditPart> editParts = DiagramUtil.getAllEditParts(NetEditor.this);
Rectangle offsetBounds = DiagramUtil.getBounds(editParts);
saveDiagramProperties();
List<INetTransition> transitionsToExpand = saveSubdiagramGroups();
FileUtil.saveDiagram(getNetDiagram(), targetFile,
NetEditor.this);
getCommandStack().markSaveLocation();
for (INetTransition trans : transitionsToExpand) {
trans.setExpanded(true);
}
}
});
setDirty(false);
editorSaving = false;
}
() 나는 한 번 더 commandStackChanged 전화 루프에서 얻을. 이 문제를 어떻게 해결할 수 있습니까? 그것 없이는 내 편집자는 저장 후에 더러워집니다.
감사 접견, 제프