Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDani Megert2002-03-15 14:23:37 +0000
committerDani Megert2002-03-15 14:23:37 +0000
commita52930691385837645de289f2f5d10a4682b1f23 (patch)
tree6bd5b99e5adc4f79d44524b7757d275c781cf1d6
parent4e222b6eff7998bd2fa84a5403de56bd1c51b8c2 (diff)
downloadeclipse.platform.text-a52930691385837645de289f2f5d10a4682b1f23.tar.gz
eclipse.platform.text-a52930691385837645de289f2f5d10a4682b1f23.tar.xz
eclipse.platform.text-a52930691385837645de289f2f5d10a4682b1f23.zip
Decorator support
-rw-r--r--org.eclipse.search/search/org/eclipse/search/internal/ui/SearchResultLabelProvider.java57
-rw-r--r--org.eclipse.search/search/org/eclipse/search/internal/ui/SearchResultViewer.java17
-rw-r--r--org.eclipse.search/search/org/eclipse/search/internal/ui/util/FileLabelProvider.java93
3 files changed, 105 insertions, 62 deletions
diff --git a/org.eclipse.search/search/org/eclipse/search/internal/ui/SearchResultLabelProvider.java b/org.eclipse.search/search/org/eclipse/search/internal/ui/SearchResultLabelProvider.java
index dfd111b587a..5e6cba12dc8 100644
--- a/org.eclipse.search/search/org/eclipse/search/internal/ui/SearchResultLabelProvider.java
+++ b/org.eclipse.search/search/org/eclipse/search/internal/ui/SearchResultLabelProvider.java
@@ -6,39 +6,56 @@ package org.eclipse.search.internal.ui;
import org.eclipse.swt.graphics.Image;
-import org.eclipse.ui.model.WorkbenchLabelProvider;
+import org.eclipse.jface.viewers.DecoratingLabelProvider;
+import org.eclipse.jface.viewers.ILabelDecorator;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.core.resources.IResource;
-
import org.eclipse.search.ui.ISearchResultViewEntry;
-class SearchResultLabelProvider extends LabelProvider implements ILabelProvider {
+class SearchResultLabelProvider extends DecoratingLabelProvider {
- private static final String MATCHES_POSTFIX= " " + SearchMessages.getString("SearchResultView.matches") + ")"; //$NON-NLS-3$ //$NON-NLS-2$ //$NON-NLS-1$
- private static ILabelProvider fLabelProvider;
+ private static final String MATCHES_POSTFIX= " " + SearchMessages.getString("SearchResultView.matches") + ")"; //$NON-NLS-3$ //$NON-NLS-2$ //$NON-NLS-1$
+
+ private static class MatchCountDecorator extends LabelProvider implements ILabelDecorator {
+ /*
+ * @see ILabelDecorator#decorateImage(Image, Object)
+ */
+ public Image decorateImage(Image image, Object element) {
+ return null;
+ }
- public ILabelProvider getLabelProvider() {
- return fLabelProvider;
+ /*
+ * @see ILabelDecorator#decorateText(String, Object)
+ */
+ public String decorateText(String text, Object element) {
+ StringBuffer buf= new StringBuffer(text);
+ int count= ((ISearchResultViewEntry)element).getMatchCount();
+ if (count > 1) {
+ buf.append(" ("); //$NON-NLS-1$
+ buf.append(count);
+ buf.append(MATCHES_POSTFIX);
+ }
+ return buf.toString();
+ }
}
- public void setLabelProvider(ILabelProvider provider) {
- fLabelProvider= provider;
+ SearchResultLabelProvider(ILabelProvider provider, ILabelDecorator decorator) {
+ super(provider, new MatchCountDecorator());
}
-
- public String getText(Object rowElement) {
- StringBuffer text= new StringBuffer(fLabelProvider.getText(rowElement));
- int count= ((ISearchResultViewEntry)rowElement).getMatchCount();
+
+ public String getText(Object element) {
+ StringBuffer buf= new StringBuffer(getLabelProvider().getText(element));
+ int count= ((ISearchResultViewEntry)element).getMatchCount();
if (count > 1) {
- text.append(" ("); //$NON-NLS-1$
- text.append(count);
- text.append(MATCHES_POSTFIX);
+ buf.append(" ("); //$NON-NLS-1$
+ buf.append(count);
+ buf.append(MATCHES_POSTFIX);
}
- return text.toString();
+ return buf.toString();
}
- public Image getImage(Object rowElement) {
- return fLabelProvider.getImage(rowElement);
+ // Don't dispose since label providers are reused.
+ public void dispose() {
}
}
diff --git a/org.eclipse.search/search/org/eclipse/search/internal/ui/SearchResultViewer.java b/org.eclipse.search/search/org/eclipse/search/internal/ui/SearchResultViewer.java
index d32d7a4a54a..9efabc77e57 100644
--- a/org.eclipse.search/search/org/eclipse/search/internal/ui/SearchResultViewer.java
+++ b/org.eclipse.search/search/org/eclipse/search/internal/ui/SearchResultViewer.java
@@ -19,7 +19,6 @@ import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.swt.widgets.Widget;
-import org.eclipse.ui.IMemento;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.action.IMenuListener;
import org.eclipse.jface.action.IMenuManager;
@@ -27,7 +26,6 @@ import org.eclipse.jface.action.IToolBarManager;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.action.Separator;
import org.eclipse.jface.util.Assert;
-import org.eclipse.jface.viewers.IBaseLabelProvider;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.ISelectionChangedListener;
@@ -35,10 +33,14 @@ import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.ui.IMemento;
+
import org.eclipse.search.ui.IContextMenuConstants;
import org.eclipse.search.ui.IContextMenuContributor;
import org.eclipse.search.ui.ISearchResultViewEntry;
+import org.eclipse.search.internal.ui.util.FileLabelProvider;
+
/**
* A special viewer to present search results. The viewer implements an
@@ -78,7 +80,7 @@ class SearchResultViewer extends TableViewer {
setUseHashlookup(true);
setContentProvider(new SearchResultContentProvider());
- setLabelProvider(new SearchResultLabelProvider());
+ setLabelProvider(new SearchResultLabelProvider(new FileLabelProvider(FileLabelProvider.SHOW_LABEL), fOuterPart.getSite().getDecoratorManager()));
boolean hasSearch= SearchManager.getDefault().getCurrentSearch() != null;
@@ -304,14 +306,7 @@ class SearchResultViewer extends TableViewer {
}
void internalSetLabelProvider(ILabelProvider provider) {
- IBaseLabelProvider tableLabelProvider= getLabelProvider();
- if (tableLabelProvider instanceof SearchResultLabelProvider)
- ((SearchResultLabelProvider)getLabelProvider()).setLabelProvider(provider);
- else {
- // should never happen - just to be safe
- setLabelProvider(new SearchResultLabelProvider());
- internalSetLabelProvider(provider);
- }
+ setLabelProvider(new SearchResultLabelProvider(provider, fOuterPart.getSite().getDecoratorManager()));
}
/**
diff --git a/org.eclipse.search/search/org/eclipse/search/internal/ui/util/FileLabelProvider.java b/org.eclipse.search/search/org/eclipse/search/internal/ui/util/FileLabelProvider.java
index 9d461390695..75a21c44af8 100644
--- a/org.eclipse.search/search/org/eclipse/search/internal/ui/util/FileLabelProvider.java
+++ b/org.eclipse.search/search/org/eclipse/search/internal/ui/util/FileLabelProvider.java
@@ -5,20 +5,27 @@
package org.eclipse.search.internal.ui.util;
import java.text.MessageFormat;
-import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.IPath;
+
import org.eclipse.swt.graphics.Image;
-import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.DecoratingLabelProvider;
+import org.eclipse.jface.viewers.ILabelDecorator;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchPartSite;
import org.eclipse.ui.model.WorkbenchLabelProvider;
-import org.eclipse.search.internal.ui.SearchMessages;
import org.eclipse.search.ui.ISearchResultViewEntry;
+import org.eclipse.search.internal.ui.SearchMessages;
+import org.eclipse.search.internal.ui.SearchPlugin;
+
-public class FileLabelProvider extends LabelProvider {
+public class FileLabelProvider extends DecoratingLabelProvider {
public static final int SHOW_LABEL= 1;
public static final int SHOW_LABEL_PATH= 2;
@@ -30,9 +37,8 @@ public class FileLabelProvider extends LabelProvider {
private int fOrder;
private String[] fArgs= new String[2];
- private WorkbenchLabelProvider fWorkbenchLabelProvider= new WorkbenchLabelProvider();
-
public FileLabelProvider(int orderFlag) {
+ super(new WorkbenchLabelProvider(), getDecoratorManager());
fOrder= orderFlag;
}
@@ -43,41 +49,66 @@ public class FileLabelProvider extends LabelProvider {
public String getText(Object element) {
if (!(element instanceof ISearchResultViewEntry))
return ""; //$NON-NLS-1$
+
IResource resource= ((ISearchResultViewEntry) element).getResource();
+ String text= null;
if (resource == null || !resource.exists())
- return SearchMessages.getString("SearchResultView.removed_resource"); //$NON-NLS-1$
+ text= SearchMessages.getString("SearchResultView.removed_resource"); //$NON-NLS-1$
- IPath path= resource.getFullPath().removeLastSegments(1);
- if (path.getDevice() == null)
- path= path.makeRelative();
- if (fOrder == SHOW_LABEL || fOrder == SHOW_LABEL_PATH) {
- String resourceString= fWorkbenchLabelProvider.getText(resource);
- if (path != null && fOrder == SHOW_LABEL_PATH) {
- fArgs[0]= resourceString;
- fArgs[1]= path.toString();
- return MessageFormat.format(fgSeparatorFormat, fArgs);
+ else {
+ IPath path= resource.getFullPath().removeLastSegments(1);
+ if (path.getDevice() == null)
+ path= path.makeRelative();
+ if (fOrder == SHOW_LABEL || fOrder == SHOW_LABEL_PATH) {
+ text= getLabelProvider().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]= getLabelProvider().getText(resource);
+ text= MessageFormat.format(fgSeparatorFormat, fArgs);
+ }
}
- else
- return resourceString;
- } else {
- String pathString;
- if (path != null)
- pathString= path.toString();
- else
- pathString= ""; //$NON-NLS-1$
- if (fOrder == SHOW_PATH_LABEL) {
- fArgs[0]= pathString;
- fArgs[1]= fWorkbenchLabelProvider.getText(resource);
- return MessageFormat.format(fgSeparatorFormat, fArgs);
- } else
- return pathString;
}
+
+ // Do the decoration
+ if (getLabelDecorator() != null) {
+ String decorated= getLabelDecorator().decorateText(text, element);
+ if (decorated != null)
+ return decorated;
+ }
+ return text;
}
public Image getImage(Object element) {
if (!(element instanceof ISearchResultViewEntry))
return null; //$NON-NLS-1$
- return fWorkbenchLabelProvider.getImage(((ISearchResultViewEntry) element).getResource());
+ return super.getImage(((ISearchResultViewEntry) element).getResource());
+ }
+
+ private static IWorkbenchPartSite getSite() {
+ IWorkbenchPage page= SearchPlugin.getActivePage();
+ if (page != null) {
+ IWorkbenchPart part= page.getActivePart();
+ if (part != null)
+ return part.getSite();
+ }
+ return null;
+ }
+
+ private static ILabelDecorator getDecoratorManager() {
+ if (getSite() != null)
+ return getSite().getDecoratorManager();
+ else
+ return null;
}
}

Back to the top