我们使用的是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_DOCUMENT
(和newValue() == null
)似乎可以在窗口关闭时完成任务。但是,如何从确认窗口获得返回值(我指的是更改后关闭文件时的消息File xxx.xxx is modified. Save it?
)?
看来我们处理这个问题的方式不对。
由于我们在内存中打开文件,netbeans开发列表中建议我们应该使用来侦听文件本身的更改
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平台"保存"功能。