Beschreibung: An diesem Erweiterungspunkt kann ein Übergabeverhalten zu Sichten hinzugefügt werden, die durch andere Plug-ins definiert werden.
Auf Grund der Schichtengestaltung in der Benutzerschnittstelle, die durch den Plug-in-Mechanismus vorgegeben ist, können Sichten häufig Inhalt und Gattung anderer Sichten nicht erkennen. Dies kann das Ziehen und Übergeben zwischen Plug-ins erschweren. Angenommen, Sie wollen eine Unterstützung für das Java-Refactoring entwickeln, bei der der Benutzer eine Methode aus der Inhaltsgliederung im Java-Editor in die Ressourcensicht "Navigator" ziehen kann. Da die Sicht "Navigator" keine Kenntnisse über Java-Inhalt hat, kann sie die Übergabe von Java-Methoden nicht verarbeiten. Ein ähnlicher Fall wäre die Übergabe des Inhalts aus Drittherstelleranwendungen in eine der Java-Anzeigefunktionen.
Zur Lösung dieses Problems stellt die Plattform den Erweiterungspunkt "org.eclipse.ui.dropActions" zur Verfügung. Dieser Mechanismus delegiert das Übergabeverhalten zurück an den Absender der Übergabeoperation. Dieses Verhalten ist in einer Aktion enthalten, die "org.eclipse.ui.part.IDropActionDelegate" implementieren muss. Die Anzeigefunktion, die die Quelle der Ziehoperation ist, muss den Übertragungstyp "org.eclipse.ui.part.PluginTransfer" unterstützen und ein Objekt "org.eclipse.ui.part.PluginTransferData" in das Ziehereignis stellen. Unter "org.eclipse.jface.viewers.StructuredViewer#addDragSupport" erfahren Sie mehr darüber, wie Sie einer Anzeigefunktion eine Unterstützung für Ziehaktionen hinzufügen können.
Konfigurationsbefehle:
<!ELEMENT dropContribution (action)*>
<!ELEMENT action*>
<!ATTLIST action
id
CDATA #REQUIRED
class CDATA #REQUIRED
>
Beispiele:
Im Folgenden ist ein Beispiel für eine Erweiterung durch eine Übergabeaktion dargestellt:
<extension point="org.eclipse.ui.dropActions">
<action>
id="my_drop_action"
class="com.xyz.eclipse.TestDropAction"
</action>
</extension>
Das folgende Beispiel stellt eine Listener-Funktion für Ziehereignisse dar, die die oben definierte Übergabeaktion verwendet:
class MyDragListener extends DragSourceAdapter {
public void dragSetData(DragSourceEvent event)
{
if (PluginTransfer.getInstance().isSupportedType(event.dataType))
{
byte[] dataToSend = ...//Zu sendende Daten eingeben.
event.data = new PluginTransferData(
"my_drop_action", dataToSend);
}
}
}
Ein komplettes Beispiel finden Sie im Plattformbeispiel für die Readme-Datei. Hier wird in "ReadmeDropActionDelegate" eine Übergabeaktion definiert und durch "ReadmeContentOutlineDragListener" verwendet.
API-Informationen: Der Wert des Attributs class muss der vollständig qualifizierte Name einer Java-Klasse sein, die org.eclipse.ui.part.IDropActionDelegate implementiert. Diese Klasse wird so spät wie möglich geladen, um ein Laden des Plug-ins zu verhindern, bevor es wirklich benötigt wird.
Bereitgestellte Implementierung: Die Workbench stellt keine Implementierung für diesen Erweiterungspunkt zur Verfügung. Plug-ins können diesen Erweiterungspunkt ergänzen und Übergabeverhalten für Sichten hinzufügen, die durch andere Plug-ins definiert werden.