要實現在正確的軌道上IDropActionDelegate:
class DropActionDelegate implements IDropActionDelegate {
@Override
public boolean run(Object source, Object target) {
String transferredData (String) target; // whatever type is needed
return true; // if drop successful
}
}
擴展點org.eclipse.ui.dropActions
是提供拖放行爲到你沒有自己定義(如項目資源管理器)的意見的目的。
您註冊drop action extension這樣的:
<extension point="org.eclipse.ui.dropActions">
<action
id="my_drop_action"
class="com.xyz.DropActionDelegate">
</action>
</extension>
不要忘了適當的監聽器連接到你的編輯器在你的插件代碼:
class DragListener implements DragSourceListener {
@Override
public void dragStart(DragSourceEvent event) {
}
@Override
public void dragSetData(DragSourceEvent event) {
PluginTransferData p;
p = new PluginTransferData(
"my_drop_action", // must be id of registered drop action
"some_data" // may be of arbitrary type
);
event.data = p;
}
@Override
public void dragFinished(DragSourceEvent event) {
}
}
我早已拋棄了這個特定的項目,但是謝謝你的回答。它看起來很完整,很容易遵循,所以我會給你帶來懷疑的好處! :) – 2012-03-15 21:42:53