Плагин Eclipse: как обновить представление после завершения задания - PullRequest
1 голос
/ 09 июня 2011

Метод run в моем классе Job, делает некоторые вещи (детали не имеют значения) и выводит 2 массива значений типа double.

Я хочу отобразить эти массивы в представлении результатов, которое я создал с таблицей и двумя столбцами, по одному для каждого массива.

Как я могу ссылаться на представление и отображать эти массивы в нем в конце метода run (в классе Job)?

Даже если вы не можете помочь мне с ответом, я был бы рад, если бы кто-то указал мне в каком-то направлении, потому что я понятия не имею. Единственное, о чем я мог думать, - это обработка событий, но я тоже не очень разбираюсь в этом.

class RunnerJob extends Job {
     protected IStatus run(IProgressMonitor monitor) {
          //does some stuff
          double[] col1 = someStuff1();
          double[] col2 = someStuff2();

          //display in results view?
  }
}

Исходя из ответа Сураджа Чандрана, это код, который я использовал для ссылки на статический метод представления,

display.syncExec(
    new Runnable() {
       public void run(){
           try { 
PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().showView(ResultsView.ID);
           } catch (PartInitException e) {
                e.printStackTrace();
             }
                 ResultsView.update(<object with values>);
             }
     });

Ответы [ 2 ]

3 голосов
/ 09 июня 2011

Используйте шаблон наблюдателя (см. пример ):

  1. Сделайте ваш View реализации Observer
  2. Сделайте вашу работу реализацией Observable
  3. Зарегистрируйте свой просмотр в Observable в createPartControl() (или в конструкторе), и не забудьте отменить его регистрацию в dispose().
  4. Уведомлять наблюдателей, когда задание выполнено.
1 голос
/ 09 июня 2011

В вашем классе представления есть статический метод, например getInstance (), который будет возвращать ссылку на ваш объект просмотра.Когда у вас есть объект, вы можете установить в нем массивы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...