Откройте несколько экземпляров одного и того же представления (детали в терминах Eclipse E4) рядом друг с другом в одномJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Откройте несколько экземпляров одного и того же представления (детали в терминах Eclipse E4) рядом друг с другом в одном

Сообщение Anonymous »


У меня есть представление и соответствующий заполнитель (для поддержки открытия нескольких экземпляров одного и того же представления), созданный путем реализации IPerspectiveFactory следующим образом:

@Override public void createInitialLayout (окончательный макет IPageLayout) { Строковый редакторArea = layout.getEditorArea(); IFolderLayout right = layout.createFolder("myViewLayout", IPageLayout.RIGHT, 0.22, IPageLayout.ID_PROJECT_EXPLORER); right.addView("com.example.myView"); right.addPlaceholder("com.example.myView:*"); } Затем у меня есть простая кнопка меню, прикрепленная к моему представлению, которая при срабатывании должна открывать дубликат представления рядом с исходным местоположением представления (тот же стек деталей), например представления с вкладками, и я попробовал следующее в Eclipse e4 -

публичный класс NewMyView расширяет AbstractHandler { интервал счетчика = 1; @Override выполнение публичного объекта (окончательное событие ExecutionEvent) выдает исключение ExecutionException { IWorkbenchPart activePart = HandlerUtil.getActivePart(событие); for (; activePart.getSite().getPage().findViewReference("com.example.myView", getNextSecondaryId()) != null; this.counter++) { } IEclipseContext serviceContext = E4Workbench.getServiceContext(); окончательный IEclipseContext appContext = serviceContext.getActiveChild(); EModelService modelService = appContext.get(EModelService.class); Приложение MApplication = serviceContext.get(MApplication.class); EPartService partService = serviceContext.get(EPartService.class); MPart part = partService.findPart("com.example.myView"); если (часть == ноль) { Заполнитель MPlaceholder = partService.createSharedPart("com.example.myView"); часть = (MPart) Placeholder.getRef(); } partService.showPart(часть, PartState.ACTIVATE); это.счетчик++; } частная строка getNextSecondaryId() { вернуть "myView#" + this.counter; } } Я не уверен, правильно ли я делаю, используя способ Eclipse e4, чтобы открыть дубликат экземпляра «myView» рядом друг с другом в одном и том же стеке частей, в идеале я хочу, чтобы дубликаты экземпляров представления открывались в том же месте рядом друг с другом, откуда я запускаю действие, чтобы открыть дубликат экземпляра представления, поэтому, если я перетаскиваю один из экземпляров моего представления в другой стек макета/детали, а затем снова пытаюсь открыть дубликат моего представления, тогда он должен открыть новое местоположение/активную в данный момент часть, откуда я запускаю действие для открытия представления. Частично этого можно достичь, используя способ Eclipse E3 (например, представление консоли Eclipse в E3 работает таким образом) -

page.showView("com.example.myView", getNextSecondaryId(), IWorkbenchPage.VIEW_ACTIVATE); это.counter++ Но проблема с подходом Eclipse E3 заключается в том, что когда я перетаскиваю один из экземпляров представления в другой стек деталей, а затем снова запускаю команду, чтобы открыть дубликат моего представления из нового местоположения, тогда новый экземпляр будет открыт в расположении по умолчанию, куда он был первоначально добавлен с помощью IFolderLayout. Представление консоли Eclipse в E3, где оно поддерживает открытие нескольких экземпляров, ведет себя аналогичным образом.

Достижимо ли такое поведение с помощью Eclipse E4? Если да, то правильно ли я делаю это в своем коде, используя EPartService и MPlaceHolder?
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»