处理Eclipse Package Explorer中文件的拖放

4
我正在尝试创建一个Eclipse插件来支持一种专有的项目文件格式。我的目标是能够将任何类型的文件拖放到我支持的文件类型上,并将被拖动的文件名附加到专有文件的末尾。
现在,我有一个自定义编辑器,可以以可管理的方式从现有文件中解析出一些数据。这意味着我有一个与该文件类型相关联的编辑器,使得我的特殊图标显示在其旁边。我不知道那是否相关。
我试图使用扩展点“org.eclipse.ui.dropActions”,但我不确定如何注册我的DropActionDelegate(实现org.eclipse.ui.part.IDropActionDelegate),以便在一个我的类型内从Project Explorer中拖放文件时调用它。
有人有什么想法吗?我在DropActionDelegate方面走对了吗?
1个回答

2

您正在正确地实现一个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的目的是为视图提供拖放行为,这些视图不是由您自己定义的(如项目资源管理器)。
您可以像这样注册拖放操作扩展
<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) {
}

}

1
我早已放弃了这个特定的项目,但感谢您的回答。它看起来很完整,易于理解,所以我会相信你的! :) - Jon O
好的,很好,谢谢您的审阅!我曾经在一个类似要求的项目上工作,并以这种方式实现了它。决定在某个地方记录这种方法,而这似乎是一个不错的地方 :) - mtsz
更新IDropActionDelegate文档链接 - Max Hohenegger

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接