diff options
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.java | 144 |
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; + } + } +} |