2

今天我将 Eclipse IDE 从 3.7 更改为 4.2,并且我的插件项目在 UI 的状态栏中有一个名为 QuickAccess 的新功能。但我不需要它,所以我怎么能禁用这个功能,因为我的按钮栏的位置已经改变了......

4

5 回答 5

4

对于所有有同样问题的人,似乎这个新功能是硬编码的,不能被禁用:/ https://bugs.eclipse.org/bugs/show_bug.cgi?id=362420

于 2012-07-09T12:12:31.347 回答
3

转到帮助-> 安装新软件 https://raw.github.com/atlanto/eclipse-4.x-filler/master/pdt_tools.eclipse-4.x-filler.update/

安装该插件并重新启动 Eclipse。快速访问自动隐藏。否则您可以选择隐藏窗口 --> 隐藏快速访问。

于 2014-01-08T04:20:39.933 回答
1

这是一篇文章,展示了一种使用 CSS 隐藏它的方法。使用 Eclipse 4.3 验证

于 2014-03-01T02:59:19.033 回答
0

Lars Vogel刚刚在他的博客文章“将 Eclipse 3.x RCP 应用程序移植到 Eclipse 4.4 – 现在没有 QuickAccess 框”中报告了:

错误 411821([ ]通过片段或其他方式QuickAccess贡献SearchField) 现已解决。
感谢 René Brandstetter:

如果 RCP 应用程序未在其模型中提供 QuickAccess 元素,则它将不可见。所以默认是没有 QuickAcces,够简单吗?:)

有关更多详细信息,请参阅提交 839ee2

通过“ QuickAccess”内的 e4 应用程序模型片段提供“ org.eclipse.ui.ide.application”。
这会从每个“无”中删除“ QuickAccess”搜索字段org.eclipse.ui.ide.application

于 2014-01-20T22:00:42.740 回答
0

您也可以隐藏它并使其工作方式与它在 Eclipse3.7 中的工作方式相当:当用户按下 ctrl+3 时,快速访问功能会弹出(在 Eclipse4.3 中,ctrl+3 快捷方式仍然可用)。

您可以添加到 WorkbenchWindowAdvisor 实现中的代码示例(适用于 Eclipse4.3 rcp 应用程序)

private IHandlerActivation quickAccessHandlerActivation;

@Override
public void postWindowOpen() {
    hideQuickAccess();
}

private void hideQuickAccess() {
    IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
    setQuickAccessVisible(window, false);

    final IHandlerService service = (IHandlerService) window.getService(IHandlerService.class);
    quickAccessHandlerActivation = service.activateHandler(QUICK_ACCESS_COMMAND_ID, new CustomQuickAccessHandler());
}

private void setQuickAccessVisible(IWorkbenchWindow window, boolean visible) {
    if (window instanceof WorkbenchWindow) {
        MTrimBar topTrim = ((WorkbenchWindow) window).getTopTrim();

        for (MTrimElement element : topTrim.getChildren()) {
            if (QUICK_ACCESS_ELEMENT_ID.equals(element.getElementId())) {
                element.setVisible(visible);
                if (visible) {
                    Composite control = (Composite) element.getWidget();
                    control.getChildren()[0].addFocusListener(new QuickAccessFocusListener());
                }
                break;
            }
        }
    }
}

private class QuickAccessFocusListener implements FocusListener {

    @Override
    public void focusGained(FocusEvent e) {
        //not interested
    }

    @Override
    public void focusLost(FocusEvent e) {
        ((Control) e.widget).removeFocusListener(this);
        hideQuickAccess();
    }

}

private class CustomQuickAccessHandler extends AbstractHandler {
    @Override
    public Object execute(ExecutionEvent event) throws ExecutionException {
        IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
        final IHandlerService service = (IHandlerService) window.getService(IHandlerService.class);
        setQuickAccessVisible(window, true);
        if (quickAccessHandlerActivation != null) {
            service.deactivateHandler(quickAccessHandlerActivation);

            try {
                return service.executeCommand(QUICK_ACCESS_COMMAND_ID, null);
            } catch (NotDefinedException e) {

            } catch (NotEnabledException e) {

            } catch (NotHandledException e) {

            }
        }

        return null;
    }

}
于 2014-05-09T07:03:46.150 回答