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 に答える
1

これは、CSS で非表示にする方法を示す投稿です。Eclipse 4.3 で検証済み

于 2014-03-01T02:59:19.033 に答える
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 に答える