Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Valenta2005-11-17 16:49:24 +0000
committerMichael Valenta2005-11-17 16:49:24 +0000
commita18e979b6498195f14c6a010bc41dea566e50c65 (patch)
tree3530bb7866dd2aab01004b48beff9de1d2f9271f
parent390723eb1d9a33ac8d7f9665ac3063fad4988b18 (diff)
downloadeclipse.platform.team-a18e979b6498195f14c6a010bc41dea566e50c65.tar.gz
eclipse.platform.team-a18e979b6498195f14c6a010bc41dea566e50c65.tar.xz
eclipse.platform.team-a18e979b6498195f14c6a010bc41dea566e50c65.zip
Got java content provider working
-rw-r--r--bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/AbstractTeamAwareContentProvider.java155
-rw-r--r--bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/ModelSynchronizePage.java7
-rw-r--r--bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/ResourceModelLabelProvider.java2
-rw-r--r--bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/SynchronizationOperationLabelProvider.java35
-rw-r--r--bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/SynchronizationStateLabelProvider.java12
-rw-r--r--bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/synchronize/ParticipantPageSaveablePart.java3
6 files changed, 202 insertions, 12 deletions
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/AbstractTeamAwareContentProvider.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/AbstractTeamAwareContentProvider.java
new file mode 100644
index 000000000..51cfe0472
--- /dev/null
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/AbstractTeamAwareContentProvider.java
@@ -0,0 +1,155 @@
+/*******************************************************************************
+ * 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 Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.team.internal.ui.mapping;
+
+import org.eclipse.core.resources.mapping.ModelProvider;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.team.ui.TeamUI;
+import org.eclipse.team.ui.mapping.IResourceMappingScope;
+import org.eclipse.team.ui.mapping.ISynchronizationContext;
+import org.eclipse.ui.IMemento;
+import org.eclipse.ui.navigator.IExtensionStateModel;
+import org.eclipse.ui.navigator.internal.extensions.ICommonContentProvider;
+
+/**
+ * Abstract team aware content provider that delegates to anotehr content provider
+ */
+public abstract class AbstractTeamAwareContentProvider implements ICommonContentProvider {
+
+ private ModelProvider modelProvider;
+ private IResourceMappingScope scope;
+ private ISynchronizationContext context;
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object)
+ */
+ public Object[] getChildren(Object parentElement) {
+ if (parentElement == getModelProvider()) {
+ return filter(parentElement, getDelegateContentProvider().getChildren(getModelRoot()));
+ }
+ return filter(parentElement, getDelegateContentProvider().getChildren(parentElement));
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object)
+ */
+ public Object getParent(Object element) {
+ if (element instanceof ModelProvider)
+ return null;
+ if (element == getModelRoot())
+ return null;
+ Object parent = getDelegateContentProvider().getParent(element);
+ if (parent == getModelRoot())
+ return getModelProvider();
+ return parent;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object)
+ */
+ public boolean hasChildren(Object element) {
+ return getDelegateContentProvider().hasChildren(element) && filter(element, getChildren(element)).length > 0;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
+ */
+ public Object[] getElements(Object inputElement) {
+ if (inputElement == getModelProvider()) {
+ return filter(inputElement, getDelegateContentProvider().getChildren(getModelRoot()));
+ }
+ return filter(inputElement, getDelegateContentProvider().getElements(inputElement));
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.IContentProvider#dispose()
+ */
+ public void dispose() {
+ // Nothing to do
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
+ */
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ getDelegateContentProvider().inputChanged(viewer, oldInput, newInput);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.navigator.internal.extensions.ICommonContentProvider#init(org.eclipse.ui.navigator.IExtensionStateModel, org.eclipse.ui.IMemento)
+ */
+ public void init(IExtensionStateModel aStateModel, IMemento aMemento) {
+ scope = (IResourceMappingScope)aStateModel.getProperty(TeamUI.RESOURCE_MAPPING_SCOPE);
+ context = (ISynchronizationContext)aStateModel.getProperty(TeamUI.SYNCHRONIZATION_CONTEXT);
+ ITreeContentProvider provider = getDelegateContentProvider();
+ if (provider instanceof ICommonContentProvider) {
+ ((ICommonContentProvider) provider).init(aStateModel, aMemento);
+ }
+ }
+
+ protected ISynchronizationContext getContext() {
+ return context;
+ }
+
+ protected IResourceMappingScope getScope() {
+ return scope;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.navigator.IMementoAware#restoreState(org.eclipse.ui.IMemento)
+ */
+ public void restoreState(IMemento aMemento) {
+ ITreeContentProvider provider = getDelegateContentProvider();
+ if (provider instanceof ICommonContentProvider) {
+ ((ICommonContentProvider) provider).restoreState(aMemento);
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.navigator.IMementoAware#saveState(org.eclipse.ui.IMemento)
+ */
+ public void saveState(IMemento aMemento) {
+ ITreeContentProvider provider = getDelegateContentProvider();
+ if (provider instanceof ICommonContentProvider) {
+ ((ICommonContentProvider) provider).saveState(aMemento);
+ }
+ }
+
+ /**
+ * Return the model content provider that the team aware content
+ * provider delegates to.
+ * @return the model content provider
+ */
+ protected abstract ITreeContentProvider getDelegateContentProvider();
+
+ /**
+ * Filter the obtained children of the given parent so that only the
+ * desired elements are shown.
+ * @param parentElement the parent element
+ * @param children the children
+ * @return the filtered children
+ */
+ protected abstract Object[] filter(Object parentElement, Object[] children);
+
+ /**
+ * Return the model provider for this content provider.
+ * @return the model provider for this content provider
+ */
+ protected abstract ModelProvider getModelProvider();
+
+ /**
+ * Return the object that acts as the model root. It is used when getting the children
+ * for a model provider.
+ * @return the object that acts as the model root
+ */
+ protected abstract Object getModelRoot();
+}
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/ModelSynchronizePage.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/ModelSynchronizePage.java
index 32339d12e..45890572d 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/ModelSynchronizePage.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/ModelSynchronizePage.java
@@ -20,6 +20,8 @@ import org.eclipse.swt.widgets.Composite;
import org.eclipse.team.internal.ui.synchronize.*;
import org.eclipse.team.ui.mapping.ISynchronizationContext;
import org.eclipse.team.ui.synchronize.ISynchronizePageConfiguration;
+import org.eclipse.ui.IContributorResourceAdapter;
+import org.eclipse.ui.ide.IContributorResourceAdapter2;
/**
* A synchronize page that uses
@@ -113,6 +115,11 @@ public class ModelSynchronizePage extends AbstractSynchronizePage {
if (adapted instanceof ResourceMapping) {
return(ResourceMapping) adapted;
}
+ adapted = adaptable.getAdapter(IContributorResourceAdapter.class);
+ if (adapted instanceof IContributorResourceAdapter2) {
+ IContributorResourceAdapter2 cra = (IContributorResourceAdapter2) adapted;
+ return cra.getAdaptedResourceMapping(adaptable);
+ }
} else {
Object adapted = Platform.getAdapterManager().getAdapter(o, ResourceMapping.class);
if (adapted instanceof ResourceMapping) {
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/ResourceModelLabelProvider.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/ResourceModelLabelProvider.java
index 4e8325e46..6187c0f9b 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/ResourceModelLabelProvider.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/ResourceModelLabelProvider.java
@@ -26,7 +26,7 @@ public class ResourceModelLabelProvider extends
/* (non-Javadoc)
* @see org.eclipse.team.internal.ui.mapping.SynchronizationOperationLabelProvider#getBaseLabelProvider()
*/
- protected ILabelProvider getBaseLabelProvider() {
+ protected ILabelProvider getDelegateLabelProvider() {
return provider ;
}
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/SynchronizationOperationLabelProvider.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/SynchronizationOperationLabelProvider.java
index 8db63e627..0fba40774 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/SynchronizationOperationLabelProvider.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/SynchronizationOperationLabelProvider.java
@@ -32,7 +32,19 @@ public abstract class SynchronizationOperationLabelProvider extends Synchronizat
* @see org.eclipse.ui.navigator.ICommonLabelProvider#init(org.eclipse.ui.navigator.IExtensionStateModel, org.eclipse.jface.viewers.ITreeContentProvider)
*/
public void init(IExtensionStateModel aStateModel, ITreeContentProvider aContentProvider) {
- init((IResourceMappingScope)aStateModel.getProperty(TeamUI.RESOURCE_MAPPING_SCOPE), (ISynchronizationContext)aStateModel.getProperty(TeamUI.SYNCHRONIZATION_CONTEXT));
+ init((IResourceMappingScope)aStateModel.getProperty(TeamUI.RESOURCE_MAPPING_SCOPE), (ISynchronizationContext)aStateModel.getProperty(TeamUI.SYNCHRONIZATION_CONTEXT));
+ ILabelProvider provider = getDelegateLabelProvider();
+ if (provider instanceof ICommonLabelProvider) {
+ if (aContentProvider instanceof AbstractTeamAwareContentProvider) {
+ // Assume that there is a similary wrapped content provider and that the wrapped label provider
+ // only knows about that one
+ // TODO: This is kind of dangerous to build in. We need to consider alternatives
+ AbstractTeamAwareContentProvider tacp = (AbstractTeamAwareContentProvider) aContentProvider;
+ ((ICommonLabelProvider) provider).init(aStateModel, tacp.getDelegateContentProvider());
+ } else {
+ ((ICommonLabelProvider) provider).init(aStateModel, aContentProvider);
+ }
+ }
}
/**
@@ -57,14 +69,31 @@ public abstract class SynchronizationOperationLabelProvider extends Synchronizat
* @see org.eclipse.ui.navigator.IMementoAware#restoreState(org.eclipse.ui.IMemento)
*/
public void restoreState(IMemento aMemento) {
- // Do nothing by default
+ ILabelProvider provider = getDelegateLabelProvider();
+ if (provider instanceof ICommonLabelProvider) {
+ ((ICommonLabelProvider) provider).restoreState(aMemento);
+ }
}
/* (non-Javadoc)
* @see org.eclipse.ui.navigator.IMementoAware#saveState(org.eclipse.ui.IMemento)
*/
public void saveState(IMemento aMemento) {
- // Do nothing by default
+ ILabelProvider provider = getDelegateLabelProvider();
+ if (provider instanceof ICommonLabelProvider) {
+ ((ICommonLabelProvider) provider).saveState(aMemento);
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.navigator.IDescriptionProvider#getDescription(java.lang.Object)
+ */
+ public String getDescription(Object anElement) {
+ ILabelProvider provider = getDelegateLabelProvider();
+ if (provider instanceof ICommonLabelProvider) {
+ return ((ICommonLabelProvider) provider).getDescription(anElement);
+ }
+ return getDelegateLabelProvider().toString();
}
/* (non-Javadoc)
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/SynchronizationStateLabelProvider.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/SynchronizationStateLabelProvider.java
index ce21a094c..f179338d1 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/SynchronizationStateLabelProvider.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/SynchronizationStateLabelProvider.java
@@ -37,7 +37,7 @@ public abstract class SynchronizationStateLabelProvider implements ILabelProvide
* @see org.eclipse.jface.viewers.ILabelProvider#getImage(java.lang.Object)
*/
public Image getImage(Object element) {
- ILabelProvider modelLabelProvider = getBaseLabelProvider();
+ ILabelProvider modelLabelProvider = getDelegateLabelProvider();
Image base = modelLabelProvider.getImage(element);
if (isDecorationEnabled() && base != null) {
int kind = getSyncKind(element);
@@ -67,7 +67,7 @@ public abstract class SynchronizationStateLabelProvider implements ILabelProvide
* @see org.eclipse.jface.viewers.ILabelProvider#getText(java.lang.Object)
*/
public String getText(Object element) {
- ILabelProvider modelLabelProvider = getBaseLabelProvider();
+ ILabelProvider modelLabelProvider = getDelegateLabelProvider();
String base = modelLabelProvider.getText(element);
if (isSyncInfoInTextEnabled()) {
int kind = getSyncKind(element);
@@ -83,7 +83,7 @@ public abstract class SynchronizationStateLabelProvider implements ILabelProvide
* @see org.eclipse.jface.viewers.IBaseLabelProvider#addListener(org.eclipse.jface.viewers.ILabelProviderListener)
*/
public void addListener(ILabelProviderListener listener) {
- getBaseLabelProvider().addListener(listener);
+ getDelegateLabelProvider().addListener(listener);
}
/* (non-Javadoc)
@@ -104,14 +104,14 @@ public abstract class SynchronizationStateLabelProvider implements ILabelProvide
* @see org.eclipse.jface.viewers.IBaseLabelProvider#isLabelProperty(java.lang.Object, java.lang.String)
*/
public boolean isLabelProperty(Object element, String property) {
- return getBaseLabelProvider().isLabelProperty(element, property);
+ return getDelegateLabelProvider().isLabelProperty(element, property);
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.IBaseLabelProvider#removeListener(org.eclipse.jface.viewers.ILabelProviderListener)
*/
public void removeListener(ILabelProviderListener listener) {
- getBaseLabelProvider().removeListener(listener);
+ getDelegateLabelProvider().removeListener(listener);
}
/**
@@ -132,7 +132,7 @@ public abstract class SynchronizationStateLabelProvider implements ILabelProvide
* @return the label provider that will return the text and image
* appropriate for the given model element
*/
- protected abstract ILabelProvider getBaseLabelProvider();
+ protected abstract ILabelProvider getDelegateLabelProvider();
/**
* Return whether the label provider shoudl decorate with the synchronization state.
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/synchronize/ParticipantPageSaveablePart.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/synchronize/ParticipantPageSaveablePart.java
index de7516283..3dd5c943f 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/synchronize/ParticipantPageSaveablePart.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/synchronize/ParticipantPageSaveablePart.java
@@ -283,8 +283,7 @@ public class ParticipantPageSaveablePart extends SaveablePartAdapter implements
((ISynchronizePage)page).getViewer().addSelectionChangedListener(new ISelectionChangedListener() {
public void selectionChanged(SelectionChangedEvent event) {
ICompareInput input = getCompareInput(event.getSelection());
- if (input != null)
- setInput(input);
+ setInput(input);
}
});
initializeDiffViewer(((ISynchronizePage)page).getViewer());

Back to the top