Я разрабатываю простой плагин Eclipse. Я добавил всплывающее окно в качестве расширения и присвоил ему класс Action. Все работает отлично, за исключением отключения действия в первый раз, когда всплывающее окно открыто.Eclipse plug-in popup-action начальная доступность
Я проверяю, может ли действие быть выполнено в методе selectionChanged. Но он не может быть вызван до создания объекта MyAction. Он выполняется только после нажатия кнопки меню (он должен быть отключен, если предварительные условия не заполнены).
Как справиться с такой проблемой? Как MyAction может быть сконструирован до открытия всплывающего окна?
прилагает образец существенного кода в моем проекте (plugin.xml, MyAction.java):
<plugin>
<extension
point="org.eclipse.ui.popupMenus">
<objectContribution
id="action.contribution1"
objectClass="myobject">
<menu
id="action.menu1"
label="Menu"
path="additions">
</menu>
<actionm
class="action.popup.actions.MyAction"
enablesFor="1"
id="action.newAction"
label="Play"
menubarPath="action.menu1">
</action>
</objectContribution>
</extension>
</plugin>
public class MyAction implements IObjectActionDelegate {
public MyAction() {
super();
}
public void setActivePart(IAction action, IWorkbenchPart targetPart) {}
public void run(IAction action) {
//some logic
}
@Override
public void selectionChanged(IAction action, ISelection selection) {
boolean enabled = false;
//some logic concerning enabled variable
action.setEnabled(enabled);
}
}
Это правда, но это не влияет на первый раз, когда вызывается действие. Действие не создается, пока я не нажму на связанное меню - setActivePart не вызывается в первый раз. Поэтому я не могу выполнить первую проверку и установить включение в объекте MyAction. – Zacateras
Added details of element –