Как правильно обрабатывать сохранение файлов в проекте платформы NetBeans (плагин)
Я пытаюсь создать новую языковую поддержку для 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 в этом отношении?
Большое спасибо.
1 ответ
Вы пробовали SPI OnSaveTask ( 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);
}
}
}