From: Robin Rosenberg <robin.rosenberg@dewire.com>
To: spearce@spearce.org
Cc: git@vger.kernel.org, Robin Rosenberg <robin.rosenberg@dewire.com>
Subject: [EGIT PATCH 3/3] Add ref rename support to the branch dialog
Date: Thu, 7 May 2009 01:33:01 +0200 [thread overview]
Message-ID: <1241652781-16873-4-git-send-email-robin.rosenberg@dewire.com> (raw)
In-Reply-To: <1241652781-16873-3-git-send-email-robin.rosenberg@dewire.com>
Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>
---
.../src/org/spearce/egit/ui/UIText.java | 6 ++
.../ui/internal/dialogs/BranchSelectionDialog.java | 89 +++++++++++++++-----
.../src/org/spearce/egit/ui/uitext.properties | 3 +
3 files changed, 78 insertions(+), 20 deletions(-)
diff --git a/org.spearce.egit.ui/src/org/spearce/egit/ui/UIText.java b/org.spearce.egit.ui/src/org/spearce/egit/ui/UIText.java
index 654e155..1bf2dd3 100644
--- a/org.spearce.egit.ui/src/org/spearce/egit/ui/UIText.java
+++ b/org.spearce.egit.ui/src/org/spearce/egit/ui/UIText.java
@@ -893,6 +893,12 @@
public static String BranchSelectionDialog_ErrorCouldNotRefresh;
/** */
+ public static String BranchSelectionDialog_ErrorCouldNotRenameRef;
+
+ /** */
+ public static String BranchSelectionDialog_ErrorCouldNotRenameRef2;
+
+ /** */
public static String BranchSelectionDialog_BranchSuffix_Current;
/** */
diff --git a/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/dialogs/BranchSelectionDialog.java b/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/dialogs/BranchSelectionDialog.java
index 9aad95b..a518c2a 100644
--- a/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/dialogs/BranchSelectionDialog.java
+++ b/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/dialogs/BranchSelectionDialog.java
@@ -50,6 +50,8 @@
import org.spearce.jgit.lib.ObjectId;
import org.spearce.jgit.lib.RefUpdate;
import org.spearce.jgit.lib.Repository;
+import org.spearce.jgit.lib.RefUpdate.RenameRefUpdates;
+import org.spearce.jgit.lib.RefUpdate.Result;
/**
* The branch and reset selection dialog
@@ -277,6 +279,30 @@ private void refNameFromDialog() {
}
}
+ private InputDialog getRefNameInputDialog() {
+ InputDialog labelDialog = new InputDialog(
+ getShell(),
+ UIText.BranchSelectionDialog_QuestionNewBranchTitle,
+ UIText.BranchSelectionDialog_QuestionNewBranchMessage,
+ null, new IInputValidator() {
+ public String isValid(String newText) {
+ String testFor = Constants.R_HEADS + newText;
+ try {
+ if (repo.resolve(testFor) != null)
+ return UIText.BranchSelectionDialog_ErrorAlreadyExists;
+ } catch (IOException e1) {
+ Activator.logError(NLS.bind(
+ UIText.BranchSelectionDialog_ErrorCouldNotResolve, testFor), e1);
+ }
+ if (!Repository.isValidRefName(testFor))
+ return UIText.BranchSelectionDialog_ErrorInvalidRefName;
+ return null;
+ }
+ });
+ labelDialog.setBlockOnOpen(true);
+ return labelDialog;
+ }
+
@Override
protected void createButtonsForButtonBar(Composite parent) {
if (!showResetType) {
@@ -284,32 +310,54 @@ protected void createButtonsForButtonBar(Composite parent) {
newButton.setFont(JFaceResources.getDialogFont());
newButton.setText(UIText.BranchSelectionDialog_NewBranch);
((GridLayout)parent.getLayout()).numColumns++;
+ Button renameButton = new Button(parent, SWT.PUSH);
+ renameButton.setText("&Rename");
+ renameButton.addSelectionListener(new SelectionListener() {
+ public void widgetSelected(SelectionEvent e) {
+ // check what ref name the user selected, if any.
+ refNameFromDialog();
+
+ InputDialog labelDialog = getRefNameInputDialog();
+ if (labelDialog.open() == Window.OK) {
+ String newRefName = Constants.R_HEADS + labelDialog.getValue();
+ try {
+ RenameRefUpdates renameRef = repo.renameRef(refName, newRefName);
+ if (renameRef.rename() != Result.RENAMED) {
+ MessageDialog.openError(getShell(),
+ "Rename failed",
+ NLS.bind(UIText.BranchSelectionDialog_ErrorCouldNotRenameRef,
+ new Object[] { refName, newRefName, renameRef.getResult() }));
+ Activator.logError(NLS.bind(
+ UIText.BranchSelectionDialog_ErrorCouldNotRenameRef2,
+ new Object[] { refName, newRefName }), null);
+ }
+ // FIXME: Update HEAD
+ } catch (IOException e1) {
+ Activator.logError(NLS.bind(
+ UIText.BranchSelectionDialog_ErrorCouldNotRenameRef2,
+ newRefName), e1);
+ }
+ try {
+ branchTree.removeAll();
+ fillTreeWithBranches(newRefName);
+ } catch (IOException e1) {
+ Activator.logError(
+ UIText.BranchSelectionDialog_ErrorCouldNotRefreshBranchList,
+ e1);
+ }
+ }
+ }
+ public void widgetDefaultSelected(SelectionEvent e) {
+ widgetSelected(e);
+ }
+ });
newButton.addSelectionListener(new SelectionListener() {
public void widgetSelected(SelectionEvent e) {
// check what ref name the user selected, if any.
refNameFromDialog();
- InputDialog labelDialog = new InputDialog(
- getShell(),
- UIText.BranchSelectionDialog_QuestionNewBranchTitle,
- UIText.BranchSelectionDialog_QuestionNewBranchMessage,
- null, new IInputValidator() {
- public String isValid(String newText) {
- String testFor = Constants.R_HEADS + newText;
- try {
- if (repo.resolve(testFor) != null)
- return UIText.BranchSelectionDialog_ErrorAlreadyExists;
- } catch (IOException e1) {
- Activator.logError(NLS.bind(
- UIText.BranchSelectionDialog_ErrorCouldNotResolve, testFor), e1);
- }
- if (!Repository.isValidRefName(testFor))
- return UIText.BranchSelectionDialog_ErrorInvalidRefName;
- return null;
- }
- });
- labelDialog.setBlockOnOpen(true);
+ InputDialog labelDialog = getRefNameInputDialog();
if (labelDialog.open() == Window.OK) {
String newRefName = Constants.R_HEADS + labelDialog.getValue();
RefUpdate updateRef;
@@ -338,6 +386,7 @@ public String isValid(String newText) {
}
}
+
public void widgetDefaultSelected(SelectionEvent e) {
widgetSelected(e);
}
diff --git a/org.spearce.egit.ui/src/org/spearce/egit/ui/uitext.properties b/org.spearce.egit.ui/src/org/spearce/egit/ui/uitext.properties
index 1d21c81..193f3ad 100644
--- a/org.spearce.egit.ui/src/org/spearce/egit/ui/uitext.properties
+++ b/org.spearce.egit.ui/src/org/spearce/egit/ui/uitext.properties
@@ -340,6 +340,9 @@ BranchSelectionDialog_ErrorCouldNotRefresh=Could not refresh list of branches
BranchSelectionDialog_ErrorCouldNotRefreshBranchList=Could not refresh list of branches
BranchSelectionDialog_ErrorCouldNotResolve=Could not attempt to resolve {0}
BranchSelectionDialog_ErrorInvalidRefName=Invalid ref name
+BranchSelectionDialog_ErrorCouldNotRenameRef=Failed to rename branch {0} -> {1}, status={2}
+BranchSelectionDialog_ErrorCouldNotRenameRef2=Failed to rename branch {0} -> {1}
+
BranchSelectionDialog_LocalBranches=Local Branches
BranchSelectionDialog_NewBranch=&New branch
BranchSelectionDialog_NoBranchSeletectMessage=You must select a valid ref.
--
1.6.3.rc2.1.g868b6
next prev parent reply other threads:[~2009-05-06 23:33 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-05-06 23:32 [EGIT PATCH 0/3] Rename refs Robin Rosenberg
2009-05-06 23:32 ` [EGIT PATCH 1/3] Add ref rename support to JGit Robin Rosenberg
2009-05-06 23:33 ` [EGIT PATCH 2/3] Use Constants.R_* in Branch dialog Robin Rosenberg
2009-05-06 23:33 ` Robin Rosenberg [this message]
2009-05-07 15:51 ` [EGIT PATCH 1/3] Add ref rename support to JGit Shawn O. Pearce
2009-05-19 23:13 ` [EGIT PATCH 0/6] Ref rename Robin Rosenberg
2009-05-19 23:13 ` [EGIT PATCH 1/6] Make sure we get the right storage for loose/pack/loose and packed refs Robin Rosenberg
2009-05-19 23:13 ` [EGIT PATCH 2/6] Add ref rename support to JGit Robin Rosenberg
2009-05-19 23:13 ` [EGIT PATCH 3/6] Add ref rename support to the branch dialog Robin Rosenberg
2009-05-19 23:13 ` [EGIT PATCH 4/6] Allow non-ASCII ref names when writing the packed-refs file Robin Rosenberg
2009-05-19 23:13 ` [EGIT PATCH 5/6] Use Constants.PACKED_REFS in RefWriter Robin Rosenberg
2009-05-19 23:13 ` [EGIT PATCH 6/6] Improve error reporting in the branch dialog Robin Rosenberg
2009-05-20 22:16 ` [EGIT PATCH 2/6] Add ref rename support to JGit Shawn O. Pearce
2009-05-27 22:08 ` [EGIT PATCH 00/10] Rename support Robin Rosenberg
2009-05-27 22:08 ` [EGIT PATCH 01/10] Make sure we get the right storage for loose/pack/loose and packed refs Robin Rosenberg
2009-05-27 22:08 ` [EGIT PATCH 02/10] Add a toString for debugging to RemoteRefUpdate Robin Rosenberg
2009-05-27 22:08 ` [EGIT PATCH 03/10] Add a toString to LockFile Robin Rosenberg
2009-05-27 22:08 ` [EGIT PATCH 04/10] Add more tests for RefUpdate Robin Rosenberg
2009-05-27 22:08 ` [EGIT PATCH 05/10] Do not write to the reflog unless the refupdate logmessage is set Robin Rosenberg
2009-05-27 22:08 ` [EGIT PATCH 06/10] Add a utility method for shortening long ref names to short ones Robin Rosenberg
2009-05-27 22:08 ` [EGIT PATCH 07/10] Set a nice reflog message in the branch command Robin Rosenberg
2009-05-27 22:08 ` [EGIT PATCH 08/10] Add ref rename support to JGit Robin Rosenberg
2009-05-27 22:08 ` [EGIT PATCH 09/10] Add ref rename support to the branch dialog Robin Rosenberg
2009-05-27 22:08 ` [EGIT PATCH 10/10] Improve error reporting in " Robin Rosenberg
2009-06-03 16:43 ` [EGIT PATCH 08/10] Add ref rename support to JGit Shawn O. Pearce
2009-06-03 15:41 ` [EGIT PATCH 05/10] Do not write to the reflog unless the refupdate logmessage is set Shawn O. Pearce
2009-06-07 22:27 ` Robin Rosenberg
2009-06-07 22:44 ` Shawn O. Pearce
2009-05-20 21:43 ` [EGIT PATCH 1/6] Make sure we get the right storage for loose/pack/loose and packed refs Shawn O. Pearce
2009-05-21 15:22 ` Robin Rosenberg
2009-05-21 15:48 ` Shawn O. Pearce
2009-06-10 21:22 ` [EGIT PATCH v5 0/7] Ref rename support again Robin Rosenberg
2009-06-10 21:22 ` [EGIT PATCH v5 1/7] Add methods to RawParseUtils for scanning backwards Robin Rosenberg
2009-06-10 21:22 ` [EGIT PATCH v5 2/7] Add a ref log reader class Robin Rosenberg
2009-06-10 21:22 ` [EGIT PATCH v5 3/7] Do not write to the reflog unless the refupdate logmessage is set Robin Rosenberg
2009-06-10 21:22 ` [EGIT PATCH v5 4/7] Add ref rename support to JGit Robin Rosenberg
2009-06-10 21:22 ` [EGIT PATCH v5 5/7] Add ref rename support to the branch dialog Robin Rosenberg
2009-06-10 21:22 ` [EGIT PATCH v5 6/7] Improve error reporting in " Robin Rosenberg
2009-06-10 21:22 ` [EGIT PATCH v5 7/7] Remove a TAB from the message Egit generates into the reflog on commit Robin Rosenberg
2009-06-12 20:02 ` [EGIT PATCH v5 5/7] Add ref rename support to the branch dialog Shawn O. Pearce
2009-06-14 19:47 ` [EGIT PATCH v6 5a/7] Warn for unlocalized string literals in ui plugin Robin Rosenberg
2009-06-14 19:47 ` [EGIT PATCH v6 5b/6] Add ref rename support to the branch dialog Robin Rosenberg
2009-06-14 19:47 ` [EGIT PATCH v6 6/7] Improve error reporting in " Robin Rosenberg
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1241652781-16873-4-git-send-email-robin.rosenberg@dewire.com \
--to=robin.rosenberg@dewire.com \
--cc=git@vger.kernel.org \
--cc=spearce@spearce.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).