Signed-off-by: Robin Rosenberg <robin.rosenberg@xxxxxxxxxx> --- .../spearce/egit/ui/internal/history/RevDiff.java | 40 +++++++++++++++++++- 1 files changed, 38 insertions(+), 2 deletions(-) diff --git a/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/history/RevDiff.java b/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/history/RevDiff.java index 020ec73..084da3b 100644 --- a/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/history/RevDiff.java +++ b/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/history/RevDiff.java @@ -2,9 +2,13 @@ import org.eclipse.compare.ITypedElement; import org.eclipse.compare.structuremergeviewer.IStructureComparator; +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.jface.viewers.DecorationOverlayIcon; +import org.eclipse.jface.viewers.IDecoration; import org.eclipse.swt.graphics.Image; import org.eclipse.team.internal.ui.history.FileRevisionTypedElement; import org.spearce.egit.core.internal.storage.GitFileRevision; +import org.spearce.egit.ui.UIIcons; import org.spearce.jgit.lib.Repository; class RevDiff { @@ -46,9 +50,41 @@ public String getType() { public Object[] getChildren() { FileRevisionTypedElement[] ret = new FileRevisionTypedElement[fileDiffs.length]; for (int i = 0; i < ret.length; ++i) { + final FileDiff d = fileDiffs[i]; ret[i] = new FileRevisionTypedElement(GitFileRevision.inCommit(db, - fileDiffs[i].commit, fileDiffs[i].path, - fileDiffs[i].blobs[side])); + d.commit, d.path, d.blobs[side])) { + private Image image; + + @Override + protected void finalize() throws Throwable { + if (image != null) + image.dispose(); + } + + @Override + public Image getImage() { + if (image == null) { + ImageDescriptor overlay; + switch (d.change.charAt(0)) { + case 'A': + overlay = UIIcons.OVR_PENDING_ADD; + break; + case 'M': + overlay = UIIcons.OVR_SHARED; + break; + case 'D': + overlay = UIIcons.OVR_PENDING_REMOVE; + break; + default: + return super.getImage(); // Should not happen... + } + image = new DecorationOverlayIcon(super.getImage(), + overlay, IDecoration.BOTTOM_RIGHT) + .createImage(); + } + return image; + } + }; } return ret; } -- 1.6.1.rc3.56.gd0306 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html