Приложение Eclipse RCP - многооконное проектирование для нескольких мониторов
-
22-08-2019 - |
Вопрос
Вопрос о 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()
Затем вы можете привести это к любому классу, который вы используете в качестве входных данных в окне.