diff options
author | Benjamin Muskalla | 2010-09-04 16:40:21 +0000 |
---|---|---|
committer | Matthias Sohn | 2010-09-06 22:38:13 +0000 |
commit | d842c88527601fd4ff5cd8e9161a78ae05d58dd9 (patch) | |
tree | d650361409d4dd2140e90aeb157ecbb062c085b6 /org.eclipse.egit.ui | |
parent | 63a97f69fad13242f94f9e852e2845cca876fe14 (diff) | |
download | egit-d842c88527601fd4ff5cd8e9161a78ae05d58dd9.tar.gz egit-d842c88527601fd4ff5cd8e9161a78ae05d58dd9.tar.xz egit-d842c88527601fd4ff5cd8e9161a78ae05d58dd9.zip |
Append commit id at the end of the changeset
To declutter the Synchronize view with many changesets, the commit id
should be at the end of the changesets name and in a lighter color then
the rest of the text.
Bug: 324365
Change-Id: I5f15413cf3f44613fc6f56bb45c7c9744eb2615c
Signed-off-by: Benjamin Muskalla <bmuskalla@eclipsesource.com>
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
Diffstat (limited to 'org.eclipse.egit.ui')
2 files changed, 42 insertions, 3 deletions
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/synchronize/mapping/GitChangeSetLabelProvider.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/synchronize/mapping/GitChangeSetLabelProvider.java index c5bc62b6b0..6735b0df77 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/synchronize/mapping/GitChangeSetLabelProvider.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/synchronize/mapping/GitChangeSetLabelProvider.java @@ -8,7 +8,10 @@ *******************************************************************************/ package org.eclipse.egit.ui.internal.synchronize.mapping; +import java.io.IOException; + import org.eclipse.core.resources.IResource; +import org.eclipse.egit.core.Activator; import org.eclipse.egit.ui.UIIcons; import org.eclipse.egit.ui.internal.synchronize.model.GitModelBlob; import org.eclipse.egit.ui.internal.synchronize.model.GitModelCommit; @@ -18,8 +21,14 @@ import org.eclipse.egit.ui.internal.synchronize.model.GitModelTree; import org.eclipse.jface.resource.JFaceResources; import org.eclipse.jface.resource.LocalResourceManager; import org.eclipse.jface.resource.ResourceManager; +import org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.IStyledLabelProvider; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.LabelProvider; +import org.eclipse.jface.viewers.StyledString; +import org.eclipse.jgit.lib.AbbreviatedObjectId; +import org.eclipse.jgit.lib.ObjectId; +import org.eclipse.jgit.lib.ObjectReader; +import org.eclipse.jgit.revwalk.RevCommit; import org.eclipse.swt.graphics.Image; import org.eclipse.team.ui.mapping.SynchronizationLabelProvider; import org.eclipse.ui.model.WorkbenchLabelProvider; @@ -27,7 +36,7 @@ import org.eclipse.ui.model.WorkbenchLabelProvider; /** * Label provider for Git ChangeSet model. */ -public class GitChangeSetLabelProvider extends SynchronizationLabelProvider { +public class GitChangeSetLabelProvider extends SynchronizationLabelProvider implements IStyledLabelProvider { private static final ILabelProvider workbenchLabelProvider = WorkbenchLabelProvider .getDecoratingWorkbenchLabelProvider(); @@ -81,6 +90,37 @@ public class GitChangeSetLabelProvider extends SynchronizationLabelProvider { fImageCache.dispose(); super.dispose(); } + + } + + public StyledString getStyledText(Object element) { + String rawText = getText(element); + // need to compare classes as everything is 'instanceof GitModelCommit' + if (element.getClass().equals(GitModelCommit.class)) { + StyledString string = new StyledString(rawText); + GitModelCommit commit = (GitModelCommit) element; + String format = " [" + getAbbreviatedId(commit) + "]"; //$NON-NLS-1$//$NON-NLS-2$ + string.append(format, StyledString.DECORATIONS_STYLER); + return string; + } + + return new StyledString(rawText); + } + + private String getAbbreviatedId(GitModelCommit commit) { + RevCommit remoteCommit = commit.getRemoteCommit(); + ObjectReader reader = commit.getRepository().newObjectReader(); + ObjectId commitId = remoteCommit.getId(); + AbbreviatedObjectId shortId; + try { + shortId = reader.abbreviate(commitId, 6); + } catch (IOException e) { + shortId = AbbreviatedObjectId.fromObjectId(ObjectId.zeroId()); + Activator.logError(e.getMessage(), e); + } finally { + reader.release(); + } + return shortId.name(); } } diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/synchronize/model/GitModelCommit.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/synchronize/model/GitModelCommit.java index 8342c31df4..b9698969ec 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/synchronize/model/GitModelCommit.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/synchronize/model/GitModelCommit.java @@ -123,8 +123,7 @@ public class GitModelCommit extends GitModelObject implements @Override public String getName() { if (name == null) - name = remoteCommit.getName().substring(0, 6) - + ": " + remoteCommit.getShortMessage();//$NON-NLS-1$ + name = remoteCommit.getShortMessage(); return name; } |