我正在尝试编写一个eclipse插件,它像服务器一样工作。当修改插件跟踪的资源并单击“保存”按钮时,客户端将尝试与服务器进行交互。
我打算实现的是防止本地保存发生(即将文件保留为脏),直到服务器交互完成并且交互成功为止。
为此,我实现了IResourceChangeListener和IResourceDeltaVisitor,它在POST_BUILD上触发了服务器事件(而不是POST_CHANGE,因为我不希望发生本地保存)。
getWorkspace().addResourceChangeListener(new MyChangeListener(), IResourceChangeEvent.POST_BUILD);
MyChangeListener#resourceChanged(IResourceChangeEvent event) {
switch(event.getType()) {
case IResourceChangeEvent.POST_BUILD:
event.getDelta().accept(MyresourceVisitor.create());
}
}
MyresourceVisitor#visit(IResourceDelta delta) {
switch (delta.getKind()) {
case IResourceDelta.CHANGED:
boolean success = interactWithServer(delta.getResource());
break;
}
return true;
}
但无论服务器交互是否成功,这都将继续保存资源 - 如何防止保存?