Factory-Dienstprogramme für Elemente

org.eclipse.ui.elementFactories

An diesem Erweiterungspunkt können Elementfactories zur Workbench hinzugefügt werden. Eine Elementfactory wird verwendet, um Objekte IAdaptable erneut zu erstellen, die auch nach einer Beendigung der Workbench bestehen bleiben.

Eine Elementfactory wird beispielsweise verwendet, damit die Editoreingabe bestehen bleibt. Die Eingabe für einen Editor muss org.eclipse.ui.EditorInput implementieren. Der Lebenszyklus eines Objekts IEditorInput in einem Editor besteht aus mehreren Phasen.

  1. Die erste Eingabe für einen Editor wird während der Erstellung des Editors übergeben.
  2. Bei der Beendigung wird der Workbenchstatus erfasst. In diesem Prozess erstellt die Workbench für jeden Editor und dessen Eingabe ein Erinnerungselement ("Memento"). Die Eingabe wird als zweiteiliges Erinnerungselement gespeichert, das eine Factory-ID und alle Basiselementdaten enthält, die zum erneuten Erstellen des Objekts beim Starten der Workbench benötigt werden. Weitere Informationen finden Sie in der Dokumentation zu org.eclipse.ui.IPersistableElement.
  3. Beim Starten wird der Workbenchstatus gelesen, und die Editoren aus der vorherigen Sitzung werden erneut erstellt. In diesem Prozess erstellt die Workbench das Eingabeelement für jeden geöffneten Editor erneut. Hierzu wird die Originalfactory-ID für das Eingabeelement zu einer konkreten Factoryklasse zugeordnet, die in der Registrierung definiert ist. Falls eine Zuordnung vorliegt und die Factoryklasse gültig ist, wird ein Exemplar der Factoryklasse erstellt. Anschließend fordert die Workbench von der Factory die erneute Erstellung des Originalelements aus den übrigen Basiselementdaten im Erinnerungselement an. Das resultierende Objekt IAdaptable wird per Umsetzungsausdruck in ein Objekt IEditorInput umgewandelt und an den neuen Editor übergeben.

<!ELEMENT extension (factory*)>

<!ATTLIST extension

point CDATA #REQUIRED

id    CDATA #IMPLIED

name  CDATA #IMPLIED>


<!ELEMENT factory EMPTY>

<!ATTLIST factory

id    CDATA #REQUIRED

class CDATA #REQUIRED>


Das folgende Beispiel ist eine Erweiterung für ein Factory-Dienstprogramm für Elemente:

   

<extension point =

"org.eclipse.ui.elementFactories"

>

<factory id =

"com.xyz.ElementFactory"

class=

"com.xyz.ElementFactory"

>

</factory>

</extension>

Der Wert des Attributs class muss der vollständig qualifizierte Name einer Klasse sein, die org.eclipse.ui.IElementFactory implementiert. Ein Exemplar dieser Klasse muss aus einem Workbench-Memento ein Objekt IAdaptable erstellen.

Die Workbench stellt eine Factory für IResource zur Verfügung. Zusätzliche Factories sollten hinzugefügt werden, um andere Typen von IAdaptable, die häufig in anderen Objektmodellen (z. B. dem Java-Modell) verwendet werden, erneut zu erstellen.