简体   繁体   English

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

[英]How do I handle file saves properly in NetBeans platform project (plugin)

I try to create a new language support for NetBeans 7.4 and higher. 我尝试为NetBeans 7.4及更高版本创建新的语言支持。

When files are being saved locally I need to deploy them to a server. 在本地保存文件时,我需要将它们部署到服务器。 So I need to handle the save event. 所以我需要处理save事件。 I did this implementing Savable: 我做了这个实施Savable:


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

And it worked perfectly for the Save event. 它适用于Save活动。 But then I realized I need to extend HtmlDataObject instead of MultiDataObject: 但后来我意识到我需要扩展HtmlDataObject而不是MultiDataObject:


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

And now the save() doesn't get executed. 现在save()没有被执行。 Why? 为什么? Since HtmlDataObject extends MultiDataObject. 由于HtmlDataObject扩展了MultiDataObject。 What should be done to make that work? 应该怎么做才能做到这一点?

Also is there a way to catch Save All event in NetBeans as well? 还有一种方法可以在NetBeans中捕获Save All事件吗? Do you have any info on if anything changed in 8.0 in this regards? 关于这方面是否有任何改变,你有任何信息吗?

Thanks a lot. 非常感谢。

Have you tried OnSaveTask SPI ( https://netbeans.org/bugzilla/show_bug.cgi?id=140719 )? 您是否尝试过OnSaveTask SPI( https://netbeans.org/bugzilla/show_bug.cgi?id=140719 )? The API can be used to perform tasks when files of a given type are saved. 当保存给定类型的文件时,API可用于执行任务。

Something like this can be used to listen to all the save events on a given MIME type (in this case "text/x-sieve-java"): 这样的东西可以用来监听给定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);
        }

    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何在Netbeans Platform项目中使用ServiceLoader添加SPI - How do I use ServiceLoader in a Netbeans Platform project to add SPIs 我在NetBeans平台上开发插件时如何调用打开的项目窗口? - How it is possible to call open project window when i develop plugin in netbeans platform? 将.jar文件添加到netbeans中的项目后,如何将其中的类导入到netbeans中的项目中? - After adding a .jar file to a project in netbeans, how do I import classes in it to my project in netbeans? 如何在NetBeans平台中打开插件管理器 - How can I open plugin manager in netbeans platform 如何将Netbeans中的非Maven Java项目正确导入Eclipse中的Maven项目? - How do I import a non-Maven Java project in Netbeans to a Maven project in Eclipse properly? 如何在Netbeans平台上获得项目类型? - How can I get a project type on Netbeans Platform? 如何正确处理javafx中的文件复制/剪切和粘贴? - How do I properly handle file copy/cut & paste in javafx? 编写Netbeans插件模块时如何将操作添加到项目节点 - How do I add an Action to a Project Node when writing a Netbeans plugin module 如何正确包含cordova插件的外部jar文件? - How do I properly include an external jar file for a cordova plugin? 如何退出NetBeans平台GUI应用程序? - How do I exit a NetBeans Platform GUI application?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM