Betrachten Sie org.eclipse.jdt.internal.ui.actions.OpenTypeAction für wie es von Eclipse behandelt wird. Der wichtigste Teil ist dies:
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();
Wo Eltern ist das Verbund Sie sich für den Dialog öffnen möchten. Typischerweise ist die aktive Werkbank Schale, erhalten durch:
Shell parent= JavaPlugin.getActiveWorkbenchShell();
OpenTypeSelectionDialog ist in einem internen Paket, so dass Sie eine „Discouraged Zugang“ Warnung erhalten. Solange Sie sich der Risiken bewusst sind, würde ich diesen Typ empfehlen. "Entmutigt" ist eine Warnung, kein Fehler, und in der Praxis würde Eclipse einen OpenTypeSelectionDialog einführen anstatt die Signaturen des aktuellen zu ändern. Die Eclipse-Plattform und die wichtigsten Produkte versuchen, die Kompatibilität so weit wie möglich zu erhalten, um Innovationen zu fördern (siehe policy im Wiki). Im Allgemeinen mit entmutigten Zugriff ist es sinnvoll für Sie, den Rest Ihres Codes von API-Änderungen mit Hilfe eines Helfers abzuschirmen. Dies bedeutet, dass Sie einen einzelnen Punkt haben, den Sie ändern müssen, wenn sich der referenzierte Typ ändert.
Die Alternative ist, dass Sie den Dialog und seine Eltern selbst implementieren, aber der Vater, FilteredTypesSelectionDialog, hat mehr als 20 interne Referenzen, so würde das Problem noch schlimmer machen.
Möchten Sie den Dialog tatsächlich öffnen oder alle Ergebnisse direkt abrufen? –
Ich möchte den Dialog öffnen, lassen Sie den Benutzer einen Typ wählen, die er will, und nachdem er auswählen möchte ich das Ergebnis als Zeichenfolge mit vollständig qualifizierten Namen erhalten. Es scheint, dass der OpenTypeSelectionDialog den Job erledigt, aber es wird davon abgeraten. – Ido