Предостережение: Я все еще борюсь с правильным MVC в разработке плагинов Eclipse, поэтому, если вы видите здесь что-нибудь, что, скорее всего, причиняет мне больше боли, что я должен терпеть, пожалуйста, дайте мне знать.
Вопрос:
У меня есть представление с JFace Tree Viewer и таблицей (не просмотрщик таблиц ... который будет изменен в будущем).
У меня есть действие, которое инициализируется ссылкой на представление (мне это кажется ужасным, но я пока не знаю, как сделать это правильно). Когда действие выполняется - с помощью кнопки в представлении - действие:
1) получает Tree Viewer из вида
2) получает базовую модель
3) создает работу
а) внутри работы перебирает модель и делает с ней разные вещи, включая добавление в модель дополнительных дочерних элементов
б) использует функцию, представленную в представлении, которая «очищает» таблицу в представлении
4) добавляет JobChangeListener, который реализует "done ()".
а) внутри метода done () он расширяет средство просмотра дерева с помощью этого кода:
loadMethodsJob.addJobChangeListener(new JobChangeAdapter(){
public void done(IJobChangeEvent event){
view.enableActions();
view.getTestsViewer().expandAll();
}
});
Внутри работы, всякий раз, когда я пытаюсь получить доступ к элементам в программе просмотра, я получаю ошибки Invalid Thread Access. Мне кажется, я понимаю, почему я получаю их при работе внутри работы, но я не уверен, как правильно их обойти, если не могу взаимодействовать с виджетами в слушателе смены работы. Я могу заставить его работать, если я обертываю каждое взаимодействие с виджетами в getDisplay (). SynchExec (....), но мне кажется, что я помню, что читал, что это не желательно.
Я чувствую, что нахожусь на пороге большого скачка в понимании с Eclipse SWT, поэтому я ценю любые рекомендации, как туда добраться.