命令进入同级SWT控制

问题描述 投票:0回答:1

对于Bndtools,我创建了PackageExplorerPart的子类,并添加了(非常有用的)搜索Text控件。

但是,当选择/聚焦文本控件时,粘贴的内容将进入TreeView并创建一个片段项目,这很烦人。

我调试了代码,但只能发现PASTE Command处理程序总是转到TreeView而不是焦点控件。不幸的是,我找不到此配置。我试图了解文档,但不知道在哪里查找。

所以基本上我需要知道如何确保我的Text组件始终是PASTE处理程序的目标。

Demo of search field

eclipse swt key-bindings e4
1个回答
0
投票

Eclipse中的任何工作台部件都有机会通过IViewSiteIEditorSite getActionBars()方法注册全局动作处理程序。如果将另一个部分作为子类,则需要确保在超类注册其处理程序之后,可以使用自己的处理程序重新分配希望执行的任何操作。

因此,在您的情况下,当您要将“粘贴”重定向到您的Text控件时,可以执行以下操作:

IActionBars actionBars = getViewSite().getActionBars();

IAction originalPaste = actionBars.getGlobalActionHandler(ActionFactory.PASTE.getId());

actionBars.setGlobalActionHandler(ActionFactory.PASTE.getId(), new Action() {
    @Override
    public void runWithEvent(Event event) {
        Text filterText = filterPart.getFilterControl();
        if (Objects.equals(event.widget, filterText)) {
            filterText.paste();
        } else {
            originalPaste.runWithEvent(event);
        }
    }
});
© www.soinside.com 2019 - 2024. All rights reserved.