在 NetBean 的编辑器窗口关闭时执行操作



我们使用的是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平台"保存"功能。

相关内容

  • 没有找到相关文章

最新更新