Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Valenta2006-05-23 18:49:45 +0000
committerMichael Valenta2006-05-23 18:49:45 +0000
commit14de6252c0b62252f26a62628eb1498081490da4 (patch)
treeb060dc5c8aa48e46b5a3f231527f47eb1316564e /examples/org.eclipse.team.examples.filesystem
parentba3f73b3a15dba69624bdeeb2bef2bd7c817c012 (diff)
downloadeclipse.platform.team-14de6252c0b62252f26a62628eb1498081490da4.tar.gz
eclipse.platform.team-14de6252c0b62252f26a62628eb1498081490da4.tar.xz
eclipse.platform.team-14de6252c0b62252f26a62628eb1498081490da4.zip
Added the use of a sync state tester
Diffstat (limited to 'examples/org.eclipse.team.examples.filesystem')
-rw-r--r--examples/org.eclipse.team.examples.filesystem/src/org/eclipse/team/examples/model/ui/ModelNavigatorContentProvider.java46
1 files changed, 44 insertions, 2 deletions
diff --git a/examples/org.eclipse.team.examples.filesystem/src/org/eclipse/team/examples/model/ui/ModelNavigatorContentProvider.java b/examples/org.eclipse.team.examples.filesystem/src/org/eclipse/team/examples/model/ui/ModelNavigatorContentProvider.java
index 1f871a28b..6dbe77cbc 100644
--- a/examples/org.eclipse.team.examples.filesystem/src/org/eclipse/team/examples/model/ui/ModelNavigatorContentProvider.java
+++ b/examples/org.eclipse.team.examples.filesystem/src/org/eclipse/team/examples/model/ui/ModelNavigatorContentProvider.java
@@ -19,6 +19,7 @@ import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.widgets.Display;
import org.eclipse.team.examples.filesystem.FileSystemPlugin;
import org.eclipse.team.examples.model.*;
+import org.eclipse.team.ui.mapping.*;
import org.eclipse.ui.IMemento;
import org.eclipse.ui.model.BaseWorkbenchContentProvider;
import org.eclipse.ui.navigator.*;
@@ -31,12 +32,13 @@ import org.eclipse.ui.navigator.*;
* replace the corresponding resource project in the Project Explorer.
*/
public class ModelNavigatorContentProvider extends BaseWorkbenchContentProvider
- implements ICommonContentProvider, IResourceChangeListener, IPipelinedTreeContentProvider {
+ implements ICommonContentProvider, IResourceChangeListener, IPipelinedTreeContentProvider, ITeamStateChangeListener {
private ICommonContentExtensionSite extensionSite;
private boolean isWorkspaceRoot;
private Viewer viewer;
private final boolean updateViewer;
+ private SynchronizationStateTester syncStateTester;
public ModelNavigatorContentProvider() {
super();
@@ -56,8 +58,12 @@ public class ModelNavigatorContentProvider extends BaseWorkbenchContentProvider
*/
public void init(ICommonContentExtensionSite aConfig) {
extensionSite = aConfig;
- if (updateViewer)
+ if (updateViewer) {
ResourcesPlugin.getWorkspace().addResourceChangeListener(this, IResourceChangeEvent.POST_CHANGE);
+ // Use a synchronization state tester to listen for team state changes
+ syncStateTester = new SynchronizationStateTester();
+ syncStateTester.getTeamStateProvider().addDecoratedStateChangeListener(this);
+ }
}
/* (non-Javadoc)
@@ -66,6 +72,8 @@ public class ModelNavigatorContentProvider extends BaseWorkbenchContentProvider
public void dispose() {
super.dispose();
ResourcesPlugin.getWorkspace().removeResourceChangeListener(this);
+ if (syncStateTester != null)
+ syncStateTester.getTeamStateProvider().removeDecoratedStateChangeListener(this);
}
/* (non-Javadoc)
@@ -121,6 +129,40 @@ public class ModelNavigatorContentProvider extends BaseWorkbenchContentProvider
}
/* (non-Javadoc)
+ * @see org.eclipse.team.ui.mapping.ITeamStateChangeListener#teamStateChanged(org.eclipse.team.ui.mapping.ITeamStateChangeEvent)
+ */
+ public void teamStateChanged(ITeamStateChangeEvent event) {
+ // We need to listen to team state changes in order to determine when we need
+ // to perform label updates on model elements.
+ // We actually just refresh all projects that contain changes.
+ // This is inefficient but will do for an example
+ Set refreshProjects = new HashSet();
+ IResource[] addedRoots = event.getAddedRoots();
+ for (int i = 0; i < addedRoots.length; i++) {
+ IResource resource = addedRoots[i];
+ if (isModelProject(resource.getProject())) {
+ refreshProjects.add(ModelObject.create(resource.getProject()));
+ }
+ }
+ IResource[] removedRoots = event.getRemovedRoots();
+ for (int i = 0; i < removedRoots.length; i++) {
+ IResource resource = removedRoots[i];
+ if (isModelProject(resource.getProject())) {
+ refreshProjects.add(ModelObject.create(resource.getProject()));
+ }
+ }
+ IResource[] changed = event.getChangedResources();
+ for (int i = 0; i < changed.length; i++) {
+ IResource resource = changed[i];
+ if (isModelProject(resource.getProject())) {
+ refreshProjects.add(ModelObject.create(resource.getProject()));
+ }
+ }
+
+ refreshProjects((ModelProject[]) refreshProjects.toArray(new ModelProject[refreshProjects.size()]));
+ }
+
+ /* (non-Javadoc)
* @see org.eclipse.core.resources.IResourceChangeListener#resourceChanged(org.eclipse.core.resources.IResourceChangeEvent)
*/
public void resourceChanged(IResourceChangeEvent event) {

Back to the top