как программно открыть диалог поиска типа в eclipse - PullRequest
2 голосов
/ 02 августа 2009

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

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

1 Ответ

3 голосов
/ 02 августа 2009

Посмотрите на 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 находится во внутреннем пакете, поэтому вы получите предупреждение «Отказ в доступе». Пока вы знаете о рисках, я бы рекомендовал использовать этот тип. «Обескураженный» - это предупреждение, а не ошибка, и на практике Eclipse вводит OpenTypeSelectionDialog 2 вместо того, чтобы изменять подписи текущего. Платформа Eclipse и основные продукты стараются поддерживать максимально возможную совместимость, чтобы стимулировать инновации (см. policy в вики). В целом, при ограниченном доступе имеет смысл защитить остальную часть кода от изменений API с помощью помощника. Это означает, что у вас есть одна точка, которую вы должны изменить, если ссылочный тип изменится.

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

...