Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/sync/views/SyncViewerLabelProvider.java')
-rw-r--r--bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/sync/views/SyncViewerLabelProvider.java102
1 files changed, 102 insertions, 0 deletions
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/sync/views/SyncViewerLabelProvider.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/sync/views/SyncViewerLabelProvider.java
new file mode 100644
index 000000000..30134cc82
--- /dev/null
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/sync/views/SyncViewerLabelProvider.java
@@ -0,0 +1,102 @@
+package org.eclipse.team.internal.ui.sync.views;
+
+import org.eclipse.compare.CompareConfiguration;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.jface.viewers.DecoratingLabelProvider;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.team.core.sync.IRemoteSyncElement;
+import org.eclipse.ui.internal.WorkbenchPlugin;
+import org.eclipse.ui.model.WorkbenchLabelProvider;
+
+/**
+ * The SyncViewerLabelProvider can be used in either a tree or table.
+ */
+public class SyncViewerLabelProvider extends LabelProvider implements ITableLabelProvider {
+
+ //column constants
+ private static final int COL_RESOURCE = 0;
+ private static final int COL_PARENT = 1;
+
+ // Keep track of the compare and workbench image providers
+ // so they can be properly disposed
+ CompareConfiguration compareConfig = new CompareConfiguration();
+ WorkbenchLabelProvider workbenchLabelProvider = new WorkbenchLabelProvider();
+
+ /**
+ * Returns a sync view label provider that is hooked up to the decorator
+ * mechanism.
+ *
+ * @return a new <code>DecoratingLabelProvider</code> which wraps a <code>
+ * new <code>WorkbenchLabelProvider</code>
+ */
+ public static ILabelProvider getDecoratingLabelProvider() {
+ return new DecoratingLabelProvider(
+ new SyncViewerLabelProvider(),
+ WorkbenchPlugin
+ .getDefault()
+ .getWorkbench()
+ .getDecoratorManager()
+ .getLabelDecorator());
+ }
+
+ public SyncViewerLabelProvider() {
+ }
+
+ public String getText(Object element) {
+ IResource resource = SyncSet.getIResource(element);
+ return workbenchLabelProvider.getText(resource);
+ }
+
+ public Image getImage(Object element) {
+ IResource resource = SyncSet.getIResource(element);
+ int kind= SyncSet.getSyncKind(null /* sync set */, element);
+ switch (kind & IRemoteSyncElement.DIRECTION_MASK) {
+ case IRemoteSyncElement.OUTGOING:
+ kind = (kind &~ IRemoteSyncElement.OUTGOING) | IRemoteSyncElement.INCOMING;
+ break;
+ case IRemoteSyncElement.INCOMING:
+ kind = (kind &~ IRemoteSyncElement.INCOMING) | IRemoteSyncElement.OUTGOING;
+ break;
+ }
+ Image image = workbenchLabelProvider.getImage(resource);
+ return compareConfig.getImage(image, kind);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.IBaseLabelProvider#dispose()
+ */
+ public void dispose() {
+ super.dispose();
+ workbenchLabelProvider.dispose();
+ compareConfig.dispose();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnImage(java.lang.Object, int)
+ */
+ public Image getColumnImage(Object element, int columnIndex) {
+ if (columnIndex == COL_RESOURCE) {
+ return getImage(element);
+ } else if (columnIndex == COL_PARENT) {
+ IResource resource = SyncSet.getIResource(element);
+ return null;
+ }
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(java.lang.Object, int)
+ */
+ public String getColumnText(Object element, int columnIndex) {
+ if (columnIndex == COL_RESOURCE) {
+ return getText(element);
+ } else if (columnIndex == COL_PARENT) {
+ IResource resource = SyncSet.getIResource(element);
+ return resource.getParent().getFullPath().toString();
+ }
+ return null;
+ }
+} \ No newline at end of file

Back to the top