[155876] [internal api] need to remove various superfluous uses of internal API
diff --git a/plugins/org.eclipse.wst.common.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.wst.common.ui/META-INF/MANIFEST.MF
index 34026e4..1dd2590 100644
--- a/plugins/org.eclipse.wst.common.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.wst.common.ui/META-INF/MANIFEST.MF
@@ -20,6 +20,7 @@
  org.eclipse.search;bundle-version="[3.2.0,3.5.0)",
  org.eclipse.wst.common.core;bundle-version="[1.1.0,1.2.0)",
  org.eclipse.jface.text;bundle-version="[3.2.0,3.5.0)",
- org.eclipse.ui.workbench.texteditor;bundle-version="[3.2.0,3.5.0)"
+ org.eclipse.ui.workbench.texteditor;bundle-version="[3.2.0,3.5.0)",
+ com.ibm.icu;bundle-version="[3.4.4,4.0.0)"
 Eclipse-LazyStart: true
 Bundle-RequiredExecutionEnvironment: J2SE-1.4
diff --git a/plugins/org.eclipse.wst.common.ui/icons/tsearch_dpdn_obj.gif b/plugins/org.eclipse.wst.common.ui/icons/tsearch_dpdn_obj.gif
new file mode 100644
index 0000000..24a21eb
--- /dev/null
+++ b/plugins/org.eclipse.wst.common.ui/icons/tsearch_dpdn_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/AbstractSearchQuery.java b/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/AbstractSearchQuery.java
index db2fc2b..ade97fe 100644
--- a/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/AbstractSearchQuery.java
+++ b/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/AbstractSearchQuery.java
@@ -23,8 +23,6 @@
 import org.eclipse.core.runtime.MultiStatus;
 import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.core.runtime.OperationCanceledException;
-import org.eclipse.search.internal.ui.Messages;
-import org.eclipse.search.internal.ui.SearchMessages;
 import org.eclipse.search.ui.IQueryListener;
 import org.eclipse.search.ui.ISearchQuery;
 import org.eclipse.search.ui.ISearchResult;
@@ -34,6 +32,7 @@
 import org.eclipse.wst.common.core.search.pattern.QualifiedName;
 import org.eclipse.wst.common.core.search.pattern.SearchPattern;
 import org.eclipse.wst.common.core.search.scope.SearchScope;
