* 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());