Структура команд Eclipse eRCP - невозможно динамически обновить метку команды - PullRequest
2 голосов
/ 11 октября 2010

Я целый день рыскал в Интернете, пытаясь найти пример того, как реализовать то, что я прочитал о динамическом изменении метки команды:

http: // wiki.eclipse.org/Platform_UI_Command_Design# Issue_102 _-_ Comm ands_implementation_of_label_changing

В моем файле plugin.xml определена команда, использующая предложенную схему:

<command
     description="Hoping to change my state"
     id="my.commandWithState"
     name="Command Wtih State">
  <state
        class="org.eclipse.jface.menus.TextState"
        id="NAME"/>
</command>

В моем обработчике я пробовал множество вариантов (включаявызов getValue перед попыткой установить его в надежде на принудительную загрузку), но в основном суть такова:

public Object execute(final ExecutionEvent pEvent) throws ExecutionException {
        pEvent.getCommand().getState("my.commandWithState").setValue("UPDATED!");
        return null;
    }

Само значение состояния обновляется, но не сохраняется.Я указал стиль «push» в области menuContribution моего plugin.xml, а текст команды всегда «Command With State», поскольку я не указывал метку (хотя я ожидал, что она изменится ...)

Я использую Eclipse 3.6, поэтому я предполагаю, что у меня есть обновления, которые якобы позволяют это с 3.3.

Единственный способ, которым я смог установить текст в объекте интерфейса команды - это иметь свойОбработчик реализует IElementUpdater, как будто я работаю с ToggleState.Это позволяет мне изменять текст в общей сложности 1 раз, когда я впервые запускаю продукт.

Я собираюсь вырвать мои волосы.

1) Команда "label"не обновляется и 2) значение состояния не сохраняется, даже если TextState расширяет PersistedState.

Что д> _

...