Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Keppler2018-08-14 10:47:18 +0000
committerMatthias Sohn2018-09-01 23:43:05 +0000
commit154d5ce9fad497724b5c5f5213ceed7382a031bd (patch)
tree4ba03a0b8bc19df448f00a1eb3863bfac2c14022
parent1d62358947c3fb2298851712d60fc48a54d2581e (diff)
downloadegit-154d5ce9fad497724b5c5f5213ceed7382a031bd.tar.gz
egit-154d5ce9fad497724b5c5f5213ceed7382a031bd.tar.xz
egit-154d5ce9fad497724b5c5f5213ceed7382a031bd.zip
Commit editor: Abbreviate parent SHA-1 with 7 characters
Abbreviate the parent SHA-1 with the same 7 characters used in history and other places. Add a tooltip to show the complete value on hovering. Add a context menu for copying the SHA-1. Bug:537931 Change-Id: Ia0154d3904481869fb05611c746c2d6180ecb43a Signed-off-by: Michael Keppler <Michael.Keppler@gmx.de> Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
-rw-r--r--org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/ClipboardUtils.java53
-rw-r--r--org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/CommitEditorPage.java26
-rw-r--r--org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/HeaderText.java25
3 files changed, 80 insertions, 24 deletions
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/ClipboardUtils.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/ClipboardUtils.java
new file mode 100644
index 0000000000..be74f9bcd5
--- /dev/null
+++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/ClipboardUtils.java
@@ -0,0 +1,53 @@
+/*******************************************************************************
+ * Copyright (C) 2018, Michael Keppler <michael.keppler@gmx.de>
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.egit.ui.internal;
+
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.swt.SWTError;
+import org.eclipse.swt.dnd.Clipboard;
+import org.eclipse.swt.dnd.DND;
+import org.eclipse.swt.dnd.TextTransfer;
+import org.eclipse.swt.dnd.Transfer;
+import org.eclipse.swt.widgets.Shell;
+
+/**
+ * Utility for copying to the system clipboard.
+ */
+public class ClipboardUtils {
+ private ClipboardUtils() {
+ // utility class
+ }
+
+ /**
+ * Copy given SHA1 to the clipboard. Ask for retry on error.
+ *
+ * @param sha1
+ * @param shell
+ */
+ public static void copySha1ToClipboard(String sha1, Shell shell) {
+ Clipboard clipboard = new Clipboard(shell.getDisplay());
+ try {
+ clipboard.setContents(new String[] { sha1 },
+ new Transfer[] { TextTransfer.getInstance() });
+ } catch (SWTError ex) {
+ if (ex.code != DND.ERROR_CANNOT_SET_CLIPBOARD) {
+ throw ex;
+ }
+ String title = UIText.Header_copy_SHA1_error_title;
+ String message = UIText.Header_copy_SHA1_error_message;
+ if (MessageDialog.openQuestion(shell, title, message)) {
+ copySha1ToClipboard(sha1, shell);
+ }
+ } finally {
+ clipboard.dispose();
+ }
+ }
+}
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/CommitEditorPage.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/CommitEditorPage.java
index 89461a462d..43dc062aa2 100644
--- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/CommitEditorPage.java
+++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/CommitEditorPage.java
@@ -32,6 +32,7 @@ import org.eclipse.egit.core.AdapterUtils;
import org.eclipse.egit.ui.Activator;
import org.eclipse.egit.ui.UIPreferences;
import org.eclipse.egit.ui.UIUtils;
+import org.eclipse.egit.ui.internal.ClipboardUtils;
import org.eclipse.egit.ui.internal.GitLabelProvider;
import org.eclipse.egit.ui.internal.PreferenceBasedDateFormatter;
import org.eclipse.egit.ui.internal.UIIcons;
@@ -63,6 +64,8 @@ import org.eclipse.swt.custom.CLabel;
import org.eclipse.swt.custom.StyledText;
import org.eclipse.swt.events.DisposeEvent;
import org.eclipse.swt.events.DisposeListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.FillLayout;
@@ -70,6 +73,9 @@ import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.MenuItem;
+import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
@@ -108,7 +114,7 @@ public class CommitEditorPage extends FormPage
/**
* Abbreviated length of parent id links displayed
*/
- public static final int PARENT_LENGTH = 20;
+ public static final int PARENT_LENGTH = 7;
private LocalResourceManager resources = new LocalResourceManager(
JFaceResources.getResources());
@@ -340,10 +346,28 @@ public class CommitEditorPage extends FormPage
}
}
});
+ String sha1 = parentCommit.getName();
+ link.setToolTipText(sha1);
+ createParentContextMenu(link, sha1);
addToFocusTracking(link);
}
}
+ private void createParentContextMenu(Hyperlink link, String sha1) {
+ Menu contextMenu = new Menu(link);
+
+ final MenuItem copySHA1MenuItem = new MenuItem(contextMenu, SWT.PUSH);
+ copySHA1MenuItem.setText(UIText.Header_contextMenu_copy_SHA1);
+ final Shell shell = link.getShell();
+ copySHA1MenuItem.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent event) {
+ ClipboardUtils.copySha1ToClipboard(sha1, shell);
+ }
+ });
+ link.setMenu(contextMenu);
+ }
+
@SuppressWarnings("unused")
String getParentCommitLabel(int i) {
return UIText.CommitEditorPage_LabelParent;
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/HeaderText.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/HeaderText.java
index 34e6f42303..737264f5d4 100644
--- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/HeaderText.java
+++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/HeaderText.java
@@ -16,17 +16,12 @@ package org.eclipse.egit.ui.internal.commit;
import java.lang.reflect.Field;
import org.eclipse.egit.ui.UIUtils;
+import org.eclipse.egit.ui.internal.ClipboardUtils;
import org.eclipse.egit.ui.internal.UIText;
-import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.text.Document;
import org.eclipse.jface.text.TextViewer;
import org.eclipse.swt.SWT;
-import org.eclipse.swt.SWTError;
import org.eclipse.swt.custom.StyledText;
-import org.eclipse.swt.dnd.Clipboard;
-import org.eclipse.swt.dnd.DND;
-import org.eclipse.swt.dnd.TextTransfer;
-import org.eclipse.swt.dnd.Transfer;
import org.eclipse.swt.events.ControlAdapter;
import org.eclipse.swt.events.ControlEvent;
import org.eclipse.swt.events.FocusAdapter;
@@ -149,7 +144,7 @@ public class HeaderText {
copySHA1MenuItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent event) {
- copyToClipboard(sha1String, shell);
+ ClipboardUtils.copySha1ToClipboard(sha1String, shell);
}
});
@@ -172,22 +167,6 @@ public class HeaderText {
styledText.setMenu(menu);
}
- private static void copyToClipboard(String str, Shell shell) {
- Clipboard clipboard= new Clipboard(shell.getDisplay());
- try {
- clipboard.setContents(new String[] { str }, new Transfer[] { TextTransfer.getInstance() });
- } catch (SWTError ex) {
- if (ex.code != DND.ERROR_CANNOT_SET_CLIPBOARD)
- throw ex;
- String title= UIText.Header_copy_SHA1_error_title;
- String message= UIText.Header_copy_SHA1_error_message;
- if (MessageDialog.openQuestion(shell, title, message))
- copyToClipboard(str, shell);
- } finally {
- clipboard.dispose();
- }
- }
-
/**
* Retrieves the {@link Control} used for the title.
*

Back to the top