使用IResourceDeltaVisitor防止保存

时间:2015-07-21 16:58:52

标签: eclipse eclipse-plugin client-server eclipse-rcp

我正在尝试编写一个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;
}

但无论服务器交互是否成功,这都将继续保存资源 - 如何防止保存?

0 个答案:

没有答案