Я целый день рыскал в Интернете, пытаясь найти пример того, как реализовать то, что я прочитал о динамическом изменении метки команды:
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.
Что д> _