【问题标题】:Handling drag and drop of files inside Eclipse Package Explorer在 Eclipse 包资源管理器中处理文件的拖放
【发布时间】:2011-02-04 00:02:16
【问题描述】:

我正在尝试创建一个 Eclipse 插件来支持专有项目文件格式。我的目标是能够在项目资源管理器中拖放一个文件(任何类型的文件)我支持的类型的文件,并将被拖动文件的名称附加到专有文件的结尾。

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

我正在尝试使用扩展点“org.eclipse.ui.dropActions”,但我不确定如何注册我的 DropActionDelegate(实现 org.eclipse.ui.part.IDropActionDelegate)以便调用它当一个文件被放到我的类型之一上时在项目资源管理器中

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

【问题讨论】:

    标签: eclipse eclipse-plugin drag-and-drop eclipse-pde


    【解决方案1】:

    您在实施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) {
    }
    
    }
    

    【讨论】:

    • 我早就放弃了这个特定的项目,但感谢您的回答。它看起来很完整并且很容易理解,所以我要给你怀疑的好处! :)
    • 好的,太好了,感谢您的审阅!...我在一个具有类似要求的项目中工作并以这种方式实现它。决定在某处记录该方法,这似乎是一个好地方:)
    猜你喜欢
    • 1970-01-01
    • 2011-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多