Приложение Eclipse RCP - многооконное проектирование для нескольких мониторов

StackOverflow https://stackoverflow.com/questions/686265

Вопрос

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

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

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

Это было полезно?

Решение

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

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

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

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

private IWorkbenchAction newWindowAction;

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

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

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

    menu.add(newWindowAction);

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

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

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

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

IWorkbenchPage newPage = window.openPage(inputObject);

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

Вам нужно будет задать заголовок в каждом окне:

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

где WindowTitle - это строка, описывающая ввод в окно.

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

window.getActivePage().getInput()

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top