GEF - Как открыть редактор в Composite? - PullRequest
1 голос
/ 21 апреля 2009

Меня зовут Олег, я пишу расширенную функцию - визуальное сравнение файлов BPEL. Я хотел бы использовать обычные редакторы в «сравнить» панели (слева и справа) В качестве первого шага я просто хочу открыть два редактора (по одному для каждого файла) Позже я могу немного их взломать, сделать новые детали зелеными, удаленные части красного цвета и т. д ...

Так что моя проблема звучит довольно просто Я имею: - композитный - Ресурс, который описывает .bpel файл И я должен открыть редактор по умолчанию для этого ресурса в этом Composite.

Буду признателен за любые советы или предложения!

Что я пробовал:

Я провел пару дней, пытаясь глубже понять ГЭФ, но в конце концов я не нашел простого решения для моего простая проблема.

Люди из другого проекта использовали:

  • org.eclipse.gmf.runtime.notation.Diagram
  • org.eclipse.gmf.runtime.diagram.ui.parts.DiagramGraphicalViewer
  • diagramGraphicalViewer.setContents(diagram)

но мой редактор основан на GEF, а не на GMF.

Насколько я понял, я не могу просто открыть редактор в композитном Я должен использовать много "лишних" вещей - EditorManager, Workbrenchs, некоторые сайты и т. Д. И т. Д.

В конце концов, я написал простой код, но это не так Работа. Скорее всего, я написал это совершенно неправильно, но пусть я процитирую это просто, чтобы прояснить, что мне на самом деле нужно.

File file2open = new File(new Path("/p1/name2.bpel"), (Workspace) BPELPlugin.getPlugin().getWorkspace()) { };
BPELMultipageEditorPart editorPart = new BPELMultipageEditorPart();
FileEditorInput editorInput = new FileEditorInput(file2open);
EditorDescriptor editorDescriptor = null;
try {
   editorDescriptor = (EditorDescriptor)IDE.getEditorDescriptor(file2open);
} catch (PartInitException e) {
   e.printStackTrace();
}
WorkbenchPage workbrenchpage = (WorkbenchPage)   PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
EditorSite editorSite = new EditorSite(new EditorReference(workbrenchpage.getEditorManager(), editorInput, editorDescriptor), editorPart, workbrenchpage, editorDescriptor);
try {
 editorPart.init(editorSite, editorInput);
} catch (PartInitException e) {
 e.printStackTrace();
}
editorPart.createPartControl(mycomposite);

upd: наконец-то я реализовал то, что хотел, но не уверен, что кому-то еще это интересно :) 1033 *

Ответы [ 2 ]

1 голос
/ 21 апреля 2009

Нет, нет хорошего способа открыть редактор в программе просмотра GEF. Иметь ввиду: 1. «Редактор» - это концепция платформы Eclipse. То есть это не просто виджет, а целая инфраструктура. Как вы сказали - вам понадобится IEditorSite и так далее. 2. ГЭФ цифры "легкие". Вы, весь GraphicalViewer, представляете собой один SWT-виджет, и на нем нарисованы фигуры - они не поддерживают ОС-виджеты.

Так что, если вам действительно нужно вложить редактор в средство просмотра GEF, вам придется поместить композитный SWT поверх средства просмотра и управлять его размещением.

0 голосов
/ 12 января 2012
...