From 0fa5a234e23196fee479516bee3690be19c58af7 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Tue, 27 Jan 2009 23:42:04 +0100 Subject: [PATCH] Don't decorate every single resource on repository change MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Not all resources have corresponding labels that are visible, so by using LabelProviderChangedEvent() we ensure that only the visible labels are refreshed. The downside is that we lose project precition, so all projects are included, but only visible labels in those projects are re-decorated, so it is OK for now. Signed-off-by: Tor Arne Vestbø --- .../decorators/GitLightweightDecorator.java | 28 ++++------------------ 1 file changed, 4 insertions(+), 24 deletions(-) diff --git a/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/decorators/GitLightweightDecorator.java b/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/decorators/GitLightweightDecorator.java index c23ce241..1e953697 100644 --- a/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/decorators/GitLightweightDecorator.java +++ b/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/decorators/GitLightweightDecorator.java @@ -14,11 +14,9 @@ package org.spearce.egit.ui.internal.decorators; import java.io.IOException; -import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; -import java.util.List; import java.util.Map; import java.util.Set; @@ -28,7 +26,6 @@ import org.eclipse.core.resources.IResourceChangeEvent; import org.eclipse.core.resources.IResourceChangeListener; import org.eclipse.core.resources.IResourceDelta; import org.eclipse.core.resources.IResourceDeltaVisitor; -import org.eclipse.core.resources.IResourceVisitor; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.resources.mapping.ResourceMapping; import org.eclipse.core.runtime.CoreException; @@ -697,7 +694,7 @@ public class GitLightweightDecorator extends LabelProvider implements if (prop.equals(TeamUI.GLOBAL_IGNORES_CHANGED) || prop.equals(TeamUI.GLOBAL_FILE_TYPES_CHANGED) || prop.equals(Activator.DECORATORS_CHANGED)) { - postLabelEvent(new LabelProviderChangedEvent(this, null /* all */)); + postLabelEvent(new LabelProviderChangedEvent(this)); } } @@ -824,29 +821,12 @@ public class GitLightweightDecorator extends LabelProvider implements * Callback for RepositoryChangeListener events, as well as * RepositoryListener events via repositoryChanged() * - * We resolve the project and schedule a refresh of each resource in the - * project. - * * @see org.spearce.egit.core.project.RepositoryChangeListener#repositoryChanged(org.spearce.egit.core.project.RepositoryMapping) */ public void repositoryChanged(RepositoryMapping mapping) { - final IProject project = mapping.getContainer().getProject(); - if (project == null) - return; - - final List resources = new ArrayList(); - try { - project.accept(new IResourceVisitor() { - public boolean visit(IResource resource) { - resources.add(resource); - return true; - } - }); - postLabelEvent(new LabelProviderChangedEvent(this, resources - .toArray())); - } catch (final CoreException e) { - handleException(project, e); - } + // Until we find a way to refresh visible labels within a project + // we have to use this blanket refresh that includes all projects. + postLabelEvent(new LabelProviderChangedEvent(this)); } // -------- Helper methods -------- -- 2.11.4.GIT