java создание Как отключить текстовый экран быстрого доступа в приложении Eclipse RCP



swt (4)

Ларс Фогель только что сообщил в своем блоге « Портирование приложения Eclipse 3.x RCP на Eclipse 4.4 - теперь без окна QuickAccess »:

Ошибка 411821 ([ QuickAccess ] Contribute SearchField через фрагмент или другие средства) теперь разрешена.
Благодаря René Brandstetter:

Если приложение RCP не предоставляет элемент QuickAccess в своей модели, он не будет виден. Значит, по умолчанию нет QuickAcces, достаточно легко? :)

См. Commit 839ee2 для получения более подробной информации.

Предоставьте « QuickAccess » через фрагмент модели приложения e4 внутри « org.eclipse.ui.ide.application ».
Это удаляет поле поиска « QuickAccess » из каждого none « org.eclipse.ui.ide.application ».

сегодня я изменил свою Eclipse IDE с 3.7 до 4.2, и мой плагин-проект имеет новую функцию в панели состояния пользовательского интерфейса QuickAccess. Но мне это не нужно, так как я могу отключить эту функцию, потому что положение панели кнопок изменилось ...


Answer #1

Перейти в раздел Справка -> Установить новое программное обеспечение https://raw.github.com/atlanto/eclipse-4.x-filler/master/pdt_tools.eclipse-4.x-filler.update/

Установите этот плагин и перезапустите Eclipse. Быстрый доступ автоматически скрывается. или у вас есть возможность скрыть окно -> Скрыть быстрый доступ.


Answer #2

Вы также можете скрыть его и сделать его работающим, сопоставимым с тем, как он работал в 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;
    }

}

Answer #3

Вот сообщение, которое показывает способ скрыть его с помощью CSS. Проверено с помощью Eclipse 4.3





rcp