Я хочу программно открыть диалоговое окно «Ctrl-Shift-T» (найти тип) в подключаемом модуле eclipse. Я попробовал FilteredItemsSelectionDialog и ResourceListSelectionDialog, но как мне получить все типы в рабочей области?
Спасибо, Идо.
Я хочу программно открыть диалоговое окно «Ctrl-Shift-T» (найти тип) в подключаемом модуле eclipse. Я попробовал FilteredItemsSelectionDialog и ResourceListSelectionDialog, но как мне получить все типы в рабочей области?
Спасибо, Идо.
Посмотрите на 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 внутренних ссылок, что усугубит проблему.