Приложение Eclipse RCP — многооконный дизайн для нескольких мониторов

Вопрос о Eclipse RCP и дизайне всей перспективы/представления/редактора - как лучше всего создать приложение, которое будет отображать несколько окон на нескольких мониторах? Учебники и книги, которые я видел, всегда упаковывают дизайн RCP / SWT в представления внутри перспективы в одном окне приложения.

Должно ли одно окно управлять всеми другими или все они должны быть равными (закрытие последнего окна приводит к выходу из приложения)? Как быть с перспективами и взглядами? Есть ли что-то еще, что мы должны знать?

Окружающая среда: Eclipse Ganymede, Windows XP.


person tomash    schedule 26.03.2009    source источник


Ответы (1)


Одно рабочее место Eclipse может создавать несколько окон. Каждое окно компонуется с использованием перспективы, поэтому разные окна могут быть настроены на разные перспективы или на одну и ту же перспективу, и вы можете переключать перспективы в каждом окне независимо от других окон.

Вы также можете установить ввод для каждого окна. Это полезно, если каждое окно работает с разными данными (например, каждое окно может быть подключено к другому серверу или может отображать данные из разных баз данных, которые имеют одинаковую схему, но разные данные).

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

добавить в объявления полей:

private IWorkbenchAction newWindowAction;

добавьте в код, где вы выполняете действия (обычно это метод makeActions):

    newWindowAction = ActionFactory.OPEN_NEW_WINDOW.create(window);
    register(newWindowAction);

добавьте в код, где вы создаете меню:

    menu.add(newWindowAction);

где меню обычно является меню окна. Если у вас еще нет меню Window в вашем приложении и вы хотите его создать, следующая строка будет работать:

    MenuManager menu = new MenuManager(
      "&Window", 
      IWorkbenchActionConstants.M_WINDOW);

Это даст вам пункт меню, который создаст новое окно так же, как пункт меню Window->New Window в Eclipse IDE.

Если, с другой стороны, вы хотите, чтобы в каждом окне отображались разные данные, вам нужно будет открывать новые окна программно. Это позволяет вам установить разные входные данные для каждого окна. Вам понадобится строка кода, например:

IWorkbenchPage newPage = window.openPage(inputObject);

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

Вы захотите установить заголовок в каждом окне:

newPage.getWorkbenchWindow().getShell().setText(windowTitle);

где windowTitle — строка, описывающая ввод в окно.

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

window.getActivePage().getInput()

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

person user85259    schedule 31.03.2009