プラグイン(10) 保存してみる
つまり、こういうことかな。とりあえず保存と復帰だけは確認。
手作業で保存するのが面倒なので、各状態の情報をBeanかなんかに保存しておいて、JSONとかYAMLとかなんかでsave/restoreしないと保守が死にそう。
public class SamplePropertyPage extends PropertyPage implements IWorkbenchPropertyPage { ... @Override protected IPreferenceStore doGetPreferenceStore() { IResource resource = getResource(); if (resource != null) { ScopedPreferenceStore store = new ScopedPreferenceStore( new ProjectScope(resource.getProject()), "org.ashikunep.irenka.studio.properties"); return store; } else { return null; } } private void save() { IPreferenceStore store = getPreferenceStore(); if (store != null) { String buttonId = getElementId("button"); if (buttonId != null) { store.putValue(buttonId, String.valueOf(button.getSelection())); } } } private void restore() { IPreferenceStore store = getPreferenceStore(); if (store != null) { String buttonId = getElementId("button"); if (buttonId != null) { boolean value = store.getBoolean(buttonId); button.setSelection(value); } } } private IResource getResource() { IAdaptable elem = getElement(); IResource resource = (IResource) elem.getAdapter(IResource.class); return resource; } private String getElementId(String suffix) { IResource resource = getResource(); if (resource != null) { IPath location = resource.getProjectRelativePath(); return location.toPortableString() + "." + suffix; } else { return null; } } }
あとデフォルトのときに保存しない設定とか、リソース移動/削除時に追跡しとかないとゴミが…。これくらいならリソースに対する永続プロパティ使ってもいいのかな。どこに保存されるか未調査だけど。