Placeringsfunktioner

org.eclipse.ui.dropActions

Dette udvidelsespunkt bruges til at tilføje placeringsfunktionalitet til oversigter, der er defineret af andre plugins.

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å et udvidelsespunkt til en placeringsfunktion:

    

<udvidelsespunkt=

"org.eclipse.ui.dropActions"

>

<action id=

"my_drop_action"

class=

"com.xyz.eclipse.TestDropAction"

>

</action>

</extension>

Her er et eksempel på en trækkelytter, der anvender den placeringsfunktion, som er defineret ovenfor.

 
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.

Værdien af klasseattributten skal være et fuldstændigt navn på en Java-klasse, der implementerer org.eclipse.ui.part.IDropActionDelegate. Denne klasse indlæses så sent som muligt for at undgå indlæsning af hele plugin'en, inden der er reelt behov for den.

Arbejdsbænken indeholder ikke en implementering til dette udvidelsespunkt. Plugins kan bidrage til dette udvidelsespunkt for at tilføje placeringsfunktionalitet til oversigter, der er defineret af andre plugins.