diff --git a/platform/diff-impl/src/com/intellij/openapi/diff/impl/dir/DirDiffPanel.java b/platform/diff-impl/src/com/intellij/openapi/diff/impl/dir/DirDiffPanel.java index ec8ac42e3a8d..67f2d1712607 100644 --- a/platform/diff-impl/src/com/intellij/openapi/diff/impl/dir/DirDiffPanel.java +++ b/platform/diff-impl/src/com/intellij/openapi/diff/impl/dir/DirDiffPanel.java @@ -153,6 +153,7 @@ public class DirDiffPanel implements Disposable, DataProvider { } }); if (model.isOperationsEnabled()) { + new AnAction("Change diff operation") { @Override public void actionPerformed(AnActionEvent e) { @@ -218,10 +219,13 @@ public class DirDiffPanel implements Disposable, DataProvider { final ActionToolbar toolbar = actionManager.createActionToolbar("DirDiff", actions, true); registerCustomShortcuts(actions, myTable); myToolBarPanel.add(toolbar.getComponent(), BorderLayout.CENTER); - final JBLabel label = new JBLabel("Use Space button or mouse click to change operation for the selected elements." + - " Enter to perform.", SwingConstants.CENTER); - label.setForeground(UIUtil.getInactiveTextColor()); - UIUtil.applyStyle(UIUtil.ComponentStyle.MINI, label); + if (model.isOperationsEnabled()) { + final JBLabel label = new JBLabel("Use Space button or mouse click to change operation for the selected elements." + + " Enter to perform.", SwingConstants.CENTER); + label.setForeground(UIUtil.getInactiveTextColor()); + UIUtil.applyStyle(UIUtil.ComponentStyle.MINI, label); + myFilesPanel.add(label, BorderLayout.SOUTH); + } DataManager.registerDataProvider(myFilesPanel, this); myTable.addMouseListener(new PopupHandler() { @Override @@ -231,7 +235,6 @@ public class DirDiffPanel implements Disposable, DataProvider { popupMenu.show(comp, x, y); } }); - myFilesPanel.add(label, BorderLayout.SOUTH); final JBLoadingPanel loadingPanel = new JBLoadingPanel(new BorderLayout(), wnd.getDisposable()); loadingPanel.addListener(new JBLoadingPanelListener.Adapter() { boolean showHelp = true; diff --git a/platform/diff-impl/src/com/intellij/openapi/diff/impl/dir/actions/SynchronizeDiff.java b/platform/diff-impl/src/com/intellij/openapi/diff/impl/dir/actions/SynchronizeDiff.java index ed41423e7845..81b40607357d 100644 --- a/platform/diff-impl/src/com/intellij/openapi/diff/impl/dir/actions/SynchronizeDiff.java +++ b/platform/diff-impl/src/com/intellij/openapi/diff/impl/dir/actions/SynchronizeDiff.java @@ -16,15 +16,12 @@ package com.intellij.openapi.diff.impl.dir.actions; import com.intellij.icons.AllIcons; -import com.intellij.ide.diff.BackgroundOperatingDiffElement; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.CustomShortcutSet; import com.intellij.openapi.actionSystem.ShortcutSet; -import com.intellij.openapi.diff.impl.dir.DirDiffElementImpl; import com.intellij.openapi.diff.impl.dir.DirDiffTableModel; import com.intellij.openapi.util.SystemInfo; - -import java.util.List; +import com.intellij.util.containers.JBIterable; import static com.intellij.ide.diff.DirDiffOperation.*; @@ -44,20 +41,15 @@ public class SynchronizeDiff extends DirDiffAction { @Override public void update(AnActionEvent e) { super.update(e); - if (e.getPresentation().isEnabled() && - (getModel().getSourceDir() instanceof BackgroundOperatingDiffElement || - getModel().getTargetDir() instanceof BackgroundOperatingDiffElement)) { - List elements = mySelectedOnly ? getModel().getSelectedElements() : getModel().getElements(); - for (DirDiffElementImpl dirDiffElement : elements) { - if ((dirDiffElement.getSource() == null || dirDiffElement.getSource().isOperationsEnabled()) && - (dirDiffElement.getTarget() == null || dirDiffElement.getTarget().isOperationsEnabled()) && - (dirDiffElement.getOperation() == COPY_FROM || dirDiffElement.getOperation() == COPY_TO || dirDiffElement.getOperation() == DELETE)) { - e.getPresentation().setEnabled(true); - return; - } - } - e.getPresentation().setEnabled(false); + if (!e.getPresentation().isEnabled()) { + return; } + boolean enabled = !JBIterable.from(mySelectedOnly ? getModel().getSelectedElements() : getModel().getElements()) + .filter(d -> d.getOperation() == COPY_FROM || d.getOperation() == COPY_TO || d.getOperation() == DELETE) + .filter(d -> d.getSource() == null || d.getSource().isOperationsEnabled()) + .filter(d -> d.getTarget() == null || d.getTarget().isOperationsEnabled()) + .isEmpty(); + e.getPresentation().setEnabled(enabled); } @Override