summaryrefslogtreecommitdiff
path: root/plugins/hg4idea/src/org/zmlx/hg4idea/action
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/hg4idea/src/org/zmlx/hg4idea/action')
-rw-r--r--plugins/hg4idea/src/org/zmlx/hg4idea/action/HgAbstractGlobalAction.java29
-rw-r--r--plugins/hg4idea/src/org/zmlx/hg4idea/action/HgAbstractGlobalSingleRepoAction.java47
-rw-r--r--plugins/hg4idea/src/org/zmlx/hg4idea/action/HgActionUtil.java58
-rw-r--r--plugins/hg4idea/src/org/zmlx/hg4idea/action/HgBranchesAction.java2
-rw-r--r--plugins/hg4idea/src/org/zmlx/hg4idea/action/HgCreateTagAction.java2
-rw-r--r--plugins/hg4idea/src/org/zmlx/hg4idea/action/HgMerge.java2
-rw-r--r--plugins/hg4idea/src/org/zmlx/hg4idea/action/HgProcessRebaseAction.java4
-rw-r--r--plugins/hg4idea/src/org/zmlx/hg4idea/action/HgPullAction.java2
-rw-r--r--plugins/hg4idea/src/org/zmlx/hg4idea/action/HgPushAction.java8
-rw-r--r--plugins/hg4idea/src/org/zmlx/hg4idea/action/HgRunConflictResolverAction.java2
-rw-r--r--plugins/hg4idea/src/org/zmlx/hg4idea/action/HgUpdateToAction.java2
11 files changed, 129 insertions, 29 deletions
diff --git a/plugins/hg4idea/src/org/zmlx/hg4idea/action/HgAbstractGlobalAction.java b/plugins/hg4idea/src/org/zmlx/hg4idea/action/HgAbstractGlobalAction.java
index d38bc7bfc6a7..d6282ebe8786 100644
--- a/plugins/hg4idea/src/org/zmlx/hg4idea/action/HgAbstractGlobalAction.java
+++ b/plugins/hg4idea/src/org/zmlx/hg4idea/action/HgAbstractGlobalAction.java
@@ -29,7 +29,9 @@ import org.zmlx.hg4idea.util.HgUtil;
import javax.swing.*;
import java.lang.reflect.InvocationTargetException;
+import java.util.Arrays;
import java.util.Collection;
+import java.util.Collections;
import java.util.List;
abstract class HgAbstractGlobalAction extends AnAction {
@@ -48,12 +50,17 @@ abstract class HgAbstractGlobalAction extends AnAction {
if (project == null) {
return;
}
- VirtualFile file = event.getData(CommonDataKeys.VIRTUAL_FILE);
- HgRepositoryManager repositoryManager = HgUtil.getRepositoryManager(project);
- HgRepository repo = file != null ? repositoryManager.getRepositoryForFile(file): HgUtil.getCurrentRepository(project);
+ VirtualFile[] files = event.getData(CommonDataKeys.VIRTUAL_FILE_ARRAY);
+ final HgRepositoryManager repositoryManager = HgUtil.getRepositoryManager(project);
List<HgRepository> repositories = repositoryManager.getRepositories();
if (!repositories.isEmpty()) {
- execute(project, repositories, repo);
+ List<HgRepository> selectedRepositories = (files == null || files.length == 0)
+ ?
+ Collections.singletonList(HgUtil.getCurrentRepository(project))
+ : HgActionUtil.collectRepositoriesFromFiles(repositoryManager,
+ Arrays.asList(files));
+
+ execute(project, repositories, selectedRepositories);
}
}
@@ -66,7 +73,7 @@ abstract class HgAbstractGlobalAction extends AnAction {
protected abstract void execute(@NotNull Project project,
@NotNull Collection<HgRepository> repositories,
- @Nullable HgRepository selectedRepo);
+ @NotNull List<HgRepository> selectedRepositories);
public static void handleException(@Nullable Project project, @NotNull Exception e) {
handleException(project, "Error", e);
@@ -102,16 +109,4 @@ abstract class HgAbstractGlobalAction extends AnAction {
return true;
}
- @Nullable
- public static HgRepository getSelectedRepositoryFromEvent(AnActionEvent e) {
- final DataContext dataContext = e.getDataContext();
- final Project project = CommonDataKeys.PROJECT.getData(dataContext);
- if (project == null) {
- return null;
- }
- VirtualFile file = e.getData(CommonDataKeys.VIRTUAL_FILE);
- HgRepositoryManager repositoryManager = HgUtil.getRepositoryManager(project);
- return file != null ? repositoryManager.getRepositoryForFile(file) : HgUtil.getCurrentRepository(project);
- }
-
}
diff --git a/plugins/hg4idea/src/org/zmlx/hg4idea/action/HgAbstractGlobalSingleRepoAction.java b/plugins/hg4idea/src/org/zmlx/hg4idea/action/HgAbstractGlobalSingleRepoAction.java
new file mode 100644
index 000000000000..bfb2d7715e68
--- /dev/null
+++ b/plugins/hg4idea/src/org/zmlx/hg4idea/action/HgAbstractGlobalSingleRepoAction.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.zmlx.hg4idea.action;
+
+import com.intellij.openapi.project.Project;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+import org.zmlx.hg4idea.repo.HgRepository;
+
+import javax.swing.*;
+import java.util.Collection;
+import java.util.List;
+
+public abstract class HgAbstractGlobalSingleRepoAction extends HgAbstractGlobalAction {
+
+ public HgAbstractGlobalSingleRepoAction(Icon icon) {
+ super(icon);
+ }
+
+ public HgAbstractGlobalSingleRepoAction() {
+ super();
+ }
+
+ @Override
+ protected void execute(@NotNull Project project,
+ @NotNull Collection<HgRepository> repositories,
+ @NotNull List<HgRepository> selectedRepositories) {
+ execute(project, repositories, selectedRepositories.isEmpty() ? null : selectedRepositories.get(0));
+ }
+
+ protected abstract void execute(@NotNull Project project,
+ @NotNull Collection<HgRepository> repositories,
+ @Nullable HgRepository selectedRepo);
+}
diff --git a/plugins/hg4idea/src/org/zmlx/hg4idea/action/HgActionUtil.java b/plugins/hg4idea/src/org/zmlx/hg4idea/action/HgActionUtil.java
new file mode 100644
index 000000000000..6abebd587787
--- /dev/null
+++ b/plugins/hg4idea/src/org/zmlx/hg4idea/action/HgActionUtil.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.zmlx.hg4idea.action;
+
+import com.intellij.openapi.actionSystem.AnActionEvent;
+import com.intellij.openapi.actionSystem.CommonDataKeys;
+import com.intellij.openapi.actionSystem.DataContext;
+import com.intellij.openapi.project.Project;
+import com.intellij.openapi.vfs.VirtualFile;
+import com.intellij.util.Function;
+import com.intellij.util.containers.ContainerUtil;
+import com.sun.istack.internal.NotNull;
+import org.jetbrains.annotations.Nullable;
+import org.zmlx.hg4idea.repo.HgRepository;
+import org.zmlx.hg4idea.repo.HgRepositoryManager;
+import org.zmlx.hg4idea.util.HgUtil;
+
+import java.util.Collection;
+import java.util.List;
+
+public class HgActionUtil {
+
+ @NotNull
+ public static List<HgRepository> collectRepositoriesFromFiles(@NotNull final HgRepositoryManager repositoryManager,
+ @NotNull Collection<VirtualFile> files) {
+ return ContainerUtil.mapNotNull(files, new Function<VirtualFile, HgRepository>() {
+ @Override
+ public HgRepository fun(VirtualFile file) {
+ return repositoryManager.getRepositoryForFile(file);
+ }
+ });
+ }
+
+ @Nullable
+ public static HgRepository getSelectedRepositoryFromEvent(AnActionEvent e) {
+ final DataContext dataContext = e.getDataContext();
+ final Project project = CommonDataKeys.PROJECT.getData(dataContext);
+ if (project == null) {
+ return null;
+ }
+ VirtualFile file = e.getData(CommonDataKeys.VIRTUAL_FILE);
+ HgRepositoryManager repositoryManager = HgUtil.getRepositoryManager(project);
+ return file != null ? repositoryManager.getRepositoryForFile(file) : HgUtil.getCurrentRepository(project);
+ }
+}
diff --git a/plugins/hg4idea/src/org/zmlx/hg4idea/action/HgBranchesAction.java b/plugins/hg4idea/src/org/zmlx/hg4idea/action/HgBranchesAction.java
index b8a10ed92116..d799cde1705c 100644
--- a/plugins/hg4idea/src/org/zmlx/hg4idea/action/HgBranchesAction.java
+++ b/plugins/hg4idea/src/org/zmlx/hg4idea/action/HgBranchesAction.java
@@ -22,7 +22,7 @@ import org.zmlx.hg4idea.repo.HgRepository;
import java.util.Collection;
-public class HgBranchesAction extends HgAbstractGlobalAction {
+public class HgBranchesAction extends HgAbstractGlobalSingleRepoAction {
@Override
protected void execute(@NotNull Project project, @NotNull Collection<HgRepository> repositories, @Nullable HgRepository selectedRepo) {
diff --git a/plugins/hg4idea/src/org/zmlx/hg4idea/action/HgCreateTagAction.java b/plugins/hg4idea/src/org/zmlx/hg4idea/action/HgCreateTagAction.java
index 5c97e3ca9f39..c8734e8109f4 100644
--- a/plugins/hg4idea/src/org/zmlx/hg4idea/action/HgCreateTagAction.java
+++ b/plugins/hg4idea/src/org/zmlx/hg4idea/action/HgCreateTagAction.java
@@ -25,7 +25,7 @@ import org.zmlx.hg4idea.util.HgErrorUtil;
import java.util.Collection;
-public class HgCreateTagAction extends HgAbstractGlobalAction {
+public class HgCreateTagAction extends HgAbstractGlobalSingleRepoAction {
public void execute(@NotNull final Project project,
@NotNull Collection<HgRepository> repositories,
diff --git a/plugins/hg4idea/src/org/zmlx/hg4idea/action/HgMerge.java b/plugins/hg4idea/src/org/zmlx/hg4idea/action/HgMerge.java
index 1743e7e5b56e..45ff24e382ce 100644
--- a/plugins/hg4idea/src/org/zmlx/hg4idea/action/HgMerge.java
+++ b/plugins/hg4idea/src/org/zmlx/hg4idea/action/HgMerge.java
@@ -33,7 +33,7 @@ import org.zmlx.hg4idea.ui.HgMergeDialog;
import java.util.Collection;
-public class HgMerge extends HgAbstractGlobalAction {
+public class HgMerge extends HgAbstractGlobalSingleRepoAction {
@Override
public void execute(@NotNull final Project project,
diff --git a/plugins/hg4idea/src/org/zmlx/hg4idea/action/HgProcessRebaseAction.java b/plugins/hg4idea/src/org/zmlx/hg4idea/action/HgProcessRebaseAction.java
index 342369f0a9bb..84e9d5b1beaf 100644
--- a/plugins/hg4idea/src/org/zmlx/hg4idea/action/HgProcessRebaseAction.java
+++ b/plugins/hg4idea/src/org/zmlx/hg4idea/action/HgProcessRebaseAction.java
@@ -18,10 +18,10 @@ package org.zmlx.hg4idea.action;
import com.intellij.openapi.actionSystem.AnActionEvent;
import org.zmlx.hg4idea.repo.HgRepository;
-public abstract class HgProcessRebaseAction extends HgAbstractGlobalAction {
+public abstract class HgProcessRebaseAction extends HgAbstractGlobalSingleRepoAction {
protected static boolean isRebasing(AnActionEvent e) {
- HgRepository repository = HgAbstractGlobalAction.getSelectedRepositoryFromEvent(e);
+ HgRepository repository = HgActionUtil.getSelectedRepositoryFromEvent(e);
return repository != null && repository.getState() == HgRepository.State.REBASING;
}
diff --git a/plugins/hg4idea/src/org/zmlx/hg4idea/action/HgPullAction.java b/plugins/hg4idea/src/org/zmlx/hg4idea/action/HgPullAction.java
index d5a934e1d86d..74beff13eb81 100644
--- a/plugins/hg4idea/src/org/zmlx/hg4idea/action/HgPullAction.java
+++ b/plugins/hg4idea/src/org/zmlx/hg4idea/action/HgPullAction.java
@@ -24,7 +24,7 @@ import org.zmlx.hg4idea.ui.HgPullDialog;
import java.util.Collection;
-public class HgPullAction extends HgAbstractGlobalAction {
+public class HgPullAction extends HgAbstractGlobalSingleRepoAction {
public HgPullAction() {
super(AllIcons.Actions.CheckOut);
}
diff --git a/plugins/hg4idea/src/org/zmlx/hg4idea/action/HgPushAction.java b/plugins/hg4idea/src/org/zmlx/hg4idea/action/HgPushAction.java
index 1b5704f1d0f4..232b2ef7fa73 100644
--- a/plugins/hg4idea/src/org/zmlx/hg4idea/action/HgPushAction.java
+++ b/plugins/hg4idea/src/org/zmlx/hg4idea/action/HgPushAction.java
@@ -12,14 +12,14 @@
// limitations under the License.
package org.zmlx.hg4idea.action;
+import com.intellij.dvcs.push.ui.VcsPushDialog;
import com.intellij.icons.AllIcons;
import com.intellij.openapi.project.Project;
import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
-import org.zmlx.hg4idea.HgPusher;
import org.zmlx.hg4idea.repo.HgRepository;
import java.util.Collection;
+import java.util.List;
public class HgPushAction extends HgAbstractGlobalAction {
public HgPushAction() {
@@ -29,7 +29,7 @@ public class HgPushAction extends HgAbstractGlobalAction {
@Override
public void execute(@NotNull final Project project,
@NotNull Collection<HgRepository> repositories,
- @Nullable final HgRepository selectedRepo) {
- new HgPusher(project).showDialogAndPush(repositories, selectedRepo);
+ @NotNull final List<HgRepository> selectedRepositories) {
+ new VcsPushDialog(project, selectedRepositories).show();
}
}
diff --git a/plugins/hg4idea/src/org/zmlx/hg4idea/action/HgRunConflictResolverAction.java b/plugins/hg4idea/src/org/zmlx/hg4idea/action/HgRunConflictResolverAction.java
index 938413e95356..279747c5278b 100644
--- a/plugins/hg4idea/src/org/zmlx/hg4idea/action/HgRunConflictResolverAction.java
+++ b/plugins/hg4idea/src/org/zmlx/hg4idea/action/HgRunConflictResolverAction.java
@@ -25,7 +25,7 @@ import org.zmlx.hg4idea.ui.HgRunConflictResolverDialog;
import java.util.Collection;
-public class HgRunConflictResolverAction extends HgAbstractGlobalAction {
+public class HgRunConflictResolverAction extends HgAbstractGlobalSingleRepoAction {
@Override
public void execute(@NotNull final Project project, @NotNull Collection<HgRepository> repositories, @Nullable HgRepository selectedRepo) {
diff --git a/plugins/hg4idea/src/org/zmlx/hg4idea/action/HgUpdateToAction.java b/plugins/hg4idea/src/org/zmlx/hg4idea/action/HgUpdateToAction.java
index 7e1025921234..415cd223bd1f 100644
--- a/plugins/hg4idea/src/org/zmlx/hg4idea/action/HgUpdateToAction.java
+++ b/plugins/hg4idea/src/org/zmlx/hg4idea/action/HgUpdateToAction.java
@@ -29,7 +29,7 @@ import org.zmlx.hg4idea.util.HgErrorUtil;
import java.util.Collection;
-public class HgUpdateToAction extends HgAbstractGlobalAction {
+public class HgUpdateToAction extends HgAbstractGlobalSingleRepoAction {
@Override
protected void execute(@NotNull Project project, @NotNull Collection<HgRepository> repositories, @Nullable HgRepository selectedRepo) {