对NetBean的编辑器窗口关闭采取行动

时间:2012-03-05 13:34:29

标签: java netbeans netbeans-7

我们正在使用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?)?

1 个答案:

答案 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平台"保存"功能。