Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin Muskalla2010-09-04 16:40:21 +0000
committerMatthias Sohn2010-09-06 22:38:13 +0000
commitd842c88527601fd4ff5cd8e9161a78ae05d58dd9 (patch)
treed650361409d4dd2140e90aeb157ecbb062c085b6 /org.eclipse.egit.ui
parent63a97f69fad13242f94f9e852e2845cca876fe14 (diff)
downloadegit-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')
-rw-r--r--org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/synchronize/mapping/GitChangeSetLabelProvider.java42
-rw-r--r--org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/synchronize/model/GitModelCommit.java3
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;
}

Back to the top