[英]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.