From 4029927bf36e2549f16c7b26d1eb4650fd9ffc10 Mon Sep 17 00:00:00 2001 From: Julia Beliaeva Date: Tue, 25 Sep 2018 23:11:20 +0300 Subject: [PATCH] [file-history] convert CompareRevisionsFromHistoryActionProvider to kotlin --- ...mpareRevisionsFromHistoryActionProvider.kt | 155 ++++++++---------- 1 file changed, 72 insertions(+), 83 deletions(-) diff --git a/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/actions/history/CompareRevisionsFromHistoryActionProvider.kt b/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/actions/history/CompareRevisionsFromHistoryActionProvider.kt index 6ed45bc1b01f..e1f970e86769 100644 --- a/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/actions/history/CompareRevisionsFromHistoryActionProvider.kt +++ b/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/actions/history/CompareRevisionsFromHistoryActionProvider.kt @@ -13,114 +13,103 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.intellij.vcs.log.ui.actions.history; +package com.intellij.vcs.log.ui.actions.history -import com.intellij.openapi.actionSystem.AnActionEvent; -import com.intellij.openapi.actionSystem.AnActionExtensionProvider; -import com.intellij.openapi.actionSystem.CommonDataKeys; -import com.intellij.openapi.project.Project; -import com.intellij.openapi.ui.MessageType; -import com.intellij.openapi.vcs.FilePath; -import com.intellij.openapi.vcs.VcsDataKeys; -import com.intellij.openapi.vcs.changes.Change; -import com.intellij.openapi.vcs.history.VcsDiffUtil; -import com.intellij.openapi.vcs.ui.VcsBalloonProblemNotifier; -import com.intellij.util.containers.ContainerUtil; -import com.intellij.vcs.log.CommitId; -import com.intellij.vcs.log.VcsFullCommitDetails; -import com.intellij.vcs.log.VcsLog; -import com.intellij.vcs.log.VcsLogDiffHandler; -import com.intellij.vcs.log.history.FileHistoryUi; -import com.intellij.vcs.log.statistics.VcsLogUsageTriggerCollector; -import com.intellij.vcs.log.ui.VcsLogInternalDataKeys; -import org.jetbrains.annotations.NotNull; +import com.intellij.openapi.actionSystem.AnActionEvent +import com.intellij.openapi.actionSystem.AnActionExtensionProvider +import com.intellij.openapi.actionSystem.CommonDataKeys +import com.intellij.openapi.ui.MessageType +import com.intellij.openapi.vcs.VcsDataKeys +import com.intellij.openapi.vcs.history.VcsDiffUtil +import com.intellij.openapi.vcs.ui.VcsBalloonProblemNotifier +import com.intellij.util.ObjectUtils.notNull +import com.intellij.util.containers.ContainerUtil +import com.intellij.vcs.log.VcsLog +import com.intellij.vcs.log.ui.VcsLogInternalDataKeys +import com.intellij.vcs.log.statistics.VcsLogUsageTriggerCollector +import java.awt.event.KeyEvent -import java.awt.event.KeyEvent; -import java.util.List; +class CompareRevisionsFromHistoryActionProvider : AnActionExtensionProvider { -import static com.intellij.util.ObjectUtils.notNull; - -public class CompareRevisionsFromHistoryActionProvider implements AnActionExtensionProvider { - private static final String COMPARE_TEXT = "Compare"; - private static final String COMPARE_DESCRIPTION = "Compare selected versions"; - private static final String DIFF_TEXT = "Show Diff"; - private static final String DIFF_DESCRIPTION = "Show diff with previous version"; - - @Override - public boolean isActive(@NotNull AnActionEvent e) { - FilePath filePath = e.getData(VcsDataKeys.FILE_PATH); - return e.getData(VcsLogInternalDataKeys.FILE_HISTORY_UI) != null && filePath != null && filePath.isDirectory(); + override fun isActive(e: AnActionEvent): Boolean { + val filePath = e.getData(VcsDataKeys.FILE_PATH) + return e.getData(VcsLogInternalDataKeys.FILE_HISTORY_UI) != null && filePath != null && filePath.isDirectory } - @Override - public void update(@NotNull AnActionEvent e) { - Project project = e.getProject(); - FileHistoryUi ui = e.getData(VcsLogInternalDataKeys.FILE_HISTORY_UI); - FilePath filePath = e.getData(VcsDataKeys.FILE_PATH); + override fun update(e: AnActionEvent) { + val project = e.project + val ui = e.getData(VcsLogInternalDataKeys.FILE_HISTORY_UI) + val filePath = e.getData(VcsDataKeys.FILE_PATH) if (project == null || ui == null || filePath == null) { - e.getPresentation().setEnabledAndVisible(false); - return; + e.presentation.isEnabledAndVisible = false + return } - e.getPresentation().setVisible(true); + e.presentation.isVisible = true - VcsLog log = ui.getVcsLog(); - updateActionText(e, log); + val log = ui.vcsLog + updateActionText(e, log) - if (e.getInputEvent() instanceof KeyEvent) { - e.getPresentation().setEnabled(true); - return; + if (e.inputEvent is KeyEvent) { + e.presentation.isEnabled = true + return } - List commits = log.getSelectedCommits(); - if (commits.size() == 2) { - e.getPresentation().setEnabled(e.getData(VcsLogInternalDataKeys.LOG_DIFF_HANDLER) != null); + val commits = log.selectedCommits + if (commits.size == 2) { + e.presentation.isEnabled = e.getData(VcsLogInternalDataKeys.LOG_DIFF_HANDLER) != null } else { - e.getPresentation().setEnabled(commits.size() == 1); + e.presentation.isEnabled = commits.size == 1 } } - @Override - public void actionPerformed(@NotNull AnActionEvent e) { - Project project = e.getRequiredData(CommonDataKeys.PROJECT); - FileHistoryUi ui = e.getRequiredData(VcsLogInternalDataKeys.FILE_HISTORY_UI); - FilePath filePath = e.getRequiredData(VcsDataKeys.FILE_PATH); + override fun actionPerformed(e: AnActionEvent) { + val project = e.getRequiredData(CommonDataKeys.PROJECT) + val ui = e.getRequiredData(VcsLogInternalDataKeys.FILE_HISTORY_UI) + val filePath = e.getRequiredData(VcsDataKeys.FILE_PATH) - VcsLogUsageTriggerCollector.triggerUsage(e); + VcsLogUsageTriggerCollector.triggerUsage(e) - List commits = ui.getVcsLog().getSelectedCommits(); - if (commits.size() == 2) { - VcsLogDiffHandler handler = e.getData(VcsLogInternalDataKeys.LOG_DIFF_HANDLER); + val commits = ui.vcsLog.selectedCommits + if (commits.size == 2) { + val handler = e.getData(VcsLogInternalDataKeys.LOG_DIFF_HANDLER) ?: return // this check is needed here since we may come on key event without performing proper checks - if (handler == null) return; - CommitId newestId = commits.get(0); - CommitId olderId = commits.get(1); - notNull(handler).showDiff(olderId.getRoot(), ui.getPathInCommit(olderId.getHash()), olderId.getHash(), - ui.getPathInCommit(newestId.getHash()), newestId.getHash()); - return; + val newestId = commits[0] + val olderId = commits[1] + notNull(handler).showDiff(olderId.root, ui.getPathInCommit(olderId.hash), olderId.hash, + ui.getPathInCommit(newestId.hash), newestId.hash) + return } - if (commits.size() != 1) return; + if (commits.size != 1) return - List commitIds = ContainerUtil.map(commits, c -> ui.getLogData().getCommitIndex(c.getHash(), c.getRoot())); - ui.getLogData().getCommitDetailsGetter().loadCommitsData(commitIds, details -> { - VcsFullCommitDetails detail = notNull(ContainerUtil.getFirstItem(details)); - List changes = ui.collectRelevantChanges(detail); - VcsDiffUtil.showChangesDialog(project, "Changes in " + detail.getId().toShortString() + " for " + filePath.getName(), - ContainerUtil.newArrayList(changes)); - }, t -> VcsBalloonProblemNotifier.showOverChangesView(project, "Could not load selected commits: " + t.getMessage(), - MessageType.ERROR), null); + val commitIds = ContainerUtil.map(commits) { c -> ui.logData.getCommitIndex(c.hash, c.root) } + ui.logData.commitDetailsGetter.loadCommitsData(commitIds, { details -> + val detail = notNull(ContainerUtil.getFirstItem(details)) + val changes = ui.collectRelevantChanges(detail) + VcsDiffUtil.showChangesDialog(project, "Changes in " + detail.id.toShortString() + " for " + filePath.name, + ContainerUtil.newArrayList(changes)) + }, { t -> VcsBalloonProblemNotifier.showOverChangesView(project, "Could not load selected commits: " + t.message, MessageType.ERROR) }, + null) } - public static void updateActionText(@NotNull AnActionEvent e, @NotNull VcsLog log) { - if (log.getSelectedCommits().size() >= 2) { - e.getPresentation().setText(COMPARE_TEXT); - e.getPresentation().setDescription(COMPARE_DESCRIPTION); - } - else { - e.getPresentation().setText(DIFF_TEXT); - e.getPresentation().setDescription(DIFF_DESCRIPTION); + companion object { + private const val COMPARE_TEXT = "Compare" + private const val COMPARE_DESCRIPTION = "Compare selected versions" + private const val DIFF_TEXT = "Show Diff" + private const val DIFF_DESCRIPTION = "Show diff with previous version" + + @JvmStatic + fun updateActionText(e: AnActionEvent, log: VcsLog) { + if (log.selectedCommits.size >= 2) { + e.presentation.text = COMPARE_TEXT + e.presentation.description = COMPARE_DESCRIPTION + } + else { + e.presentation.text = DIFF_TEXT + e.presentation.description = DIFF_DESCRIPTION + } } } }