環境
私はEclipse 3.4以上のプラグインを構築しています。mrp.view
menuContribution が に設定されたid のビューがありますtoolbar:mrp.view
。この menuContribution にはいくつかのコマンドがあり、私はこれを持っています:
<handler
class="mrp.handlers.export"
commandId="mrp.commands.export">
</handler>
<command
commandId="mrp.commands.export"
label="My command"
style="push">
</command>
私のハンドラにmrp.handlers.export
は、次のような動的な ìsEnabled()` メソッドがあります。
@Override
public boolean isEnabled() {
return !getMySelection().isEmpty();
}
質問
データが変更されたときにツールバーのボタンを更新するにはどうすればよいですか? (ツールバーの別のボタンをクリックすると自動的に更新されますが、そうしないと...)
私は試した..
ICommandService service = (ICommandService) PlatformUI.getWorkbench().getService(ICommandService.class);
service.refreshElements("mrp.commands.export", null);
しかし、それは何もしないようです。
これも:
public class Export extends AbstractHandler implements PropertyChangeListener {
@Override
public void propertyChange(PropertyChangeEvent evt) {
setBaseEnabled(!getSelection().isEmpty());
}
// ....
}
呼び出されますが、ビューのメニューのアイコンが更新されません (Eclipse 3.7)。私は何か間違ったことをしましたか?