Все,
Я создал плагин с помощью мастера «создать плагин с видом», который создал просмотрщик дерева. Мастер создает Действия непосредственно в представлении, и, следовательно, все части представления являются видимыми для действий. Это хорошо для простых плагинов, но не для «реальных» плагинов, особенно если вам нужна привязка ключей.
Мой вопрос таков: каков «предпочтительный» способ взаимодействия представлений и действий друг с другом, когда действия не являются классами в представлении?
Например: у меня есть это дерево просмотра. Пользователь выбирает различные элементы в дереве, а затем щелкает правой кнопкой мыши, и появляется меню с моим действием в нем. Пользователь щелкает пункт меню. Это затем запускает мое действие.
A) Как Действие получает «данные» выбора в этой программе просмотра дерева, то есть базовые объекты, составляющие дерево
б) Когда Действие запускается, я хочу, чтобы он взял каждый выбранный элемент, выполнил некоторую операцию, а затем обновил базовый объект, а также изменил видимый внешний вид дерева в результате операции, которую я выполнил ... то есть я хочу, чтобы действие сообщалось древовидной программе просмотра. Возможно, я хочу изменить значок элемента выбранного элемента, например. Кроме того, когда начинается действие, я хочу, чтобы оно взаимодействовало не только с древовидным представлением, но и с другими видимыми элементами представления ... возможно, ему следует отключить определенные кнопки, которые в противном случае были бы видны, когда действие не выполняется, и затем, когда действие завершает свою задачу, я хочу, чтобы оно сообщило обратно представлению, чтобы обновить кнопки и, возможно, увеличить счетчики в некоторой метке.
в) Кроме того, когда дерево обновляется в результате действия, выполняющего какую-либо операцию, я бы хотел, чтобы другой зритель в том же виде ответил. Например, может быть, есть TableViewer в виде, под деревом, и его работа состоит в том, чтобы показывать некоторые детали выбранных элементов в древовидном представлении. Таким образом, действие выполняется, оно работает со всеми выбранными элементами в дереве; он обновляет эти элементы, а когда он обновляет эти элементы, средство просмотра таблиц «детали» обновляется в результате появления новых данных в объектах средства просмотра дерева.
В настоящее время у меня есть что-то похожее на эту работу, но я знаю, что мой подход неверен. Действия являются отдельными классами, но я создаю их новый экземпляр в представлении, передавая представление в конструктор Action и предоставляя методы получения и установки для представления, которое Action вызывает напрямую. Кроме того, поскольку я не делаю ничего этого с plugin.xml, я не получаю настраиваемую привязку клавиш .... только жестко закодированные привязки клавиш, которые я добавил в представление.
Суть в том, что я хочу по-настоящему научиться «правильному способу» делать это в Eclipse, а не просто «как это работает». Примеры МОЖЕТ приветствоваться!
Спасибо.