Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/decorators/DecoratableResourceAdapter.java')
-rw-r--r--org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/decorators/DecoratableResourceAdapter.java144
1 files changed, 17 insertions, 127 deletions
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/decorators/DecoratableResourceAdapter.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/decorators/DecoratableResourceAdapter.java
index 8d8e01ddfa..3424c23348 100644
--- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/decorators/DecoratableResourceAdapter.java
+++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/decorators/DecoratableResourceAdapter.java
@@ -30,7 +30,6 @@ import org.eclipse.egit.ui.Activator;
import org.eclipse.egit.ui.UIPreferences;
import org.eclipse.egit.ui.internal.trace.GitTraceLocation;
import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jgit.dircache.DirCacheEntry;
import org.eclipse.jgit.dircache.DirCacheIterator;
import org.eclipse.jgit.errors.IncorrectObjectTypeException;
import org.eclipse.jgit.errors.MissingObjectException;
@@ -48,9 +47,7 @@ import org.eclipse.jgit.treewalk.filter.AndTreeFilter;
import org.eclipse.jgit.treewalk.filter.PathFilterGroup;
import org.eclipse.jgit.treewalk.filter.TreeFilter;
-class DecoratableResourceAdapter implements IDecoratableResource {
-
- private final IResource resource;
+class DecoratableResourceAdapter extends DecoratableResource {
private final RepositoryMapping mapping;
@@ -60,35 +57,13 @@ class DecoratableResourceAdapter implements IDecoratableResource {
private final IPreferenceStore store;
- private final String branch;
-
- private final String repositoryName;
-
- private boolean tracked = false;
-
- private boolean ignored = false;
-
- private boolean dirty = false;
-
- private boolean conflicts = false;
-
- private boolean assumeValid = false;
-
- private Staged staged = Staged.NOT_STAGED;
-
private final boolean trace;
- static final int T_HEAD = 0;
-
- static final int T_INDEX = 1;
-
- static final int T_WORKSPACE = 2;
-
@SuppressWarnings("fallthrough")
public DecoratableResourceAdapter(IResource resourceToWrap)
throws IOException {
+ super(resourceToWrap);
trace = GitTraceLocation.DECORATION.isActive();
- resource = resourceToWrap;
long start = 0;
if (trace) {
GitTraceLocation.getTrace().trace(
@@ -154,59 +129,7 @@ class DecoratableResourceAdapter implements IDecoratableResource {
}
private void extractResourceProperties(TreeWalk treeWalk) throws IOException {
- final ContainerTreeIterator workspaceIterator = treeWalk.getTree(
- T_WORKSPACE, ContainerTreeIterator.class);
- final ResourceEntry resourceEntry = workspaceIterator != null ? workspaceIterator
- .getResourceEntry() : null;
-
- if (resourceEntry == null)
- return;
-
- if (workspaceIterator != null && workspaceIterator.isEntryIgnored()) {
- ignored = true;
- return;
- }
-
- final int mHead = treeWalk.getRawMode(T_HEAD);
- final int mIndex = treeWalk.getRawMode(T_INDEX);
-
- if (mHead == FileMode.MISSING.getBits()
- && mIndex == FileMode.MISSING.getBits())
- return;
-
- tracked = true;
-
- if (mHead == FileMode.MISSING.getBits()) {
- staged = Staged.ADDED;
- } else if (mIndex == FileMode.MISSING.getBits()) {
- staged = Staged.REMOVED;
- } else if (mHead != mIndex
- || (mIndex != FileMode.TREE.getBits() && !treeWalk.idEqual(
- T_HEAD, T_INDEX))) {
- staged = Staged.MODIFIED;
- } else {
- staged = Staged.NOT_STAGED;
- }
-
- final DirCacheIterator indexIterator = treeWalk.getTree(T_INDEX,
- DirCacheIterator.class);
- final DirCacheEntry indexEntry = indexIterator != null ? indexIterator
- .getDirCacheEntry() : null;
-
- if (indexEntry == null)
- return;
-
- if (indexEntry.getStage() > 0)
- conflicts = true;
-
- if (indexEntry.isAssumeValid()) {
- dirty = false;
- assumeValid = true;
- } else {
- if (workspaceIterator != null
- && workspaceIterator.isModified(indexEntry, true))
- dirty = true;
- }
+ DecoratableResourceHelper.decorateResource(this, treeWalk);
}
private class RecursiveStateFilter extends TreeFilter {
@@ -231,7 +154,8 @@ class DecoratableResourceAdapter implements IDecoratableResource {
GitTraceLocation.DECORATION.getLocation(),
treeWalk.getPathString());
final WorkingTreeIterator workingTreeIterator = treeWalk.getTree(
- T_WORKSPACE, WorkingTreeIterator.class);
+ DecoratableResourceHelper.T_WORKSPACE,
+ WorkingTreeIterator.class);
if (workingTreeIterator != null) {
if (workingTreeIterator instanceof ContainerTreeIterator) {
final ContainerTreeIterator workspaceIterator =
@@ -245,8 +169,10 @@ class DecoratableResourceAdapter implements IDecoratableResource {
}
if (resource.getFullPath().isPrefixOf(
resourceEntry.getResource().getFullPath())
- && treeWalk.getFileMode(T_HEAD) == FileMode.MISSING
- && treeWalk.getFileMode(T_INDEX) == FileMode.MISSING) {
+ && treeWalk
+ .getFileMode(DecoratableResourceHelper.T_HEAD) == FileMode.MISSING
+ && treeWalk
+ .getFileMode(DecoratableResourceHelper.T_INDEX) == FileMode.MISSING) {
// we reached the folder to decorate (or are beyond)
// we can cut if the current entry does not
// exist in head and index
@@ -272,8 +198,10 @@ class DecoratableResourceAdapter implements IDecoratableResource {
}
if (resPath.isPrefixOf(wdPath)
- && treeWalk.getFileMode(T_HEAD) == FileMode.MISSING
- && treeWalk.getFileMode(T_INDEX) == FileMode.MISSING) {
+ && treeWalk
+ .getFileMode(DecoratableResourceHelper.T_HEAD) == FileMode.MISSING
+ && treeWalk
+ .getFileMode(DecoratableResourceHelper.T_INDEX) == FileMode.MISSING) {
// we reached the folder to decorate (or are beyond)
// we can cut if the current entry does not
// exist in head and index
@@ -286,7 +214,8 @@ class DecoratableResourceAdapter implements IDecoratableResource {
}
}
- if (FileMode.TREE.equals(treeWalk.getRawMode(T_WORKSPACE)))
+ if (FileMode.TREE.equals(treeWalk
+ .getRawMode(DecoratableResourceHelper.T_WORKSPACE)))
return shouldRecurse(treeWalk);
// Backup current state so far
@@ -310,7 +239,8 @@ class DecoratableResourceAdapter implements IDecoratableResource {
private boolean shouldRecurse(TreeWalk treeWalk) throws IOException {
final WorkingTreeIterator workspaceIterator = treeWalk.getTree(
- T_WORKSPACE, WorkingTreeIterator.class);
+ DecoratableResourceHelper.T_WORKSPACE,
+ WorkingTreeIterator.class);
if (workspaceIterator instanceof AdaptableFileTreeIterator)
return true;
@@ -425,44 +355,4 @@ class DecoratableResourceAdapter implements IDecoratableResource {
treeWalk.addTree(IteratorService.createInitialIterator(repository));
return treeWalk;
}
-
- public String getName() {
- return resource.getName();
- }
-
- public int getType() {
- return resource.getType();
- }
-
- public String getRepositoryName() {
- return repositoryName;
- }
-
- public String getBranch() {
- return branch;
- }
-
- public boolean isTracked() {
- return tracked;
- }
-
- public boolean isIgnored() {
- return ignored;
- }
-
- public boolean isDirty() {
- return dirty;
- }
-
- public Staged staged() {
- return staged;
- }
-
- public boolean hasConflicts() {
- return conflicts;
- }
-
- public boolean isAssumeValid() {
- return assumeValid;
- }
}

Back to the top