1.首选项的变化监听
在要监听的类中间分别写入下列代码
a.一般写在构造函数中:
ClassFTPPlugin.getDefault().getPluginPreferences().
addPropertyChangeListener(propertyChangeListener);
b.然后在该类中写入field 监听类
private final IPropertyChangeListener propertyChangeListener = new IPropertyChangeListener() {
public void propertyChange(PropertyChangeEvent event) {
System.out.println("event.getProperty():"+event.getProperty());}
2.状态保存
在view和edit中一般有public void saveState(IMemento memento)方法public void init(IViewSite site, IMemento memento)方法,如果想在其它非API的地方写保存信息,可如下,以下分别为读、写
读(恢复)
reader = new FileReader(getAddressesFile());
loadAddresses(XMLMemento.createReadRoot(reader));
private void loadAddresses(XMLMemento memento)
{
IMemento[] children = memento.getChildren(TAG_ADDRESS);
for(int i = 0; i < children.length; i++)
{
AddressItem item = createNewAddressItem(children[i].getString(TAG_NAME),
children[i].getString(TAG_CATEGORY));
if(item != null)
addresses.add(item);
}
}
写(保存)
public void saveAddresses(){
if(addresses == null)
return;
XMLMemento memento = XMLMemento.createWriteRoot(TAG_ADDRESSES);
saveAddresses(memento);
FileWriter writer = null;
try{
writer = new FileWriter(getAddressesFile());
memento.save(writer);
}catch(IOException e){
//to be added
}finally{
try{
if(writer != null)
writer.close();
}catch(IOException e){
//to be added
}
}
}
public void saveAddresses(IMemento memento){
Iterator iter = addresses.iterator();
while(iter.hasNext()){
AddressItem item = (AddressItem)iter.next();
IMemento child = memento.createChild(TAG_ADDRESS);
child.putString(TAG_NAME, item.getName());
child.putString(TAG_CATEGORY, item.getCategory().getCategoryName());
}
}