Java Eclipse插件:将(外部)文件拖放到编辑器:未调用dropAccept

Java Eclipse插件:将(外部)文件拖放到编辑器:未调用dropAccept,java,eclipse,plugins,drag-and-drop,Java,Eclipse,Plugins,Drag And Drop,我正在开发一个eclipse插件,它基本上是一个logviewer 功能之一应该是将外部文件拖放到编辑器组件。收到该文件后,编辑器将用文件中的内容替换其内容 我已经创建了DropTargetAdapter,并使用了IDragAndDropService.addMergedDropTarget将其添加到编辑器StyledText。我的编辑器组件来自org.eclipse.ui.editors.text.TextEditor 在拖动过程中,我可以看到dragEnter/dragOver被调用。但我看

我正在开发一个eclipse插件,它基本上是一个logviewer

功能之一应该是将外部文件拖放到编辑器组件。收到该文件后,编辑器将用文件中的内容替换其内容

我已经创建了DropTargetAdapter,并使用了
IDragAndDropService.addMergedDropTarget
将其添加到编辑器
StyledText
。我的编辑器组件来自
org.eclipse.ui.editors.text.TextEditor

在拖动过程中,我可以看到dragEnter/dragOver被调用。但我看不到dropAccept或drop的名称

最大的问题是为什么

这是我当前的代码:

StyledText tw = getSourceViewer().getTextWidget();
int ops = DND.DROP_LINK | DND.DROP_MOVE | DND.DROP_COPY;
Transfer[] transfers = { FileTransfer.getInstance() };

DropTargetListener editorListener = new DropTargetAdapter() {

    @Override
    public void dragEnter(DropTargetEvent event) {
        System.out.println("dragEnter detail");
    }

    @Override
    public void dragLeave(DropTargetEvent event) {
        System.out.println("dragLeave");
    }

    @Override
    public void dragOperationChanged(DropTargetEvent event) {
        System.out.println("dragOperationChanged");
    }

    @Override
    public void dragOver(DropTargetEvent event) {
        System.out.println("dragOver");
    }

    @Override
    public void drop(DropTargetEvent event) {
        System.out.println("drop");
    }

    @Override
    public void dropAccept(DropTargetEvent event) {
        System.out.println("dropAccept");
        //TODO import the file
    }
};
IDragAndDropService dtSvc = getSite().getService(IDragAndDropService.class);
dtSvc.removeMergedDropTarget(tw);
dtSvc.addMergedDropTarget(tw, ops, transfers, editorListener);