From 633cc944d77f2ff417926e050761c54bebf81009 Mon Sep 17 00:00:00 2001 From: Nadya Zabrodina Date: Wed, 29 Oct 2014 13:55:28 +0300 Subject: [PATCH] IDEA-82746 Disable "Push" button in Push dialog for Git when there is nothing to push * HgPushOptionsPanel simplified; * push button should not be disabled for hg single repo project, because we would like to push without loading commits --- .../intellij/dvcs/push/PushController.java | 8 +++++++ .../zmlx/hg4idea/push/HgPushOptionsPanel.java | 21 +++++++------------ 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/platform/dvcs-impl/src/com/intellij/dvcs/push/PushController.java b/platform/dvcs-impl/src/com/intellij/dvcs/push/PushController.java index e4a8c1a64826..188f3ff77a91 100644 --- a/platform/dvcs-impl/src/com/intellij/dvcs/push/PushController.java +++ b/platform/dvcs-impl/src/com/intellij/dvcs/push/PushController.java @@ -256,6 +256,13 @@ public class PushController implements Disposable { } private boolean isPushAllowed(@NotNull PushSupport pushSupport) { + if (mySingleRepoProject) { + MyRepoModel repoModel = ContainerUtil.getFirstItem(myView2Model.values()); + assert repoModel != null; + return hasSomethingToPush(myView2Model.keySet()) || + !repoModel.getLoadedCommits().isEmpty() || + myDialog.getAdditionalOptionValue(pushSupport) != null; + } Collection nodes = getNodesForSupport(pushSupport); if (pushSupport.getRepositoryManager().isSyncEnabled()) { return hasSomethingToPush(nodes) || (hasCheckedNode(nodes) && allNodesAreLoaded(nodes)); @@ -330,6 +337,7 @@ public class PushController implements Disposable { boolean shouldBeSelected; if (!errors.isEmpty()) { shouldBeSelected = false; + model.setLoadedCommits(outgoing.getCommits()); myPushLog.setChildren(node, ContainerUtil.map(errors, new Function() { @Override public DefaultMutableTreeNode fun(final VcsError error) { diff --git a/plugins/hg4idea/src/org/zmlx/hg4idea/push/HgPushOptionsPanel.java b/plugins/hg4idea/src/org/zmlx/hg4idea/push/HgPushOptionsPanel.java index 32d22730e560..470bf925aa2b 100644 --- a/plugins/hg4idea/src/org/zmlx/hg4idea/push/HgPushOptionsPanel.java +++ b/plugins/hg4idea/src/org/zmlx/hg4idea/push/HgPushOptionsPanel.java @@ -16,31 +16,24 @@ package org.zmlx.hg4idea.push; import com.intellij.dvcs.push.VcsPushOptionsPanel; -import com.intellij.openapi.ui.ComboBox; -import org.jetbrains.annotations.NotNull; +import com.intellij.ui.components.JBCheckBox; +import org.jetbrains.annotations.Nullable; -import javax.swing.*; import java.awt.*; public class HgPushOptionsPanel extends VcsPushOptionsPanel { - private final ComboBox myReferenceStrategyCombobox; + private final JBCheckBox myPushBookmarkCheckBox; public HgPushOptionsPanel() { setLayout(new BorderLayout()); - myReferenceStrategyCombobox = new ComboBox(); - HgVcsPushOptionValue[] values = HgVcsPushOptionValue.values(); - DefaultComboBoxModel comboModel = new DefaultComboBoxModel(values); - myReferenceStrategyCombobox.setModel(comboModel); - JLabel referenceStrategyLabel = new JLabel("Export Bookmarks: "); - add(referenceStrategyLabel, BorderLayout.WEST); - add(myReferenceStrategyCombobox, BorderLayout.CENTER); + myPushBookmarkCheckBox = new JBCheckBox("Export Active Bookmarks"); + add(myPushBookmarkCheckBox, BorderLayout.WEST); } @Override - @NotNull + @Nullable public HgVcsPushOptionValue getValue() { - return (HgVcsPushOptionValue)myReferenceStrategyCombobox.getSelectedItem(); + return myPushBookmarkCheckBox.isSelected() ? HgVcsPushOptionValue.Current : null; } - }