+import org.eclipse.wst.common.ui.internal.search.basecode.Messages;
 
 
 public abstract class AbstractSearchQuery implements ISearchQuery {
diff --git a/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/SearchMessages.java b/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/SearchMessages.java
index 0b023e3..9bfdfef 100644
--- a/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/SearchMessages.java
+++ b/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/SearchMessages.java
@@ -28,6 +28,14 @@
 	public static String FileSearchPage_error_marker;
 	public static String FileSearchPage_sort_by_label;
 	public static String OpenWithMenu_label;
+	public static String FileSearchQuery_label;
+	public static String FileSearchQuery_pluralPattern;
+	public static String FileSearchQuery_singularLabel;
+	public static String FileSearchQuery_singularLabel_fileNameSearch;
+	public static String FileSearchQuery_pluralPattern_fileNameSearch;
+	public static String TextSearchEngine_statusMessage;
+	public static String FileLabelProvider_count_format;
+	public static String FileLabelProvider_removed_resource_label;
 
 	static {
 		NLS.initializeMessages(BUNDLE_NAME, SearchMessages.class);
diff --git a/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/SearchMessages.properties b/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/SearchMessages.properties
index 26b61c5..d3e9f83 100644
--- a/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/SearchMessages.properties
+++ b/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/SearchMessages.properties
@@ -16,4 +16,20 @@
 FileSearchPage_limited_format={0} (showing {1} of {2} files)
 FileSearchPage_error_marker=Could not create marker
 FileSearchPage_sort_by_label=Sort By
-OpenWithMenu_label= Open Wit&h
\ No newline at end of file
+OpenWithMenu_label= Open Wit&h
+
+FileLabelProvider_count_format={0} ({1} matches)
+FileLabelProvider_removed_resource_label=<removed resource>
+
+FileSearchQuery_label=File Search
+
+# The first argument will be replaced by the pattern, the second by the count and the third by the scope
+FileSearchQuery_pluralPattern= ''{0}'' - {1} matches in {2}
+
+# The first argument will be replaced by the pattern, the second by the scope
+FileSearchQuery_singularLabel= ''{0}'' - 1 match in {1}
+
+FileSearchQuery_singularLabel_fileNameSearch=1 file name matching ''{0}'' in {1}
+FileSearchQuery_pluralPattern_fileNameSearch={1} file names matching ''{0}'' in {2}
+
+TextSearchEngine_statusMessage= Problems encountered during text search.
diff --git a/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/SearchResult.java b/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/SearchResult.java
index c26fb9c..c2941d4 100644
--- a/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/SearchResult.java
+++ b/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/SearchResult.java
@@ -12,7 +12,6 @@
 
 import org.eclipse.core.resources.IFile;
 import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.search.internal.ui.SearchPluginImages;
 import org.eclipse.search.ui.ISearchQuery;
 import org.eclipse.search.ui.text.AbstractTextSearchResult;
 import org.eclipse.search.ui.text.IEditorMatchAdapter;
@@ -21,6 +20,7 @@
 import org.eclipse.ui.IEditorInput;
 import org.eclipse.ui.IEditorPart;
 import org.eclipse.ui.IFileEditorInput;
+import org.eclipse.wst.common.ui.internal.UIPlugin;
 
 public class SearchResult extends AbstractTextSearchResult implements IEditorMatchAdapter, IFileMatchAdapter {
 	private final Match[] EMPTY_ARR= new Match[0];
@@ -31,7 +31,7 @@
 		fQuery= job;
 	}
 	public ImageDescriptor getImageDescriptor() {
-		return SearchPluginImages.DESC_OBJ_TSEARCH_DPDN;
+		return UIPlugin.getDefault().getImageDescriptor("icons/tsearch_dpdn_obj.gif");
 	}
 	public String getLabel() {
 		return fQuery.getResultLabel(getMatchCount());
diff --git a/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/SearchResultPage.java b/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/SearchResultPage.java
index a64770d..03247b5 100644
--- a/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/SearchResultPage.java
+++ b/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/SearchResultPage.java
@@ -22,7 +22,7 @@
 import org.eclipse.jface.action.IMenuManager;
 import org.eclipse.jface.action.MenuManager;
 import org.eclipse.jface.util.DelegatingDragAdapter;
-import org.eclipse.jface.util.IPropertyChangeListener;
+//import org.eclipse.jface.util.IPropertyChangeListener;
 import org.eclipse.jface.viewers.DecoratingLabelProvider;
 import org.eclipse.jface.viewers.ILabelProvider;
 import org.eclipse.jface.viewers.ISelection;
@@ -34,12 +34,6 @@
 import org.eclipse.jface.viewers.TreeViewer;
 import org.eclipse.jface.viewers.Viewer;
 import org.eclipse.jface.viewers.ViewerSorter;
-import org.eclipse.wst.common.ui.internal.search.SearchMessages;
-import org.eclipse.search.internal.ui.SearchPlugin;
-import org.eclipse.search.internal.ui.text.FileLabelProvider;
-import org.eclipse.search.internal.ui.text.IFileSearchContentProvider;
-import org.eclipse.search.internal.ui.text.ResourceTransferDragAdapter;
-import org.eclipse.search.internal.ui.text.SortAction;
 import org.eclipse.search.ui.IContextMenuConstants;
 import org.eclipse.search.ui.ISearchResultViewPart;
 import org.eclipse.search.ui.NewSearchUI;
@@ -68,6 +62,10 @@
 import org.eclipse.ui.part.ResourceTransfer;
 import org.eclipse.ui.texteditor.ITextEditor;
 import org.eclipse.wst.common.ui.internal.UIPlugin;
+import org.eclipse.wst.common.ui.internal.search.basecode.FileLabelProvider;
+import org.eclipse.wst.common.ui.internal.search.basecode.IFileSearchContentProvider;
+import org.eclipse.wst.common.ui.internal.search.basecode.ResourceTransferDragAdapter;
+import org.eclipse.wst.common.ui.internal.search.basecode.SortAction;
 
 
 public class SearchResultPage extends AbstractTextSearchViewPage implements IAdaptable {
@@ -120,7 +118,7 @@
 		}
 	};
 
-	private IPropertyChangeListener fPropertyChangeListener;
+	// private IPropertyChangeListener fPropertyChangeListener;
 	
 	public SearchResultPage() {
 		// TODO
@@ -241,7 +239,7 @@
 	
 	public void dispose() {
 		fActionGroup.dispose();
-		SearchPlugin.getDefault().getPreferenceStore().removePropertyChangeListener(fPropertyChangeListener);
+		// SearchPlugin.getDefault().getPreferenceStore().removePropertyChangeListener(fPropertyChangeListener);
 		super.dispose();
 	}
 
diff --git a/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/SearchResultTableContentProvider.java b/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/SearchResultTableContentProvider.java
index 0e876e8..f757d29 100644
--- a/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/SearchResultTableContentProvider.java
+++ b/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/SearchResultTableContentProvider.java
@@ -13,8 +13,8 @@
 import org.eclipse.jface.viewers.IStructuredContentProvider;
 import org.eclipse.jface.viewers.TableViewer;
 import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.search.internal.ui.text.IFileSearchContentProvider;
 import org.eclipse.search.ui.text.AbstractTextSearchResult;
+import org.eclipse.wst.common.ui.internal.search.basecode.IFileSearchContentProvider;
 
 public class SearchResultTableContentProvider implements IStructuredContentProvider, IFileSearchContentProvider {
 	
diff --git a/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/SearchResultTreeContentProvider.java b/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/SearchResultTreeContentProvider.java
index a3ca289..7c79ce9 100644
--- a/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/SearchResultTreeContentProvider.java
+++ b/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/SearchResultTreeContentProvider.java
@@ -20,8 +20,8 @@
 import org.eclipse.jface.viewers.AbstractTreeViewer;
 import org.eclipse.jface.viewers.ITreeContentProvider;
 import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.search.internal.ui.text.IFileSearchContentProvider;
 import org.eclipse.search.ui.text.AbstractTextSearchResult;
+import org.eclipse.wst.common.ui.internal.search.basecode.IFileSearchContentProvider;
 
 
 public class SearchResultTreeContentProvider implements ITreeContentProvider, IFileSearchContentProvider {
diff --git a/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/basecode/FileLabelProvider.java b/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/basecode/FileLabelProvider.java
new file mode 100644
index 0000000..8c7e273
--- /dev/null
+++ b/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/basecode/FileLabelProvider.java
@@ -0,0 +1,133 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *
+ * Derived from org.eclipse.search.internal.ui.FileLabelProvider
+ *******************************************************************************/
+package org.eclipse.wst.common.ui.internal.search.basecode;
+
+import com.ibm.icu.text.MessageFormat;
+
+import org.eclipse.core.runtime.IPath;
+
+import org.eclipse.core.resources.IResource;
+
+import org.eclipse.swt.graphics.Image;
+
+import org.eclipse.jface.viewers.ILabelProviderListener;
+import org.eclipse.jface.viewers.LabelProvider;
+
+import org.eclipse.ui.model.WorkbenchLabelProvider;
+import org.eclipse.wst.common.ui.internal.search.SearchMessages;
+
+import org.eclipse.search.ui.text.AbstractTextSearchResult;
+import org.eclipse.search.ui.text.AbstractTextSearchViewPage;
+
+
+public class FileLabelProvider extends LabelProvider {
+		
+	public static final int SHOW_LABEL= 1;
+	public static final int SHOW_LABEL_PATH= 2;
+	public static final int SHOW_PATH_LABEL= 3;
+	public static final int SHOW_PATH= 4;
+	
+	private static final String fgSeparatorFormat= "{0} - {1}"; //$NON-NLS-1$
+	
+	private WorkbenchLabelProvider fLabelProvider;
+	private AbstractTextSearchViewPage fPage;
+		
+	private int fOrder;
+	private String[] fArgs= new String[2];
+
+	public FileLabelProvider(AbstractTextSearchViewPage page, int orderFlag) {
+		fLabelProvider= new WorkbenchLabelProvider();
+		fOrder= orderFlag;
+		fPage= page;
+	}
+
+	public void setOrder(int orderFlag) {
+		fOrder= orderFlag;
+	}
+	
+	public int getOrder() {
+		return fOrder;
+	}
+
+	public String getText(Object element) {
+		if (!(element instanceof IResource))
+			return null;
+
+		IResource resource= (IResource)element;
+		String text= null;
+
+		if (!resource.exists())
+			text= SearchMessages.FileLabelProvider_removed_resource_label; 
+		
+		else {
+			IPath path= resource.getFullPath().removeLastSegments(1);
+			if (path.getDevice() == null)
+				path= path.makeRelative();
+			if (fOrder == SHOW_LABEL || fOrder == SHOW_LABEL_PATH) {
+				text= fLabelProvider.getText(resource);
+				if (path != null && fOrder == SHOW_LABEL_PATH) {
+					fArgs[0]= text;
+					fArgs[1]= path.toString();
+					text= MessageFormat.format(fgSeparatorFormat, fArgs);
+				}
+			} else {
+				if (path != null)
+					text= path.toString();
+				else
+					text= ""; //$NON-NLS-1$
+				if (fOrder == SHOW_PATH_LABEL) {
+					fArgs[0]= text;
+					fArgs[1]= fLabelProvider.getText(resource);
+					text= MessageFormat.format(fgSeparatorFormat, fArgs);
+				}
+			}
+		}
+		
+		int matchCount= 0;
+		AbstractTextSearchResult result= fPage.getInput();
+		if (result != null)
+			matchCount= result.getMatchCount(element);
+		if (matchCount <= 1)
+			return text;
+		String format= SearchMessages.FileLabelProvider_count_format; 
+		return MessageFormat.format(format, new Object[] { text, new Integer(matchCount) });
+	}
+
+	public Image getImage(Object element) {
+		if (!(element instanceof IResource))
+			return null;
+
+		IResource resource= (IResource)element;
+		Image image= fLabelProvider.getImage(resource);
+		return image;
+	}
+
+	public void dispose() {
+		super.dispose();
+		fLabelProvider.dispose();
+	}
+
+	public boolean isLabelProperty(Object element, String property) {
+		return fLabelProvider.isLabelProperty(element, property);
+	}
+
+	public void removeListener(ILabelProviderListener listener) {
+		super.removeListener(listener);
+		fLabelProvider.removeListener(listener);
+	}
+
+	public void addListener(ILabelProviderListener listener) {
+		super.addListener(listener);
+		fLabelProvider.addListener(listener);
+	}
+}
diff --git a/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/basecode/IFileSearchContentProvider.java b/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/basecode/IFileSearchContentProvider.java
new file mode 100644
index 0000000..18ef416
--- /dev/null
+++ b/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/basecode/IFileSearchContentProvider.java
@@ -0,0 +1,21 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2005 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation 
+ *
+ * Derived from org.eclipse.search.internal.ui.IFileSearchContentProvider
+ *******************************************************************************/
+package org.eclipse.wst.common.ui.internal.search.basecode;
+
+public interface IFileSearchContentProvider {
+
+	public abstract void elementsChanged(Object[] updatedElements);
+
+	public abstract void clear();
+
+}
diff --git a/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/basecode/Messages.java b/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/basecode/Messages.java
new file mode 100644
index 0000000..4e91dc7
--- /dev/null
+++ b/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/basecode/Messages.java
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ * 
+ * Derived from org.eclipse.search.internal.ui.Messages
+ *******************************************************************************/
+package org.eclipse.wst.common.ui.internal.search.basecode;
+
+import com.ibm.icu.text.MessageFormat;
+
+/**
+ * Helper class to format message strings.
+ * 
+ * @since 3.1
+ */
+public class Messages {
+
+	public static String format(String message, Object object) {
+		return MessageFormat.format(message, new Object[] { object});
+	}
+
+	public static String format(String message, Object[] objects) {
+		return MessageFormat.format(message, objects);
+	}
+
+	private Messages() {
+		// Not for instantiation
+	}
+}
diff --git a/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/basecode/ResourceTransferDragAdapter.java b/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/basecode/ResourceTransferDragAdapter.java
new file mode 100644
index 0000000..835281a
--- /dev/null
+++ b/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/basecode/ResourceTransferDragAdapter.java
@@ -0,0 +1,88 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ * 
+ * Derived from org.eclipse.search.internal.ui.ResourceTransferDragAdapter
+ *******************************************************************************/
+package org.eclipse.wst.common.ui.internal.search.basecode;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.core.runtime.Assert;
+
+import org.eclipse.core.resources.IResource;
+
+import org.eclipse.swt.dnd.DragSourceAdapter;
+import org.eclipse.swt.dnd.DragSourceEvent;
+import org.eclipse.swt.dnd.Transfer;
+
+import org.eclipse.jface.util.TransferDragSourceListener;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+
+import org.eclipse.ui.part.ResourceTransfer;
+
+/**
+ * A drag adapter that transfers the current selection as </code>
+ * IResource</code>. Only those elements in the selection are part 
+ * of the transfer which can be converted into an <code>IResource
+ * </code>.
+ */
+public class ResourceTransferDragAdapter extends DragSourceAdapter implements TransferDragSourceListener {
+
+	private ISelectionProvider fProvider;
+
+	/**
+	 * Creates a new ResourceTransferDragAdapter for the given selection
+	 * provider.
+	 * 
+	 * @param provider the selection provider to access the viewer's selection
+	 */
+	public ResourceTransferDragAdapter(ISelectionProvider provider) {
+		fProvider= provider;
+		Assert.isNotNull(fProvider);
+	}
+	
+	public Transfer getTransfer() {
+		return ResourceTransfer.getInstance();
+	}
+	
+	public void dragStart(DragSourceEvent event) {
+		event.doit= convertSelection().size() > 0;
+	}
+	
+	public void dragSetData(DragSourceEvent event) {
+		List resources= convertSelection();
+		event.data= resources.toArray(new IResource[resources.size()]);
+	}
+	
+	public void dragFinished(DragSourceEvent event) {
+		if (!event.doit)
+			return;
+	}
+	
+	private List convertSelection() {
+		ISelection s= fProvider.getSelection();
+		if (!(s instanceof IStructuredSelection))
+			return Collections.EMPTY_LIST;
+		IStructuredSelection selection= (IStructuredSelection) s;
+		List result= new ArrayList(selection.size());
+		for (Iterator iter= selection.iterator(); iter.hasNext();) {
+			Object element= iter.next();
+			if (element instanceof IResource) {
+				result.add(element);
+			}
+		}
+		return result;
+	}
+}
diff --git a/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/basecode/SortAction.java b/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/basecode/SortAction.java
new file mode 100644
index 0000000..ae91ea2
--- /dev/null
+++ b/plugins/org.eclipse.wst.common.ui/src-search/org/eclipse/wst/common/ui/internal/search/basecode/SortAction.java
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ * 
+ * Derived from org.eclipse.search.internal.ui.SortAction
+ *******************************************************************************/
+package org.eclipse.wst.common.ui.internal.search.basecode;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.wst.common.ui.internal.search.SearchResultPage;
+
+public class SortAction extends Action {
+	private int fSortOrder;
+	private SearchResultPage fPage;
+	
+	public SortAction(String label, SearchResultPage page, int sortOrder) {
+		super(label);
+		fPage= page;
+		fSortOrder= sortOrder;
+	}
+
+	public void run() {
+		fPage.setSortOrder(fSortOrder);
+	}
+
+	public int getSortOrder() {
+		return fSortOrder;
+	}
+}