2015-04-16 3 views
1

Этот код делает то, что мне нужно, за исключением того, что есть быстрый переход между обычным курсором и курсором занятой очень быстро.Отключение курсора занятости для eclipse Задание

/* this code is run inside the createPartControl(Composite parent) method of a ViewPart */ 
    Job job = new Job("refreshing") 
    { 
     @Override 
     protected IStatus run(IProgressMonitor monitor) 
     { 

      while (data.isReading()) 
      { 
       Display.getDefault().syncExec(new Runnable() 
       { 

        @Override 
        public void run() 
        { 

         treeViewer.setInput(DataView.this.dataModel.getArray()); 

        } 

       }); 
      } 

      return Status.OK_STATUS; 
     } 
    }; 
    job.schedule(); 

Итак, есть способ отключить занятый курсор задания в затмении? Возможно, это произошло, потому что Job вызывается в GUI-классе?

ответ

0

Вызов

job.setSystem(true); 

, прежде чем планировать работу. Из JavaDoc:

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

Однако я думаю, что занят курсор исходит из BusyIndicator.showWhile вызова в AbstractTreeViewer.createChildren котором дерево setInput зайдет. Я не думаю, что вы можете что-то сделать.

+0

Теперь разница в том, что задание не отображается в представлении «Прогресс». Но я получаю один и тот же курсор, мерцающий между стрелкой и занятой. :( – DrKaoliN

+0

Тогда я не думаю, что занятый курсор исходит из задания. –

+0

Я вижу. Так что, возможно, он исходит из метода, который я вызываю в цикле while. Я думаю, что это может произойти из повторного вызова Display .getDefault(). syncExec(). В дальнейшем я буду смотреть на это. – DrKaoliN