2012-03-05 70 views
0

我们正在使用NetBeans平台7.0.1,并已使用this (now “obsolete”) tutorial实施了对新语言的支持。对NetBean的编辑器窗口关闭采取行动

因为我们所有的内容都存储在数据库中,而不是文件,我们打开它们是这样的:

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

嗯,看来我们一直在以错误的方式接近问题。

由于我们是开放的内存中的文件,有人建议在,我们应该倾听文件本身的变化在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平台“保存”功能。