From 35bd269410e101ae0e9787e5affbf2866bc30ff6 Mon Sep 17 00:00:00 2001 From: Kirill Likhodedov Date: Tue, 21 Feb 2012 21:13:47 +0400 Subject: [PATCH] IDEA-78156 Make git branch max text a bit smaller, add ellipsis to the middle Move shortenTextWithEllipsis to StringUtil --- .../openapi/util/text/StringUtil.java | 19 +++++++++++++++++++ .../git4idea/ui/branch/GitBranchWidget.java | 7 +++++-- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/platform/util/src/com/intellij/openapi/util/text/StringUtil.java b/platform/util/src/com/intellij/openapi/util/text/StringUtil.java index 09fd71b0eee9..10f96efc3f06 100644 --- a/platform/util/src/com/intellij/openapi/util/text/StringUtil.java +++ b/platform/util/src/com/intellij/openapi/util/text/StringUtil.java @@ -2247,4 +2247,23 @@ public class StringUtil { public static boolean isOctalDigit(char c) { return '0' <= c && c <= '7'; } + + @NotNull + public static String shortenTextWithEllipsis(final String text, final int max_length, final int suffix_length) { + final int prefix_length = max_length - suffix_length - 3; + assert prefix_length > 0; + final StringBuilder buffer = new StringBuilder(); + final int textLength = text.length(); + if (textLength > max_length) { + StringBuilder shorterText = new StringBuilder(); + shorterText.append(text.substring(0, prefix_length)); + shorterText.append("..."); + shorterText.append(text.substring(textLength - suffix_length)); + buffer.append(shorterText.toString()); + } + else { + buffer.append(text); + } + return buffer.toString(); + } } diff --git a/plugins/git4idea/src/git4idea/ui/branch/GitBranchWidget.java b/plugins/git4idea/src/git4idea/ui/branch/GitBranchWidget.java index dcd5cd443360..6feb64222a0a 100644 --- a/plugins/git4idea/src/git4idea/ui/branch/GitBranchWidget.java +++ b/plugins/git4idea/src/git4idea/ui/branch/GitBranchWidget.java @@ -43,11 +43,13 @@ public class GitBranchWidget extends EditorBasedWidget implements StatusBarWidge private final GitVcsSettings mySettings; private volatile String myText = ""; private volatile String myTooltip = ""; + private final String myMaxString; public GitBranchWidget(Project project) { super(project); GitRepositoryManager.getInstance(project).addListenerToAllRepositories(this); mySettings = GitVcsSettings.getInstance(project); + myMaxString = "Git: Rebasing master"; } @Override @@ -108,7 +110,7 @@ public class GitBranchWidget extends EditorBasedWidget implements StatusBarWidge @NotNull @Override public String getMaxValue() { - return "Git: Rebasing abcdefghij"; + return myMaxString; } @Override @@ -142,7 +144,8 @@ public class GitBranchWidget extends EditorBasedWidget implements StatusBarWidge return; } - myText = GitBranchUiUtil.getDisplayableBranchText(repo); + int maxLength = myMaxString.length() - 1; // -1, because there are arrows indicating that it is a popup + myText = StringUtil.shortenTextWithEllipsis(GitBranchUiUtil.getDisplayableBranchText(repo), maxLength, 5); myTooltip = getDisplayableBranchTooltip(repo); myStatusBar.updateWidget(ID()); mySettings.setRecentRoot(repo.getRoot().getPath());