как программно открыть диалоговое окно типа поиска в eclipse

Я хочу программно открыть диалоговое окно «Ctrl-Shift-T» (найти тип) в подключаемом модуле eclipse. Я попробовал FilteredItemsSelectionDialog и ResourceListSelectionDialog, но как мне получить все типы в рабочей области?

Спасибо, Идо.


person Ido    schedule 02.08.2009    source источник
comment
вы действительно хотите открыть диалоговое окно или напрямую получить все результаты?   -  person Rich Seller    schedule 02.08.2009
comment
Я хочу открыть диалоговое окно, позволить пользователю выбрать тип, который он хочет, и после того, как он выберет, я хочу получить результат в виде строки с полным именем. кажется, что OpenTypeSelectionDialog выполняет свою работу, но это не рекомендуется.   -  person Ido    schedule 02.08.2009


Ответы (1)


Посмотрите на org.eclipse.jdt.internal.ui.actions.OpenTypeAction, как это обрабатывается Eclipse. Ключевая часть заключается в следующем:

SelectionDialog dialog= new OpenTypeSelectionDialog(parent, true,
    PlatformUI.getWorkbench().getProgressService(), null, 
    IJavaSearchConstants.TYPE);
dialog.setTitle(JavaUIMessages.OpenTypeAction_dialogTitle);
dialog.setMessage(JavaUIMessages.OpenTypeAction_dialogMessage);

int result= dialog.open();

Где parent — это составной элемент, для которого вы хотите открыть диалоговое окно. Обычно активная оболочка верстака получается:

Shell parent= JavaPlugin.getActiveWorkbenchShell();

OpenTypeSelectionDialog находится во внутреннем пакете, поэтому вы получите предупреждение «Не рекомендуется доступ». Пока вы знаете о рисках, я бы рекомендовал использовать этот тип. "Discourated" является предупреждением, а не ошибкой, и на практике Eclipse вводит OpenTypeSelectionDialog2, а не изменяет текущие подписи. Платформа Eclipse и основные продукты стараются максимально поддерживать совместимость для поощрения инноваций (см. doc.user/concepts/concept-access-rules.htm" rel="nofollow noreferrer">policy в вики). В общем, при нежелательном доступе имеет смысл защитить остальную часть кода от изменений API с помощью помощника. Это означает, что у вас есть единственная точка, которую вам придется изменить, если изменится ссылочный тип.

В качестве альтернативы вы можете реализовать диалог и его родителя самостоятельно, но родитель, FilteredTypesSelectionDialog, имеет более 20 внутренних ссылок, что усугубит проблему.

person Rich Seller    schedule 02.08.2009
comment
Кажется, что OpenTypeSelectionDialog не рекомендуется. Что это значит? - person Ido; 02.08.2009
comment
Вы получаете предупреждение о нежелательном доступе всякий раз, когда ссылаетесь на тип в пакете, который не является частью API, обычно это *.internal пакеты. Нежелательный доступ — это показатель того, что вам следует искать альтернативу API, если это возможно. Имейте в виду, что вы можете быть уязвимы для изменений в более поздних версиях Eclipse. Подробнее см. help.eclipse.org/galileo/index.jsp. - person Rich Seller; 02.08.2009
comment
Привет, когда я его использовал, я добавил зависимость к плагину jdt. Я использую Galileo для разработки. Когда я установил его для клиентов, использующих Ganymede, он не работал. Как я должен настроить его для поддержки? - person Ido; 19.08.2009
comment
Большое спасибо за комментарий, home4film. Однако вы, вероятно, хотели вставить ссылку: help.eclipse.org/galileo/index.jsp?topic=/ (Я знаю, что наборы фреймов на страницах всегда затрудняют копирование ссылок ;) - person Adrian Petrescu; 16.01.2010