【问题标题】:Eclipse RCP drop file from external explorer not accepted不接受来自外部资源管理器的 Eclipse RCP 放置文件
【发布时间】:2012-04-13 10:02:22
【问题描述】:

我有一个 Eclipse RCP 应用程序,它应该通过从 Windows 资源管理器中拖放来打开文件。所以我实现了这个:

public class ApplicationWorkbenchAdvisor extends WorkbenchAdvisor {

    @Override
    public WorkbenchWindowAdvisor createWorkbenchWindowAdvisor(IWorkbenchWindowConfigurer configurer) {
        configurer.addEditorAreaTransfer(FileTransfer.getInstance());
        configurer.configureEditorAreaDropListener(editorDropListener);
        return new ApplicationWorkbenchWindowAdvisor(configurer);
    }
[...]
}

editorDropListenerDropTargetAdapter 类型,并实现drop() 方法。

现在,如果我将文件从资源管理器拖到我的应用程序中,我会看到“Windows 不可用”鼠标图标,并且拖放不起作用。 editorDropListener.drop() 没有被调用。

如果我按下 CTRLALT 键拖动文件,我会看到“Windows 复制”鼠标图标。 drop 有效,editorDropListener.drop() 被成功调用。

在哪里可以配置,允许哪种drop?

【问题讨论】:

    标签: java drag-and-drop eclipse-rcp


    【解决方案1】:

    看来这个问题还没有从上面解决。我刚刚查找了DND的api并解决了这个问题,消除了Ctrl或Alt键。 Drag and Drop 我们只需要在 EditorAreaDropAdapter 中添加一些代码:

            @Override
    public void dragEnter(DropTargetEvent event) {
        // TODO Auto-generated method stub
        event.detail = DND.DROP_COPY;
        super.dragEnter(event);
    }
    

    event.detail 必须设置为 DND.DROP_COPY 才能被接受。

    【讨论】:

    • 感谢您的回复。不幸的是,我不再使用它了,所以我无法确认这是正确的答案。其他人能做到吗?
    【解决方案2】:

    比这稍微复杂一点,因为编辑器区域不接受 MOVE DND 请求。

    详情请查看org.eclipse.ui.internal.ide.EditorAreaDropAdapter

    【讨论】:

    • 谢谢。最后,我想区分是否按下 shift 或 ctrl 进行拖动。所以我总是最终找到将任何拖放事件硬编码为副本的实现,以使其与 Eclipse 一起工作。所以它是编辑器,我必须“配置”它以接受比复制更多的内容:)
    【解决方案3】:

    在您的侦听器中使用此代码。它会起作用的。

                    @Override
            public void dragEnter(final DropTargetEvent event) {
    
                if (event.detail == DND.DROP_DEFAULT) {
                    if ((event.operations & DND.DROP_COPY) != 0) {
                        event.detail = DND.DROP_COPY;
                    } else {
                        event.detail = DND.DROP_NONE;
                    }
                }
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-14
      • 2011-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-02
      相关资源
      最近更新 更多