我们正在使用NetBeans Platform 7.0.1,并使用this (now “obsolete”) tutorial实现了对新语言的支持。
由于我们的所有内容都存储在数据库中,而不存储在文件中,因此我们将其打开:
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?
)?
答案 0 :(得分:0)
好吧,我们似乎一直在以错误的方式解决问题。
由于我们在内存中打开文件,因此在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平台"保存"功能。