summaryrefslogtreecommitdiff
path: root/platform/dvcs-impl/src/com/intellij/dvcs/push/ui/VcsPushDialog.java
diff options
context:
space:
mode:
Diffstat (limited to 'platform/dvcs-impl/src/com/intellij/dvcs/push/ui/VcsPushDialog.java')
-rw-r--r--platform/dvcs-impl/src/com/intellij/dvcs/push/ui/VcsPushDialog.java144
1 files changed, 144 insertions, 0 deletions
diff --git a/platform/dvcs-impl/src/com/intellij/dvcs/push/ui/VcsPushDialog.java b/platform/dvcs-impl/src/com/intellij/dvcs/push/ui/VcsPushDialog.java
new file mode 100644
index 000000000000..b441952f7a43
--- /dev/null
+++ b/platform/dvcs-impl/src/com/intellij/dvcs/push/ui/VcsPushDialog.java
@@ -0,0 +1,144 @@
+/*
+ * 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 com.intellij.dvcs.push.ui;
+
+import com.intellij.dvcs.push.PushController;
+import com.intellij.dvcs.push.VcsPushOptionsPanel;
+import com.intellij.dvcs.repo.Repository;
+import com.intellij.openapi.project.Project;
+import com.intellij.openapi.ui.DialogWrapper;
+import com.intellij.openapi.ui.OptionAction;
+import com.intellij.openapi.ui.ValidationInfo;
+import net.miginfocom.swing.MigLayout;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import javax.swing.*;
+import java.awt.*;
+import java.awt.event.ActionEvent;
+import java.util.ArrayList;
+import java.util.List;
+
+public class VcsPushDialog extends DialogWrapper {
+
+ private final PushLog myListPanel;
+ private final PushController myController;
+ private final Action[] myExecutorActions = {new DvcsPushAction("&Force Push", true)};
+ @NotNull private final JPanel myAdditionalOptionsFromVcsPanel;
+
+ private DvcsPushAction myPushAction;
+
+ public VcsPushDialog(@NotNull Project project, @NotNull List<? extends Repository> selectedRepositories) {
+ super(project);
+ myController = new PushController(project, this, selectedRepositories);
+ myListPanel = myController.getPushPanelInfo();
+ myAdditionalOptionsFromVcsPanel = new JPanel(new MigLayout("ins 0 0, flowx"));
+ init();
+ setOKButtonText("Push");
+ setOKButtonMnemonic('P');
+ setTitle("Push Dialog");
+ }
+
+ @Override
+ protected JComponent createCenterPanel() {
+
+ JComponent rootPanel = new JPanel(new BorderLayout(0, 15));
+ rootPanel.add(myListPanel, BorderLayout.CENTER);
+ for (VcsPushOptionsPanel panel : myController.getAdditionalPanels()) {
+ myAdditionalOptionsFromVcsPanel.add(panel);
+ }
+ rootPanel.add(myAdditionalOptionsFromVcsPanel, BorderLayout.SOUTH);
+ return rootPanel;
+ }
+
+ @Override
+ protected String getDimensionServiceKey() {
+ return VcsPushDialog.class.getName();
+ }
+
+ @Override
+ @NotNull
+ protected Action[] createActions() {
+ final List<Action> actions = new ArrayList<Action>();
+ myPushAction = new DvcsPushAction("&Push", false);
+ myPushAction.putValue(DEFAULT_ACTION, Boolean.TRUE);
+ actions.add(myPushAction);
+ myPushAction.setOptions(myExecutorActions);
+ actions.add(getCancelAction());
+ actions.add(getHelpAction());
+ return actions.toArray(new Action[actions.size()]);
+ }
+
+ @NotNull
+ @Override
+ protected Action getOKAction() {
+ return myPushAction;
+ }
+
+ @Nullable
+ @Override
+ protected ValidationInfo doValidate() {
+ return myController.validate();
+ }
+
+ @Override
+ protected String getHelpId() {
+ return "reference.mercurial.push.dialog";
+ }
+
+ public void updateButtons() {
+ initValidation();
+ }
+
+ @Override
+ protected boolean postponeValidation() {
+ return false;
+ }
+
+ private class DvcsPushAction extends AbstractAction implements OptionAction {
+ private Action[] myOptions = new Action[0];
+ private final boolean myForce;
+
+ private DvcsPushAction(String title, boolean force) {
+ super(title);
+ myForce = force;
+ }
+
+ @Override
+ public void setEnabled(boolean isEnabled) {
+ super.setEnabled(isEnabled);
+ for (Action optionAction : myOptions) {
+ optionAction.setEnabled(isEnabled);
+ }
+ }
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ myController.push(myForce);
+ close(OK_EXIT_CODE);
+ }
+
+ @NotNull
+ @Override
+ public Action[] getOptions() {
+ return myOptions;
+ }
+
+ public void setOptions(Action[] actions) {
+ myOptions = actions;
+ }
+ }
+}