|
Lines 17-24
Link Here
|
| 17 |
import org.eclipse.core.runtime.Status; |
17 |
import org.eclipse.core.runtime.Status; |
| 18 |
import org.eclipse.core.runtime.jobs.Job; |
18 |
import org.eclipse.core.runtime.jobs.Job; |
| 19 |
import org.eclipse.debug.ui.IDebugModelPresentation; |
19 |
import org.eclipse.debug.ui.IDebugModelPresentation; |
| 20 |
import org.eclipse.jdt.core.IJavaProject; |
|
|
| 21 |
import org.eclipse.jdt.core.IPackageFragment; |
| 22 |
import org.eclipse.jdt.core.IType; |
20 |
import org.eclipse.jdt.core.IType; |
| 23 |
import org.eclipse.jdt.core.search.IJavaSearchConstants; |
21 |
import org.eclipse.jdt.core.search.IJavaSearchConstants; |
| 24 |
import org.eclipse.jdt.core.search.SearchEngine; |
22 |
import org.eclipse.jdt.core.search.SearchEngine; |
|
Lines 28-45
Link Here
|
| 28 |
import org.eclipse.jdt.core.search.SearchRequestor; |
26 |
import org.eclipse.jdt.core.search.SearchRequestor; |
| 29 |
import org.eclipse.jdt.internal.debug.ui.JDIDebugUIPlugin; |
27 |
import org.eclipse.jdt.internal.debug.ui.JDIDebugUIPlugin; |
| 30 |
import org.eclipse.jdt.internal.ui.JavaUIMessages; |
28 |
import org.eclipse.jdt.internal.ui.JavaUIMessages; |
|
|
29 |
import org.eclipse.jdt.internal.ui.dialogs.OpenTypeSelectionDialog; |
| 31 |
import org.eclipse.jdt.internal.ui.util.ExceptionHandler; |
30 |
import org.eclipse.jdt.internal.ui.util.ExceptionHandler; |
| 32 |
import org.eclipse.jdt.ui.JavaElementLabelProvider; |
|
|
| 33 |
import org.eclipse.jdt.ui.JavaElementLabels; |
| 34 |
import org.eclipse.jdt.ui.JavaUI; |
31 |
import org.eclipse.jdt.ui.JavaUI; |
| 35 |
import org.eclipse.jface.dialogs.IDialogConstants; |
32 |
import org.eclipse.jface.dialogs.IDialogConstants; |
| 36 |
import org.eclipse.jface.dialogs.MessageDialog; |
33 |
import org.eclipse.jface.dialogs.MessageDialog; |
| 37 |
import org.eclipse.jface.text.IRegion; |
34 |
import org.eclipse.jface.text.IRegion; |
| 38 |
import org.eclipse.jface.text.hyperlink.IHyperlink; |
35 |
import org.eclipse.jface.text.hyperlink.IHyperlink; |
| 39 |
import org.eclipse.jface.viewers.ArrayContentProvider; |
|
|
| 40 |
import org.eclipse.ui.IEditorInput; |
36 |
import org.eclipse.ui.IEditorInput; |
| 41 |
import org.eclipse.ui.PlatformUI; |
37 |
import org.eclipse.ui.PlatformUI; |
| 42 |
import org.eclipse.ui.dialogs.ListDialog; |
|
|
| 43 |
import org.eclipse.ui.progress.UIJob; |
38 |
import org.eclipse.ui.progress.UIJob; |
| 44 |
|
39 |
|
| 45 |
/** |
40 |
/** |
|
Lines 127-133
Link Here
|
| 127 |
@Override |
122 |
@Override |
| 128 |
public IStatus runInUIThread(IProgressMonitor monitor) { |
123 |
public IStatus runInUIThread(IProgressMonitor monitor) { |
| 129 |
if (sources.size() > 1) { |
124 |
if (sources.size() > 1) { |
| 130 |
openTypeDialog(sources, typeName); |
125 |
openTypeDialog(typeName); |
| 131 |
} else if (sources.size() == 1 && sources.get(0) != null) { |
126 |
} else if (sources.size() == 1 && sources.get(0) != null) { |
| 132 |
IType type = sources.get(0); |
127 |
IType type = sources.get(0); |
| 133 |
processSearchResult(type, typeName); |
128 |
processSearchResult(type, typeName); |
|
Lines 169-204
Link Here
|
| 169 |
} |
164 |
} |
| 170 |
} |
165 |
} |
| 171 |
|
166 |
|
| 172 |
private void openTypeDialog(final List<IType> sources, final String typeName) { |
167 |
private void openTypeDialog(final String typeName) { |
| 173 |
ListDialog dialog = new ListDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell()); |
168 |
OpenTypeSelectionDialog dialog = new OpenTypeSelectionDialog(PlatformUI.getWorkbench() |
| 174 |
dialog.setInput(sources.toArray()); |
169 |
.getActiveWorkbenchWindow() |
| 175 |
dialog.setContentProvider(new ArrayContentProvider()); |
170 |
.getShell(), true, PlatformUI.getWorkbench().getProgressService(), null, IJavaSearchConstants.TYPE); |
| 176 |
dialog.setLabelProvider(new JavaElementLabelProvider() { |
|
|
| 177 |
@Override |
| 178 |
public String getText(Object element) { |
| 179 |
IType type = (IType) element; |
| 180 |
StringBuilder builder = new StringBuilder(); |
| 181 |
builder.append(super.getText(type)); |
| 182 |
|
| 183 |
IPackageFragment fragment = type.getPackageFragment(); |
| 184 |
if (fragment != null) { |
| 185 |
builder.append(JavaElementLabels.CONCAT_STRING); |
| 186 |
builder.append(super.getText(fragment)); |
| 187 |
} |
| 188 |
|
| 189 |
IJavaProject project = type.getJavaProject(); |
| 190 |
if (project != null) { |
| 191 |
builder.append(JavaElementLabels.CONCAT_STRING); |
| 192 |
builder.append(super.getText(project)); |
| 193 |
} |
| 194 |
|
| 195 |
return builder.toString(); |
| 196 |
} |
| 197 |
}); |
| 198 |
|
171 |
|
| 199 |
dialog.setTitle("Open Hyperlink"); |
172 |
dialog.setTitle("Open Hyperlink"); |
| 200 |
dialog.setMessage("More than one types are detected, please select one:"); |
173 |
dialog.setMessage("More than one types are detected, please select one:"); |
| 201 |
dialog.setHelpAvailable(false); |
174 |
dialog.setHelpAvailable(false); |
|
|
175 |
dialog.setInitialPattern(typeName); |
| 202 |
|
176 |
|
| 203 |
int result = dialog.open(); |
177 |
int result = dialog.open(); |
| 204 |
if (result != IDialogConstants.OK_ID) { |
178 |
if (result != IDialogConstants.OK_ID) { |