java - 如何在 NetBeans 平台项目(插件)中正确处理文件保存

标签 java netbeans netbeans-platform netbeans-plugins

我尝试为 NetBeans 7.4 及更高版本创建新的语言支持。

当文件保存在本地时,我需要将它们部署到服务器上。所以我需要处理保存事件。我这样做是为了实现 Savable:


     public class VFDataObject extends MultiDataObject implements Savable {
       .......
       @Override
       public void save() throws IOException {
         .......
       }
     }

而且它非常适合 Save 事件。但后来我意识到我需要扩展 HtmlDataObject 而不是 MultiDataObject:


    public class VFDataObject extends HtmlDataObject implements Savable {
       .......
       @Override
       public void save() throws IOException {
         .......
       }
    }

现在 save() 没有被执行。为什么?由于 HtmlDataObject 扩展了 MultiDataObject。应该怎么做才能使这项工作发挥作用?

还有一种方法可以在 NetBeans 中捕获“全部保存”事件吗?您是否知道 8.0 在这方面是否有任何变化?

非常感谢。

最佳答案

您是否尝试过 OnSaveTask SPI (https://netbeans.org/bugzilla/show_bug.cgi?id=140719)?该 API 可用于在保存给定类型的文件时执行任务。

类似这样的东西可用于监听给定 MIME 类型(在本例中为“text/x-sieve-java”)的所有保存事件:

public static class CustomOnSaveTask implements OnSaveTask {

    private final Context context;

    public CustomOnSaveTask(Context ctx) {
        context = ctx;
    }

    @Override
    public void performTask() {
        System.out.println(">>> Save performed on " + 
                NbEditorUtilities.getDataObject(context.getDocument()).toString());
    }

    @Override
    public void runLocked(Runnable r) {
        r.run();
    }

    @Override
    public boolean cancel() {
        return true;
    }

    @MimeRegistration(mimeType = "text/x-sieve-java", service = OnSaveTask.Factory.class, position = 1600)
    public static class CustomOnSaveTaskFactory implements OnSaveTask.Factory {

        @Override
        public OnSaveTask createTask(Context cntxt) {
            return new CustomOnSaveTask(cntxt);
        }

    }
}

关于java - 如何在 NetBeans 平台项目(插件)中正确处理文件保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24554753/

相关文章:

java - NetBeans 平台 : How to disable specific options dialog categories?

java - NetBeans 声明式操作注册与节点弹出菜单

java - 我正在尝试使用java记录保存项目,但该程序似乎无法连接到数据库

java - ListView 滚动时隐藏搜索栏

java - 我不能在构造函数之外使用数据库连接,为什么?

java - 了解幸存世代指标

java - Netbeans 中的 Affable Bean Java EJB Glassfish 教程问题

java - 与覆盖相关的异常处理

java - 简化 Java 中的数组声明

java - Spring 中的 LazyInitializationException 与 JPA 实体