Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Valenta2006-04-19 17:37:18 +0000
committerMichael Valenta2006-04-19 17:37:18 +0000
commit49460f2ce9e76be084c9642ac1f772a253b2cd94 (patch)
treed841df1f055773771261e4e48641f5485a0c490a /bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/mappings/ChangeSetContentProvider.java
parentabf8df2868f66180a4b2d9fa59be2a9673e31692 (diff)
downloadeclipse.platform.team-49460f2ce9e76be084c9642ac1f772a253b2cd94.tar.gz
eclipse.platform.team-49460f2ce9e76be084c9642ac1f772a253b2cd94.tar.xz
eclipse.platform.team-49460f2ce9e76be084c9642ac1f772a253b2cd94.zip
Bug 134609 [Change Sets] Visibility check doesn't consider mode
Diffstat (limited to 'bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/mappings/ChangeSetContentProvider.java')
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/mappings/ChangeSetContentProvider.java72
1 files changed, 63 insertions, 9 deletions
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/mappings/ChangeSetContentProvider.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/mappings/ChangeSetContentProvider.java
index 3c2035e5f..2473bf9c0 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/mappings/ChangeSetContentProvider.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/mappings/ChangeSetContentProvider.java
@@ -10,10 +10,7 @@
*******************************************************************************/
package org.eclipse.team.internal.ccvs.ui.mappings;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
+import java.util.*;
import org.eclipse.core.resources.*;
import org.eclipse.core.resources.mapping.ModelProvider;
@@ -29,6 +26,7 @@ import org.eclipse.team.internal.ccvs.core.mapping.CVSCheckedInChangeSet;
import org.eclipse.team.internal.ccvs.core.mapping.ChangeSetModelProvider;
import org.eclipse.team.internal.core.subscribers.*;
import org.eclipse.team.internal.core.subscribers.BatchingChangeSetManager.CollectorChangeEvent;
+import org.eclipse.team.internal.ui.IPreferenceIds;
import org.eclipse.team.internal.ui.Utils;
import org.eclipse.team.internal.ui.mapping.ResourceModelContentProvider;
import org.eclipse.team.internal.ui.mapping.ResourceModelLabelProvider;
@@ -451,13 +449,19 @@ public class ChangeSetContentProvider extends ResourceModelContentProvider imple
}
private boolean isVisible(Object object, IResourceDiffTree tree) {
- //TODO: need to match diff direction with mode
if (object instanceof IResource) {
IResource resource = (IResource) object;
- if (tree.getDiff(resource) != null)
+ IDiff diff = tree.getDiff(resource);
+ if (diff != null && isVisible(diff))
return true;
int depth = getTraversalCalculator().getLayoutDepth(resource, null);
- return tree.getDiffs(resource, depth).length > 0;
+ IDiff[] diffs = tree.getDiffs(resource, depth);
+ for (int i = 0; i < diffs.length; i++) {
+ IDiff child = diffs[i];
+ if (isVisible(child)) {
+ return true;
+ }
+ }
}
return false;
}
@@ -493,7 +497,7 @@ public class ChangeSetContentProvider extends ResourceModelContentProvider imple
List result = new ArrayList();
for (int i = 0; i < sets.length; i++) {
DiffChangeSet set = sets[i];
- TreePath path = getPathForElement(set.getDiffTree(), resource);
+ TreePath path = getPathForElement(set, resource);
if (path != null)
result.add(path);
}
@@ -542,10 +546,60 @@ public class ChangeSetContentProvider extends ResourceModelContentProvider imple
}
private TreePath getPathForElement(IResourceDiffTree tree, IResource resource) {
- // TODO Auto-generated method stub
+ List pathList = getPath(tree, resource);
+ if (pathList != null) {
+ TreePath path = new TreePath(pathList.toArray());
+ return path;
+ }
return null;
}
+
+ private TreePath getPathForElement(DiffChangeSet set, IResource resource) {
+ List pathList = getPath(set.getDiffTree(), resource);
+ if (pathList != null) {
+ pathList.add(0, set);
+ TreePath path = new TreePath(pathList.toArray());
+ return path;
+ }
+ return null;
+ }
+
+ private List getPath(IResourceDiffTree tree, IResource resource) {
+ boolean hasDiff = tree.getDiff(resource) == null;
+ if (hasDiff && tree.members(resource).length == 0)
+ return null;
+ if (resource.getType() == IResource.ROOT) {
+ return null;
+ }
+ List result = new ArrayList();
+ result.add(resource.getProject());
+ if (resource.getType() != IResource.PROJECT) {
+ String layout = getTraversalCalculator().getLayout();
+ if (layout.equals(IPreferenceIds.FLAT_LAYOUT)) {
+ result.add(resource);
+ } else if (layout.equals(IPreferenceIds.COMPRESSED_LAYOUT) && resource.getType() == IResource.FOLDER) {
+ result.add(resource);
+ } else if (layout.equals(IPreferenceIds.COMPRESSED_LAYOUT) && resource.getType() == IResource.FILE) {
+ IContainer parent = resource.getParent();
+ if (parent.getType() != IResource.PROJECT)
+ result.add(parent);
+ result.add(resource);
+ } else {
+ List resourcePath = new ArrayList();
+ IResource next = resource;
+ while (next.getType() != IResource.PROJECT) {
+ resourcePath.add(next);
+ next = next.getParent();
+ }
+ for (int i = resourcePath.size() - 1; i >=0; i--) {
+ result.add(resourcePath.get(i));
+ }
+ }
+ }
+ return result;
+ }
+
public void init(ICommonContentExtensionSite site) {
super.init(site);
ChangeSetCapability csc = getChangeSetCapability();

Back to the top