På grund af lagdelingen af brugergrænsefladen, som er påtvunget af pluginmekanismen, er oversigter ofte ikke klar over indholdet og karakteren af andre oversigter. Dette kan gøre det svært at udføre Træk og placér-funktioner mellem plugins. Du kan f.eks. have behov for at levere understøttelse af Java-refactoring, hvor brugeren trækker en metode fra Java-editorens indholdsstruktur til en anden Java-fil i ressourcenavigatoren. Eftersom ressourcenavigatoren ikke ved noget om Java-indhold, ved den ikke, hvordan den skal reagere, når der placeres Java-metoder på den. Tilsvarende kan en ISV have behov for at placere noget af sit indhold i en af Java-fremviserne.
Udvidelsespunktet org.eclipse.ui.dropActions leveres af platformen, så du har mulighed for at håndtere disse situationer. Denne mekanisme delegerer placeringsfunktionsmåden tilbage til det sted, hvor indholdet kommer fra. Denne funktionsmåde findes i en funktion, der skal implementere org.eclipse.ui.part.IDropActionDelegate. Den fremviser, der er kilde til trækkefunktionen, skal understøtte overførselstypen org.eclipse.ui.part.PluginTransfer og placere et PluginTransferData-objekt i trækkeaktiviteten. Under org.eclipse.jface.viewers.StructuredViewer#addDragSupport kan du se, hvordan du tilføjer trækkeunderstøttelse til en fremviser.
<!ELEMENT extension (action*)>
<!ATTLIST-udvidelse
point CDATA #REQUIRED
id CDATA #IMPLIED
navn CDATA #IMPLIED>
<!ELEMENT action EMPTY>
<!ATTLIST action
id CDATA #REQUIRED
class CDATA #REQUIRED>
Her er et eksempel på en trækkelytter, der anvender den placeringsfunktion, som er defineret ovenfor.<udvidelsespunkt=
"org.eclipse.ui.dropActions"
>
<action id=
"my_drop_action"
class=
"com.xyz.eclipse.TestDropAction"
>
</action>
</extension>
class MyDragListener extends DragSourceAdapter { public void dragSetData(DragSourceEvent event) { if (PluginTransfer.getInstance().isSupportedType(event.dataType)) { byte[] dataToSend = ...//enter the data to be sent. event.data = new PluginTransferData( "my_drop_action", dataToSend); } } }Du finder et mere detaljeret eksempel i readme-filen til platformen. I dette eksempel er der defineret en placeringsfunktion i ReadmeDropActionDelegate, og den bruges af ReadmeContentOutlineDragListener.
Copyright (c) 2002, 2004 IBM Corporation and others.
All rights reserved. This program and the accompanying materials are made
available under the terms of the Eclipse Public License v1.0 which accompanies
this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html