Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--org.eclipse.egit.ui/plugin.xml30
-rw-r--r--org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/tree/command/RenameBranchCommand.java32
2 files changed, 51 insertions, 11 deletions
diff --git a/org.eclipse.egit.ui/plugin.xml b/org.eclipse.egit.ui/plugin.xml
index ff9d36fbbe..a8705ab8af 100644
--- a/org.eclipse.egit.ui/plugin.xml
+++ b/org.eclipse.egit.ui/plugin.xml
@@ -1940,14 +1940,26 @@
</activeWhen>
</handler>
<handler
- commandId="org.eclipse.ui.edit.rename">
+ commandId="org.eclipse.egit.ui.team.RenameBranch">
<class
class="org.eclipse.egit.ui.internal.repository.tree.command.RenameBranchCommand">
</class>
- <activeWhen>
- <reference
- definitionId="org.eclipse.egit.ui.singleRefNode">
- </reference>
+ <activeWhen>
+ <or>
+ <reference
+ definitionId="org.eclipse.egit.ui.singleRefNode">
+ </reference>
+ <and>
+ <count
+ value="1">
+ </count>
+ <iterate>
+ <instanceof
+ value="org.eclipse.egit.ui.internal.repository.tree.RepositoryNode">
+ </instanceof>
+ </iterate>
+ </and>
+ </or>
</activeWhen>
</handler>
<handler
@@ -3684,7 +3696,7 @@
<visibleWhen checkEnabled="true" />
</command>
<command
- commandId="org.eclipse.ui.edit.rename"
+ commandId="org.eclipse.egit.ui.team.RenameBranch"
icon="icons/obj16/editconfig.png"
label="%RepoViewRenameBranch.label"
style="push">
@@ -6694,6 +6706,12 @@
schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
sequence="M1+C">
</key>
+ <key
+ commandId="org.eclipse.egit.ui.team.RenameBranch"
+ contextId="org.eclipse.egit.ui.RepositoriesView"
+ schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
+ sequence="F2">
+ </key>
</extension>
<extension
name="%HistoryViewCommands.extension.name"
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/tree/command/RenameBranchCommand.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/tree/command/RenameBranchCommand.java
index ab38a8978a..88d8c55698 100644
--- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/tree/command/RenameBranchCommand.java
+++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/tree/command/RenameBranchCommand.java
@@ -13,26 +13,48 @@
*******************************************************************************/
package org.eclipse.egit.ui.internal.repository.tree.command;
+import java.io.IOException;
import java.util.List;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.egit.ui.Activator;
import org.eclipse.egit.ui.internal.dialogs.BranchRenameDialog;
import org.eclipse.egit.ui.internal.repository.tree.RefNode;
+import org.eclipse.egit.ui.internal.repository.tree.RepositoryNode;
+import org.eclipse.egit.ui.internal.repository.tree.RepositoryTreeNode;
+import org.eclipse.jgit.lib.Constants;
+import org.eclipse.jgit.lib.Ref;
+import org.eclipse.jgit.lib.Repository;
import org.eclipse.swt.widgets.Shell;
/**
* Renames a branch
*/
public class RenameBranchCommand extends
- RepositoriesViewCommandHandler<RefNode> {
+ RepositoriesViewCommandHandler<RepositoryTreeNode> {
@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
- final List<RefNode> nodes = getSelectedNodes(event);
- RefNode refNode = nodes.get(0);
+ final List<RepositoryTreeNode> nodes = getSelectedNodes(event);
+ RepositoryTreeNode node = nodes.get(0);
- Shell shell = getShell(event);
- new BranchRenameDialog(shell, refNode.getRepository(), refNode.getObject()).open();
+ Repository repository = node.getRepository();
+ Ref branch = null;
+ if (node instanceof RefNode) {
+ branch = (Ref) node.getObject();
+ } else if (node instanceof RepositoryNode) {
+ try {
+ branch = repository
+ .exactRef(Constants.R_HEADS + repository.getBranch());
+ } catch (IOException e) {
+ Activator.logError("Cannot rename branch", e); //$NON-NLS-1$
+ }
+ }
+
+ if (branch != null) {
+ Shell shell = getShell(event);
+ new BranchRenameDialog(shell, repository, branch).open();
+ }
return null;
}
}

Back to the top