Как отключить Quick Access TextField в приложении Eclipse RCP
Сегодня я изменил мою Eclipse IDE с 3.7 на 4.2, и у моего плагина-проекта появилась новая функция в строке состояния пользовательского интерфейса, называемая QuickAccess. Но мне это не нужно, так как я могу отключить эту функцию, потому что позиция моей панели кнопок изменилась...
5 ответов
Перейдите в Справка -> Установить новое программное обеспечение https://raw.github.com/atlanto/eclipse-4.x-filler/master/pdt_tools.eclipse-4.x-filler.update/
Установите этот плагин и перезапустите Eclipse. Быстрый доступ автоматически скрывается. или же у вас есть возможность скрыть Окно -> Скрыть быстрый доступ.
Всем, у кого такая же проблема, кажется, что эта новая функция жестко запрограммирована и не может быть отключена: / https://bugs.eclipse.org/bugs/show_bug.cgi?id=362420
Ларс Фогель только что сообщил в своем блоге " Перенос приложения RCP Eclipse 3.x на Eclipse 4.4 - теперь без коробки QuickAccess ":
Ошибка 411821 ([ QuickAccess
] Делать вклад SearchField
через фрагмент или другие средства) теперь решено.
Благодаря Рене Брандштеттер:
Если приложение RCP не предоставляет элемент QuickAccess в своей модели, он не будет виден. Значит по умолчанию нет QuickAcces, достаточно просто?:)
Смотрите коммит 839ee2 для более подробной информации.
Обеспечить "
QuickAccess
"через фрагмент модели приложения e4 внутри"org.eclipse.ui.ide.application
".
Это удаляетQuickAccess
"поле поиска от каждого нет"org.eclipse.ui.ide.application
".
Вот пост, который показывает способ скрыть это с помощью CSS. Проверено с Eclipse 4.3
Вы также можете скрыть это и заставить его работать сравнимо с тем, как он работал в Eclipse3.7: когда пользователь нажимает функциональность быстрого доступа ctrl+3 (в Eclipse4.3 по-прежнему доступен ярлык ctrl+3).
Пример кода, который вы можете добавить в свою реализацию WorkbenchWindowAdvisor (для приложения Rcl Eclipse4.3)
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;
}
}