我尝试为 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/