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>
Zde je příklad listeneru puštění, který využívá akci puštění, definovanou výše.<extension point=
"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 = ...//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.
Copyright (c) 2002, 2004 IBM Corporation a další.
Všechna práva vyhrazena.
Tento program a doprovodné materiály jsou zpřístupněny za podmínek licence Eclipse Public License
v1.0, která je součástí této distribuce a je k dispozici na adrese
http://www.eclipse.org/legal/epl-v10.html