Eclipse Plugin: Ereignisverarbeitung

Hallo,

ich bräuchte Hilfe in Bezug auf die zentrale Ereignisverarbeitung in Eclipse.

Ich möchte nämlich ein Plugin für Eclipse schreiben.
Bei einem Doppelklick auf einen Eintrag in einer (eigenen) View soll sich im (grafischen) Editor was tun.

Bitte um Ratschläge / Informationen jeder Art. Bücher habe ich auch schon gewälzt und im Internet geforscht… Bislang jedoch nichts Verwertbares bzw. Konkretes dabei gewesen.

Vielen Dank.

Gruß

Markus

hi,

schonmal versucht ein anderes plugin auseinander zu nehmen. viele sind doch open source?!

gruß
b.

Hallo Markus,

Ein recht gutes pdf-Dokument findest Du, wenn Du in Google suchst mit
„eclipse plugin-in propertypage“ („Contribution to Eclipse“ von Kent Beck und Erich Gamma). Das Dokument scheint unter dem Link noch nicht ganz vollständig zu sein, aber vollständig kostet es offensichtlich Geld.

Daneben gibts natürlich einige andere Dokus, die Du findest mit der Google-Suche nach „jdtprogrammers.pdf“, damit kommst Du z.B. nach
http://www.cs.ualberta.ca/~cellest/ftp/eclipse/

Und: downloade Dir am besten mal die eclipse-Examples von der Exclipse-Download-Seite und wirf ein Auge vor allem auf das plugin.xml.
Im plugin.xml werden die Extension-Points definiert, die der erste Einstieg in ein eigenes Plugin sind…

Viel Erfolg,
Claudia

Hallo Markus,

und nun noch etwas konkreter:

Die eigene View muß als Extension-Point im plugin.xml (Deines Plugins)definiert werden.

Ist in der View-Klasse z.B. ein Tree-Knoten Ausgangspunkt vom Doppelklick, dann muß auf dem TreeViewer-Objekt innerhalb der View ein DoubleClickListener registriert werden:

treeViewer.addDoubleClickListener(new IDoubleClickListener() {
public void doubleClick(DoubleClickEvent event) {
editKnoten((IStructuredSelection)event.getSelection());
}
});

Aus der Selection ermittelst Du dann z.B. den TreeNode, aus dem TreeNode die Infos für die dahinterliegende Ressource und öffnest dann den Editor z.B. folgendermaßen:

Object o = sel.getFirstElement();
if (o instanceof TreeNode) {

IWorkbenchWindow dw = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
final IWorkbenchPage page = dw.getActivePage();
// Run as UI Thread. Only execute code concerning UI here!
if (page != null)
Display.getDefault().asyncExec(new Runnable() {
public void run() {
try {
IFile file = (IFile)MyFileReader.getResource(lName);
if (file != null)
page.openEditor((IFile)MyFileReader.getResource(lName));
}
catch (PartInitException e) {
System.out.println("??");
}
}
});
}

Über die Ressource-File-Extension läßt sich im plugin.xml steuern, welcher Editor geöffnet werden soll (sonst: Preferences-Zuordnung oder Betriebssystem-Einstellung)

Die Knoten-Klasse muß org.eclipse.core.runtime.IAdaptable implementieren und in der View-Klasse registriert werden:

static void registerAdapters() {
IAdapterManager manager = Platform.getAdapterManager();
IAdapterFactory factory = new MyAdapterFactory();
manager.registerAdapters(factory, TreeNode.class);
}

Ich hoffe, ich habe nichts superwichtiges vergessen, das ganze ist streng systematisiert (siehe Doku aus meinem vorherigem Posting)

Gruß,
Claudia

Vielen Dank erstmal hierfür, Claudia!