* patches from bugs: 208774, 208222
* some fixes in xotcl browsing.
diff --git a/core/plugins/org.eclipse.dltk.ui/src/org/eclipse/dltk/ui/browsing/ext/ExtendedClasesContentProvider.java b/core/plugins/org.eclipse.dltk.ui/src/org/eclipse/dltk/ui/browsing/ext/ExtendedClasesContentProvider.java
index 1b63acf..d6d1f95 100644
--- a/core/plugins/org.eclipse.dltk.ui/src/org/eclipse/dltk/ui/browsing/ext/ExtendedClasesContentProvider.java
+++ b/core/plugins/org.eclipse.dltk.ui/src/org/eclipse/dltk/ui/browsing/ext/ExtendedClasesContentProvider.java
@@ -3,13 +3,14 @@
*/
package org.eclipse.dltk.ui.browsing.ext;
+import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
-import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.dltk.core.DLTKCore;
import org.eclipse.dltk.core.IModelElement;
import org.eclipse.dltk.core.IScriptModel;
@@ -21,8 +22,11 @@
import org.eclipse.dltk.core.search.SearchPattern;
import org.eclipse.dltk.core.search.TypeNameMatch;
import org.eclipse.dltk.core.search.TypeNameMatchRequestor;
+import org.eclipse.jface.dialogs.ProgressMonitorDialog;
+import org.eclipse.jface.operation.IRunnableWithProgress;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.swt.widgets.Composite;
class ExtendedClasesContentProvider implements ITreeContentProvider {
/**
@@ -31,10 +35,15 @@
private final ExtendedClassesView contentProvider;
Object input;
private IDLTKSearchScope scope;
+ private Composite parent;
+ private boolean firstTime = true;
- public ExtendedClasesContentProvider(ExtendedClassesView extendedClassesView, IDLTKSearchScope scope) {
+ public ExtendedClasesContentProvider(
+ ExtendedClassesView extendedClassesView, IDLTKSearchScope scope,
+ Composite parent) {
contentProvider = extendedClassesView;
this.scope = scope;
+ this.parent = parent;
}
public Object[] getChildren(Object parentElement) {
@@ -44,8 +53,7 @@
List els = new ArrayList();
MixedClass cl = (MixedClass) parentElement;
List elements = cl.getElements();
- for (Iterator iterator = elements.iterator(); iterator
- .hasNext();) {
+ for (Iterator iterator = elements.iterator(); iterator.hasNext();) {
Object element = iterator.next();
if (element instanceof IType) {
IType type = (IType) element;
@@ -74,38 +82,59 @@
}
public Object[] getElements(Object inputElement) {
+ ProgressMonitorDialog dialog = new ProgressMonitorDialog(this.parent
+ .getShell());
+ dialog.setCancelable(false);
final List elements = new ArrayList();
- try {
- (new SearchEngine()).searchAllTypeNames(
- null,
- SearchPattern.R_EXACT_MATCH,
- "*".toCharArray(), //$NON-NLS-1$
- SearchPattern.R_PATTERN_MATCH
- | SearchPattern.R_CASE_SENSITIVE,
- IDLTKSearchConstants.TYPE,
- scope,
- new TypeNameMatchRequestor() {
- public void acceptTypeNameMatch(TypeNameMatch match) {
- try {
- IType type = match.getType();
- if (type.exists()
- && type.getParent()
- .getElementType() != IModelElement.TYPE) {
- elements.add(type);
+ IRunnableWithProgress runnable = new IRunnableWithProgress() {
+ public void run(IProgressMonitor monitor)
+ throws InvocationTargetException, InterruptedException {
+ try {
+ (new SearchEngine()).searchAllTypeNames(
+ null,
+ SearchPattern.R_EXACT_MATCH,
+ "*".toCharArray(), //$NON-NLS-1$
+ SearchPattern.R_PATTERN_MATCH
+ | SearchPattern.R_CASE_SENSITIVE,
+ IDLTKSearchConstants.TYPE,
+ scope,
+ new TypeNameMatchRequestor() {
+ public void acceptTypeNameMatch(
+ TypeNameMatch match) {
+ try {
+ IType type = match.getType();
+ if (type.exists()
+ && type.getParent()
+ .getElementType() != IModelElement.TYPE) {
+ elements.add(type);
+ }
+ } catch (Exception e) {
+
+ }
}
- } catch (Exception e) {
+ },
- }
- }
- },
-
- IDLTKSearchConstants.WAIT_UNTIL_READY_TO_SEARCH,
- new NullProgressMonitor());
- } catch (ModelException e) {
+ IDLTKSearchConstants.WAIT_UNTIL_READY_TO_SEARCH,
+ monitor);
+ } catch (ModelException e) {
+ if (DLTKCore.DEBUG) {
+ e.printStackTrace();
+ }
+ }
+ }
+ };
+ try {
+ dialog.run(false, false, runnable);
+ } catch (InvocationTargetException e) {
+ if (DLTKCore.DEBUG) {
+ e.printStackTrace();
+ }
+ } catch (InterruptedException e) {
if (DLTKCore.DEBUG) {
e.printStackTrace();
}
}
+
return convert(elements);
}
diff --git a/core/plugins/org.eclipse.dltk.ui/src/org/eclipse/dltk/ui/browsing/ext/ExtendedClasesLabelProvider.java b/core/plugins/org.eclipse.dltk.ui/src/org/eclipse/dltk/ui/browsing/ext/ExtendedClasesLabelProvider.java
index 29474cc..bf02059 100644
--- a/core/plugins/org.eclipse.dltk.ui/src/org/eclipse/dltk/ui/browsing/ext/ExtendedClasesLabelProvider.java
+++ b/core/plugins/org.eclipse.dltk.ui/src/org/eclipse/dltk/ui/browsing/ext/ExtendedClasesLabelProvider.java
@@ -36,12 +36,12 @@
return ((IModelElement) element).getElementName();
} else if (element instanceof MixedClass) {
MixedClass cl = (MixedClass) element;
- if (cl.getElements().size() > 1) {
- return cl.getName() + "("
- + Integer.toString(cl.getElements().size()) + ")";
- } else {
- return cl.getName();
- }
+ // if (cl.getElements().size() > 1) {
+ // return cl.getName() + "("
+ // + Integer.toString(cl.getElements().size()) + ")";
+ // } else {
+ return cl.getName();
+ // }
} else if (element != null) {
return element.toString();
}
diff --git a/core/plugins/org.eclipse.dltk.ui/src/org/eclipse/dltk/ui/browsing/ext/ExtendedClassesView.java b/core/plugins/org.eclipse.dltk.ui/src/org/eclipse/dltk/ui/browsing/ext/ExtendedClassesView.java
index c6aeb86..b438174 100644
--- a/core/plugins/org.eclipse.dltk.ui/src/org/eclipse/dltk/ui/browsing/ext/ExtendedClassesView.java
+++ b/core/plugins/org.eclipse.dltk.ui/src/org/eclipse/dltk/ui/browsing/ext/ExtendedClassesView.java
@@ -156,7 +156,7 @@
};
browsingPane.setContentProvider(new ExtendedClasesContentProvider(this,
- SearchEngine.createWorkspaceScope(this.fToolkit)));
+ SearchEngine.createWorkspaceScope(this.fToolkit), parent));
IDLTKUILanguageToolkit languageToolkit = DLTKUILanguageManager
.getLanguageToolkit(this.fToolkit.getNatureId());