2009-04-21 11 views
1

Mein Name ist Oleg, ich schreibe erweiterte Funktion - visuellen Vergleich von BPEL-Dateien. Ich möchte reguläre Editoren in "compare" -Fenster (links und rechts) verwenden Als ersten Schritt möchte ich nur zwei Editoren (einen für jede Datei) öffnen Später kann ich sie ein wenig "hacken", neue Teile machen grün, gelöscht Teile rot etc ...GEF - Wie Editor in Composite geöffnet?

Also mein Problem recht einfach klingt ich habe: - Verbund - Ressource, die .bpel Datei beschreibt Und ich muss in diesem Verbund für diese Ressource Standard-Editor zu öffnen.

Ich würde mich über irgendwelche Tipps oder Vorschläge freuen!

Was habe ich versucht:

ich paar Tage verbracht haben versucht GEF zu tiefer zu verstehen, aber immerhin habe ich keine einfache Lösung für mein einfaches Problem gefunden.

aus einem anderen Projekt Menschen verwendet:

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

aber mein Redakteur ist GEF-basierte, nicht GMF-basiert.

Soweit es verstand ich nicht in zusammengesetzten gerade geöffneten Editor kann ich eine Menge von „extra“ Zeug verwenden - EditorManager, Workbrenchs, einige Websites etc. etc.

Schließlich schrieb ich einige einfache Code, aber es funktioniert nicht . Wahrscheinlich habe ich es absolut falsch geschrieben, aber lassen Sie mich zitieren, nur um klar zu machen, was ich eigentlich brauche.

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: schließlich habe ich realisiert, was ich wollte, aber nicht sicher, ob jemand anderes interessiert :)

+0

Hey, ich möchte wissen, wie Sie es zum Laufen bringen verwaltet. Ich versuche gerade etwas Ähnliches und ich denke, dass dein Weg mir helfen könnte. – MatF

+0

@MatF überprüfen Sie diesen Screenshot http://www.picamatic.com/view/3436443_bpelcompare/ Quellcode: http://dl.dropbox.com/u/49126809/org.eclipse.emf.compare.ui.gef.zip – javapowered

+0

Danke, aber leider enthält die Zip nur leere Ordner? – MatF

Antwort

1

Nein, es gibt keine gute Möglichkeit, Editor in GEF-Viewer zu öffnen. Denken Sie daran: 1. "Editor" ist Eclipse-Plattform-Konzept. I.e. Es ist nicht nur ein Widget, sondern eine ganze Infrastruktur. Wie du gesagt hast - du brauchst IEditorSite und so weiter. 2. GEF-Figuren sind "leicht". Ihr ganzer GraphicalViewer ist ein einzelnes SWT-Widget und es werden Zahlen darauf gezeichnet - sie haben keine OS-Widgets, die sie unterstützen.

Wenn Sie also einen Editor im GEF-Viewer verschachteln müssen, müssen Sie das SWT-Composite auf den Viewer legen und dessen Platzierung verwalten.

+0

Danke! Ich habe eine Klasse gefunden, die den Nest-Editor in View erlaubt. Es ist hier: http://demo.spars.info/j/frameset.cgi?compo_id=223919&mode=frameset&ref=3&method=81&CASE=0&MORPHO=1&location=1111111111111111111&LANG=1 Aber ich muss Editor in Composite ... verschachteln Wahrscheinlich kann ich irgendwie eine Ansicht in meinem Composite erstellen und dann diese Klasse verwenden. Was denken Sie? – javapowered

+0

Eigentlich ... Ich brauche keinen kompletten Editor. Ich brauche nur ein Bild der gegebenen Ressource. I.e. Ich habe - Ressource (oder EditorInput) - Editor ID - Composite Und ich muss ein Bild von dieser Ressource in diesem Composite schreiben. Ich brauche keinen vollständigen Editor, nur ein Bild für den Benutzer. Wahrscheinlich ist das einfacher Aufgabe ... – javapowered

Verwandte Themen