diff --git a/platform/platform-resources/src/META-INF/VcsExtensions.xml b/platform/platform-resources/src/META-INF/VcsExtensions.xml index 93b0a4a4ada1..bf05d2fd9ef1 100644 --- a/platform/platform-resources/src/META-INF/VcsExtensions.xml +++ b/platform/platform-resources/src/META-INF/VcsExtensions.xml @@ -44,9 +44,11 @@ + + diff --git a/platform/platform-resources/src/idea/VcsActions.xml b/platform/platform-resources/src/idea/VcsActions.xml index a3e8baa2e90f..977adafa24cb 100644 --- a/platform/platform-resources/src/idea/VcsActions.xml +++ b/platform/platform-resources/src/idea/VcsActions.xml @@ -181,23 +181,20 @@ - - - + - + - + - + diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/history/FileHistoryPanelImpl.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/history/FileHistoryPanelImpl.java index f25d4c7b044a..cc15c8340878 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/history/FileHistoryPanelImpl.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/history/FileHistoryPanelImpl.java @@ -41,7 +41,6 @@ import com.intellij.openapi.vcs.changes.ContentRevision; import com.intellij.openapi.vcs.changes.CurrentContentRevision; import com.intellij.openapi.vcs.changes.issueLinks.IssueLinkRenderer; import com.intellij.openapi.vcs.changes.issueLinks.TableLinkMouseListener; -import com.intellij.openapi.vcs.history.actions.CompareRevisionsAction; import com.intellij.openapi.vcs.vfs.VcsFileSystem; import com.intellij.openapi.vcs.vfs.VcsVirtualFile; import com.intellij.openapi.vcs.vfs.VcsVirtualFolder; @@ -343,7 +342,7 @@ public class FileHistoryPanelImpl extends PanelWithActionsAndCloseButton impleme myDualView.setTreeCellRenderer(new MyTreeCellRenderer(myDualView.getTree().getCellRenderer(), () -> myHistorySession)); myDualView.setCellWrapper(new MyCellWrapper(() -> myHistorySession)); - myDualView.installDoubleClickHandler(new CompareRevisionsAction()); + myDualView.installDoubleClickHandler(EmptyAction.wrap(ActionManager.getInstance().getAction(IdeActions.ACTION_SHOW_DIFF_COMMON))); myDualView.getFlatView().getTableViewModel().setSortable(true); RowSorter rowSorter = myDualView.getFlatView().getRowSorter(); diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/history/actions/CompareRevisionsAction.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/history/actions/CompareRevisionsAction.java index e5847692e548..42ca2980ff12 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/history/actions/CompareRevisionsAction.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/history/actions/CompareRevisionsAction.java @@ -15,20 +15,16 @@ */ package com.intellij.openapi.vcs.history.actions; -import com.intellij.icons.AllIcons; import com.intellij.openapi.actionSystem.AnActionEvent; +import com.intellij.openapi.actionSystem.AnActionExtensionProvider; import com.intellij.openapi.actionSystem.CommonDataKeys; -import com.intellij.openapi.project.DumbAwareAction; import com.intellij.openapi.vcs.FilePath; import com.intellij.openapi.vcs.VcsBundle; import com.intellij.openapi.vcs.VcsDataKeys; import com.intellij.openapi.vcs.history.*; import org.jetbrains.annotations.NotNull; -public class CompareRevisionsAction extends DumbAwareAction { - public CompareRevisionsAction() { - super(VcsBundle.message("action.name.compare"), VcsBundle.message("action.description.compare"), AllIcons.Actions.Diff); - } +public class CompareRevisionsAction implements AnActionExtensionProvider { public void actionPerformed(@NotNull AnActionEvent e) { VcsFileRevision[] revisions = e.getRequiredData(VcsDataKeys.VCS_FILE_REVISIONS); @@ -49,7 +45,15 @@ public class CompareRevisionsAction extends DumbAwareAction { } } + @Override + public boolean isActive(@NotNull AnActionEvent e) { + return e.getData(VcsDataKeys.HISTORY_SESSION) != null; + } + public void update(@NotNull AnActionEvent e) { + e.getPresentation().setText(VcsBundle.message("action.name.compare")); + e.getPresentation().setDescription(VcsBundle.message("action.description.compare")); + VcsFileRevision[] revisions = e.getData(VcsDataKeys.VCS_FILE_REVISIONS); VcsHistorySession historySession = e.getData(VcsDataKeys.HISTORY_SESSION); FilePath filePath = e.getData(VcsDataKeys.FILE_PATH); diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/history/actions/CreatePatchAction.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/history/actions/CreatePatchFromDirectoryAction.java similarity index 86% rename from platform/vcs-impl/src/com/intellij/openapi/vcs/history/actions/CreatePatchAction.java rename to platform/vcs-impl/src/com/intellij/openapi/vcs/history/actions/CreatePatchFromDirectoryAction.java index 64399ab52fb8..7ac8fd0f9d65 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/history/actions/CreatePatchAction.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/history/actions/CreatePatchFromDirectoryAction.java @@ -15,19 +15,18 @@ */ package com.intellij.openapi.vcs.history.actions; -import com.intellij.icons.AllIcons; -import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; +import com.intellij.openapi.actionSystem.AnActionExtensionProvider; import com.intellij.openapi.actionSystem.CommonDataKeys; import com.intellij.openapi.progress.ProgressIndicator; import com.intellij.openapi.progress.ProgressManager; import com.intellij.openapi.progress.Task; -import com.intellij.openapi.project.DumbAwareAction; import com.intellij.openapi.project.Project; import com.intellij.openapi.vcs.*; import com.intellij.openapi.vcs.changes.actions.CreatePatchFromChangesAction; import com.intellij.openapi.vcs.history.VcsFileRevision; import com.intellij.openapi.vcs.history.VcsHistoryProvider; +import com.intellij.openapi.vcs.history.VcsHistorySession; import com.intellij.openapi.vcs.impl.AbstractVcsHelperImpl; import com.intellij.openapi.vcs.versionBrowser.CommittedChangeList; import com.intellij.openapi.vcs.vfs.VcsFileSystem; @@ -37,14 +36,7 @@ import org.jetbrains.annotations.NotNull; import java.util.ArrayList; -public class CreatePatchAction extends DumbAwareAction { - private final AnAction myUsualDelegate; - - public CreatePatchAction() { - super(VcsBundle.message("action.name.create.patch.for.selected.revisions"), - VcsBundle.message("action.description.create.patch.for.selected.revisions"), AllIcons.Vcs.Patch); - myUsualDelegate = new CreatePatchFromChangesAction.Dialog(); - } +public class CreatePatchFromDirectoryAction implements AnActionExtensionProvider { @Override public void actionPerformed(AnActionEvent e) { @@ -59,14 +51,20 @@ public class CreatePatchAction extends DumbAwareAction { ProgressManager.getInstance().run(new FolderPatchCreationTask(vcs, revisions[0])); } - else { - myUsualDelegate.actionPerformed(e); - } + } + + @Override + public boolean isActive(@NotNull AnActionEvent e) { + VcsHistorySession session = e.getData(VcsDataKeys.HISTORY_SESSION); + FilePath path = e.getData(VcsDataKeys.FILE_PATH); + return session != null && path != null && path.isDirectory(); } @Override public void update(AnActionEvent e) { e.getPresentation().setVisible(true); + e.getPresentation().setText(VcsBundle.message("action.name.create.patch.for.selected.revisions")); + e.getPresentation().setDescription(VcsBundle.message("action.description.create.patch.for.selected.revisions")); VcsFileRevision[] revisions = e.getData(VcsDataKeys.VCS_FILE_REVISIONS); FilePath filePath = e.getData(VcsDataKeys.FILE_PATH); @@ -88,7 +86,7 @@ public class CreatePatchAction extends DumbAwareAction { } } else { - e.getPresentation().setEnabled((revisions.length > 0) && (revisions.length < 3)); + e.getPresentation().setEnabled(false); } }