Может ли GEF использовать SWT Window в качестве всплывающего окна? - PullRequest
0 голосов
/ 05 июля 2011

Я делаю проект с использованием GEF. Мне нужно открыть всплывающее окно, когда дважды щелкните модель на холсте.

Я создаю SWT-окно и позволяю GEF открывать его. Но проблема в том, что это исключение:

Исключение в потоке "Thread-5" org.eclipse.swt.SWTException: не удалось выполнить работоспособный (org.eclipse.swt.SWTException: недопустимый доступ к потоку)

при запуске следующего кода.

     while(!shell.isDisposed()){ 
        **if(!display.readAndDispatch()){** 
        display.sleep(); 
        }
        }

В моем проекте я создал окно SWT, затем создал поток для его запуска и вызвал поток в редактируемой части моей модели следующим образом:

public void performRequest(Request req)
{
            swtthread aa = new swtthread();
            aa.start();
    }

Возможно ли, что ГЭФ может использовать окно SWT в качестве всплывающего окна, или есть ли другой способ сделать это?

Спасибо

1 Ответ

2 голосов
/ 06 июля 2011

Звучит странно, но у меня нет опыта работы с GEF.В соответствии с этим SWT FAQ , который вызывается методом пользовательского интерфейса из потока, не являющегося пользовательским интерфейсом, попробуйте обернуть код с помощью

display.syncExec(
  new Runnable() {
    public void run(){
      ... // your code
  }
});

Вы также можете использовать asyncExec, в зависимости от ваших потребностей.

...