Принять меры к закрытию окна редактора NetBean - PullRequest
0 голосов
/ 05 марта 2012

Мы используем NetBeans Platform 7.0.1 и внедрили поддержку нового языка с помощью этого (ныне «устаревшего») учебного пособия .

Поскольку все наше содержимое хранится в базе данных, а не в файлах, мы открываем их следующим образом:

 FileSystem fs = FileUtil.createMemoryFileSystem();
 FileObject fo = fs.getRoot().createData(fileName, fileExtension);
… write contents from database to `fo` ….

DataObject data = MyMultiDataObject.find(fo);
EditorCookie.Observable cookie = data.getCookie(EditorCookie.Observable.class);
cookie.open();
… forces undock of editor window …

И в нашем layer.xml мы добавили пользовательскую кнопку к Save, которая отправляет содержимое обратно в базу данных.

Однако, когда пользователь закрывает файл (закрывая вкладку или окно), мы не нашли способ его сохранить.

Добавление PropertyChangeListener к Cookie и наблюдение за PROP_DOCUMENTnewValue() == null), похоже, помогают при закрытии окна. Но как получить возвращаемое значение из окна подтверждения (я имею в виду, когда файл закрывается после изменений, сообщение File xxx.xxx is modified. Save it?)?

1 Ответ

0 голосов
/ 09 марта 2012

Ну, похоже, мы подошли к проблеме неправильно.

Поскольку мы открываем файл в памяти, в списке netbeans-dev было предложено прослушивать изменения в самом файле, используя

fo.addFileChangeListener(new CustomFileChangeListener());

public class CustomFileChangeListener implements FileChangeListener {
    @Override
    public void fileChanged(FileEvent fe) {
       ... file has been saved in the editor, sync with database ...
    }
}

и сохраняя егосинхронизируется таким образом, используя встроенную функциональность NetBeans для «сохранения».

...