Ihr Plug-in kann über den Erweiterungspunkt org.eclipse.debug.core.launchConfigurationTypes Startkonfigurationstypen zur Plattform hinzufügen. Über diesen Erweiterungspunkt können Sie einen Konfigurationstyp deklarieren, der eine eindeutige ID verwendet. Sie müssen eine geeignete Implementierung von ILaunchConfigurationDelegate in Ihrem Plug-in angeben. Außerdem können Sie angeben, welche Modi (Ausführen und/oder Debug) durch das Startprogramm unterstützt werden, sowie einen Namen definieren, der verwendet werden sollen, wenn Startprogramme dieses Typs für einen Benutzer angezeigt werden.
Die folgenden Befehle zeigen, wie die Java-Tools eine Java-Startkonfiguration zum Starten lokaler Java-Programme deklarieren:
<extension point = "org.eclipse.debug.core.launchConfigurationTypes"> <launchConfigurationType id="org.eclipse.jdt.launching.localJavaApplication" name="%localJavaApplication" delegate="org.eclipse.jdt.internal.launching.JavaLocalApplicationLaunchConfigurationDelegate" modes= "run, debug"> </launchConfigurationType> </extension>
Für jeden Startkonfigurationstyp, der den Debugmodus unterstützt, muss unbedingt eine Definition erstellt werden, mit deren Hilfe der Quellcode ermittelt werden kann, der dem aktuellen Erweiterungspunkt im Code entspricht. ISourceLocator und IPersistableSourceLocator definieren eine Schnittstelle, mit der ein ausgeführtes Programm zurück zum Quellcode zugeordnet werden kann.
Quellenlokatoren werden typischerweise implementiert, so dass sie mit einer entsprechenden Startkonfiguration und einem Startkonfigurationsstellvertreter funktionieren. Da Startkonfigurationen bestehen bleiben können, können Quellenlokatoren auch zusammen mit der Startkonfiguration gespeichert werden. Dies wird erreicht, indem ein Attribut der Startkonfiguration auf eine ID eines Quellenlokators gesetzt wird. Wenn eine Startkonfiguration von einem Datenträger gelesen wird, muss der Quellenlokator zurück zur Implementierungsklasse zugeordnet werden. Dies wird über den Erweiterungspunkt org.eclipse.debug.core.sourceLocators erreicht.
Mit dem Erweiterungspunkt können Sie Ihre Klasse registrieren, die IPersistableSourceLocator implementiert, und ihr eine ID zuordnen, die zusammen mit der Startkonfiguration gespeichert wird. Auf diese Weise kann das Debug-Plug-in bei der Suche nach Quellenlokatorklassen die ID als Suchkriterium verwenden, wenn eine Startkonfiguration als Exemplar erstellt werden soll.
Die folgenden Befehle stammen aus den Java-Tools:
<extension point = "org.eclipse.debug.core.sourceLocators"> <sourceLocator id = "org.eclipse.jdt.debug.ui.javaSourceLocator" class="org.eclipse.jdt.debug.ui.JavaUISourceLocator" name="%javaSourceLocator"/> </extension>
Plug-ins verwenden benannte Attribute und Werte, um wichtige Daten zusammen mit einer Startkonfiguration zu speichern. Da die Plattform die Interpretation keines einzigen Attributs kennt, wird ein Erweiterungspunkt bereitgestellt, über den ein Vergleichsoperator für ein bestimmtes Attribut zur Verfügung gestellt werden kann. Dieser Vergleichsoperator wird verwendet, um zu bestimmen, ob Attribute mit den angegebenen Namen gleich sind. In vielen Fällen genügt der einfache Vergleich von Zeichenfolgen, den java.lang.Object.equals(Object) bietet, um Attribute zu vergleichen. Diese Methode wird verwendet, wenn kein Vergleichsoperator angegeben wird. Es kann allerdings vorkommen, dass manche Attributswerte eine Sonderverarbeitung benötigen, z.B. eine Entfernung von Leerzeichen aus Texten, bevor diese auf Gleichheit verglichen werden.
Vergleichsoperatoren werden über den Erweiterungspunkt org.eclipse.debug.core.launchConfigurationComparators bereitgestellt.
Die Java-Tools bieten Vergleichsoperatoren für Startkonfigurationen, mit denen Quellenpfade und Klassenpfade von Programmen verglichen werden können.
<extension point = "org.eclipse.debug.core.launchConfigurationComparators"> <launchConfigurationComparator id = "org.eclipse.jdt.launching.classpathComparator" class = "org.eclipse.jdt.internal.launching.RuntimeClasspathEntryListComparator" attribute = "org.eclipse.jdt.launching.CLASSPATH"/> <launchConfigurationComparator id = "org.eclipse.jdt.launching.sourcepathComparator" class = "org.eclipse.jdt.internal.launching.RuntimeClasspathEntryListComparator" attribute = "org.eclipse.jdt.launching.SOURCE_PATH"/> </extension>