2012-03-05 73 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平臺「保存」功能。