处理Eclipse Package Explorer中的文件拖放

我正在尝试创建一个
Eclipse插件来支持专有的项目文件格式.我的目标是能够将Project Explorer中的文件(任何类型的文件)拖放到I支持的类型的文件上,并将拖动的文件的名称附加到专有文件的末尾.

现在,我有一个自定义编辑器,可以以可管理的方式从现有文件中解析出一些数据.这意味着我有一个与文件类型相关联的编辑器,这样我的特殊图标就会显示在它旁边.我不知道这是否相关.

我正在尝试使用扩展点“org.eclipse.ui.dropActions”,但我不确定如何注册我的DropActionDelegate(实现org.eclipse.ui.part.IDropActionDelegate),以便在文件时调用它在Project Explorer中被删除到我的一个类型.

有人有什么想法吗?我是否与DropActionDelegate走在正确的轨道上?

最佳答案 您正在实施
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的目的是为您自己未定义的视图(如Project Explorer)提供放置行为.

你注册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) {
}

}
点赞