Одно рабочее место 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