Я использую точку расширения org.eclipse.ui.popupMenus для добавления подменю, действие которого ограничено следующим классом:
public class MyAction implements IObjectActionDelegate {
private Logic logic = Logic.getInstance(); // Singleton
public void setActivePart(IAction a, IWorkbenchPart targetPart) {
// Nothing here
}
public void run(IAction a) {
// Do something...
}
public void selectionChanged(IAction a, ISelection s) {
a.setEnabled(logic.isEnabled(s));
}
}
Это действие работает правильно в большинстве случаев (включая вызов a.setEnabled()
в selectionChanged()
).
Моя проблема в первый раз, когда мое действие вызывается. Метод selectionChanged
вызывается только после , когда отображается элемент меню (а не когда пользователь сделал выбор), что означает, что вызов a.setEnabled()
не окажет влияния
Есть ли какие-либо идеи о том, как заставить мое действие получать selectionChanged()
уведомления даже до того, как оно началось?