Elementfactory's

org.eclipse.ui.elementFactories

Dit extensiepunt wordt gebruikt om elementfactory's toe te voegen aan de workbench. Een elementfactory wordt gebruikt om IAdaptable-objecten opnieuw te maken die zijn bevroren tijdens het afsluiten van de workbench.

Er wordt bijvoorbeeld een elementfactory gebruikt om de editorinvoer te bevriezen. De invoer van een editor moet org.eclipse.ui.EditorInput implementeren. De levenscyclus van de IEditorInput in een editor bestaat uit een aantal fasen.

  1. De begininvoer van een editor wordt doorgegeven tijdens het maken van de editor.
  2. Bij het afsluiten wordt de status van de workbench vastgelegd. Tijdens dit proces maakt de workbench een memento voor iedere open editor en de invoer daarvan. De invoer wordt opgeslagen als tweedelig memento met een factory-ID en de vereiste gegevens voor het maken van een element tijdens het opstarten. Raadpleeg de documentatie van org.eclipse.ui.IPersistableElement voor verdere informatie.
  3. Bij het opstarten wordt de status van de workbench gelezen en worden de editors uit de vorige sessie opnieuw gemaakt. Tijdens dit proces maakt de workbench een invoerelement voor iedere open editor. Om dit te doen wijst de workbench het oorspronkelijke factory-ID voor het invoerelement toe aan een concrete factoryklasse die in het register is gedefinieerd. Als er een toewijzing bestaat en de factoryklasse geldig is, wordt een instance van de factoryklasse gemaakt. De workbench vraagt de factory vervolgens om het originele element opnieuw te maken uit de resterende basisgegevens in het memento. De resulterende IAdaptable wordt gecast naar een IEditorInput en doorgestuurd naar de nieuwe editor.

<!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>


Een voorbeeld van een elementfactory-extensie:

   

<extension point =

"org.eclipse.ui.elementFactories"

>

<factory id =

"com.xyz.ElementFactory"

class=

"com.xyz.ElementFactory"

>

</factory>

</extension>

Het kenmerk class moet de volledig gekwalificeerde naam zijn van de klasse die org.eclipse.ui.IElementFactory implementeert. Een instance van deze klasse moet een IAdaptable-object maken uit een workbenchmemento.

De workbench biedt een IResource-factory. Er moeten aanvullende factory's worden toegevoegd om andere IAdaptable-typen te maken die in andere objectmodellen gevonden kunnen worden, bijvoorbeeld het Java-model.