Akce při puštění

org.eclipse.ui.dropActions

Tento bod rozšíření se používá k přidání možnosti puštění do pohledů definovaných jinými moduly plug-in.

Vzhledem k vrstvení uživatelského rozhraní, stanovenému mechanizmem modulu plug-in, si pohledy často nejsou vědomy obsahu a povahy jiných pohledů. To může způsobit obtíže při operacích typu táhnout a pustit, mezi moduly plug-in. Například si může někdo přát poskytnout podporu opětovné deklarace v jazyku Java, kdy uživatel přetáhne metodu z prohlížeče osnovy obsahu editoru Java do jiného souboru Java v navigátoru prostředků. Protože navigátor prostředků neví nic o obsahu Java, neví, jak se chovat, když jsou do něj metody Java puštěny. Podobně, nezávislý dodavatel softwaru může chtít pustit část svého obsahu do jednoho z prohlížečů prostředí Java.

Pro zvládnutí těchto situací platforma poskytuje bod rozšíření org.eclipse.ui.dropActions. Tento mechanizmus deleguje operaci puštění zpět na původce operace přetažení. Tato operace je obsažena v akci, která musí implementovat org.eclipse.ui.part.IDropActionDelegate. Prohlížeč, který je zdrojem operace přetažení, musí podporovat typ přenosu the org.eclipse.ui.part.PluginTransfer a umístit objekt PluginTransferData do události přetažení. Další informace k přidání podpory přetažení do prohlížeče najdete v org.eclipse.jface.viewers.StructuredViewer#addDragSupport.

<!ELEMENT extension (action*)>

<!ATTLIST extension

point CDATA #REQUIRED

id    CDATA #IMPLIED

name  CDATA #IMPLIED>


<!ELEMENT action EMPTY>

<!ATTLIST action

id    CDATA #REQUIRED

class CDATA #REQUIRED>


V následujícím je uveden příklad rozšíření akce puštění:

    

<extension point=

"org.eclipse.ui.dropActions"

>

<action id=

"my_drop_action"

class=

"com.xyz.eclipse.TestDropAction"

>

</action>

</extension>

Zde je příklad listeneru puštění, který využívá akci puštění, definovanou výše.

 
class MyDragListener extends DragSourceAdapter { 
    public void dragSetData(DragSourceEvent event) { 
        if (PluginTransfer.getInstance().isSupportedType(event.dataType)) { 
            byte[] dataToSend = ...//zadat data, která mají být odeslána.
            event.data = new PluginTransferData( 
                "my_drop_action", dataToSend); 
        } 
    } 
} 

Podrobnější příklad je uveden v příkladu README platformy. V tomto příkladu je akce puštění definována v ReadmeDropActionDelegate a používá ji ReadmeContentOutlineDragListener.

Hodnota atributu třídy musí být plně kvalifikovaný název třídy Java, kterou implementuje org.eclipse.ui.part.IDropActionDelegate. Tato třída je zavedena co nejpozději, aby nedošlo k zavedení celého modulu plug-in předtím, než je skutečně zapotřebí.

Pracovní plocha neposkytuje implementaci pro tento bod rozšíření. Moduly plug-in mohou přispívat tomuto bodu rozšíření, pro přidání operace puštění do pohledů definovaných jinými moduly plug-in.