Java Reference
In-Depth Information
die Methode der von diesen Objekten implementierten Schnittstelle Function aufgerufen
wird.
Im Folgenden schauen wir uns den Programmcode unseres ersten Eclipse-Plugins an. Wir
beginnen mit der Schnittstelle Function (s. Listing 10.1). Diese hat eine einzige Methode
namens compute. Als Parameter wird ihr der aktuelle Wert des Zählers übergeben. Die
Methode soll einen neuen Wert für den Zähler berechnen und diesen zurückgeben.
Listing 10.1 Schnittstelle Function
package javacomp.eclipse.plugin1;
public interface Function
{
public int compute(int x);
}
Weiterhin beinhaltet unser Plugin eine Zählerklasse Counter mit einem Attribut des Typs
int sowie den Methoden get und set zum Auslesen bzw. zum Setzen des Attributs. Das Lis-
ting dazu erspare ich Ihnen.
Die interessanteste Klasse des ersten Beispiel-Plugins ist die Einstiegsklasse CounterView
(s. Listing 10.2). Sie ist aus ViewPart abgeleitet und muss die Methoden createPartControl
zur Initialisierung sowie die Methode setFocus implementieren. Der selbst defi nierte Erwei-
terungspunkt hat den Namen „CounterView.functions“. Das kommt daher, dass wir unse-
rem Plugin den Namen CounterView und dem Erweiterungspunkt den Namen functions
gegeben haben. Dies erfüllt nicht die Konvention, wonach die Namen von Erweiterungs-
punkten so gewählt werden sollen, dass sie mit großer Wahrscheinlichkeit eindeutig sind
(in unserem Fall sollte also eher ein Name gewhlt werden, der mit „de.hochschule_trier.
javacomp“ beginnen könnte). Da wir aber nur ein Demo-Beispiel implementieren, genügt
der gewählte Name. Der Name des Erweiterungspunkts ist als Konstante in der Klasse
CounterView defi niert. Die Klasse muss den Namen kennen, um in der ExtensionRegistry
die Informationen zu allen Nutzungen dieses Erweiterungspunkts abzufragen. Ferner sollte
man wissen, dass Plugins, die den Erweiterungspunkt „CounterView.functions“ nutzen,
einen Namen für ihre Funktion durch „name“ und einen Klassennamen einer Function
implementierenden Klasse durch „class“ angeben müssen. Um die Informationen dazu
abzufragen, gibt es zwei String-Konstanten für „name“ und „class“.
Listing 10.2 Klasse CounterView
package javacomp.eclipse.plugin1;
import org.eclipse.core.runtime.*;
import org.eclipse.swt.widgets.*;
import org.eclipse.ui.part.*;
import org.eclipse.ui.*;
public class CounterView extends ViewPart
{
private static final String EXTENSION_POINT =
"CounterView.functions";
private static final String FUNCTION_NAME_ATTRIBUTE = "name";
private static final String CLASS_ATTRIBUTE = "class";
 
Search WWH ::




Custom Search