From 83d6d09304516bb39ca765ab1ca958b34fd7487b Mon Sep 17 00:00:00 2001 From: Alexander Zolotov Date: Tue, 21 Aug 2018 21:16:22 +0300 Subject: [PATCH] Add TestCreators to Generate popup (GO-5889) --- .../GenerateFromTestCreatorsGroup.java | 54 +++++++++++++++++++ .../src/idea/LangActions.xml | 1 + 2 files changed, 55 insertions(+) create mode 100644 platform/lang-impl/src/com/intellij/testIntegration/GenerateFromTestCreatorsGroup.java diff --git a/platform/lang-impl/src/com/intellij/testIntegration/GenerateFromTestCreatorsGroup.java b/platform/lang-impl/src/com/intellij/testIntegration/GenerateFromTestCreatorsGroup.java new file mode 100644 index 000000000000..1ece6063bfe5 --- /dev/null +++ b/platform/lang-impl/src/com/intellij/testIntegration/GenerateFromTestCreatorsGroup.java @@ -0,0 +1,54 @@ +// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +package com.intellij.testIntegration; + +import com.intellij.navigation.ItemPresentation; +import com.intellij.openapi.actionSystem.*; +import com.intellij.openapi.editor.Editor; +import com.intellij.openapi.project.DumbService; +import com.intellij.openapi.project.Project; +import com.intellij.psi.PsiFile; +import com.intellij.util.ObjectUtils; +import com.intellij.util.containers.ContainerUtil; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.List; + +public class GenerateFromTestCreatorsGroup extends ActionGroup { + @NotNull + @Override + public AnAction[] getChildren(@Nullable AnActionEvent e) { + if (e == null) { + return AnAction.EMPTY_ARRAY; + } + Project project = e.getData(CommonDataKeys.PROJECT); + PsiFile file = e.getData(CommonDataKeys.PSI_FILE); + Editor editor = e.getData(CommonDataKeys.EDITOR); + if (project == null || file == null) { + return AnAction.EMPTY_ARRAY; + } + List result = ContainerUtil.newSmartList(); + for (TestCreator creator : LanguageTestCreators.INSTANCE.allForLanguage(file.getLanguage())) { + result.add(new AnAction() { + @Override + public void actionPerformed(@NotNull AnActionEvent e) { + creator.createTest(project, editor, file); + } + + @Override + public void update(@NotNull AnActionEvent e) { + String text = creator instanceof ItemPresentation ? ((ItemPresentation)creator).getPresentableText() : null; + Presentation presentation = e.getPresentation(); + presentation.setText(ObjectUtils.notNull(text, "New Test...")); + presentation.setEnabledAndVisible(creator.isAvailable(project, editor, file)); + } + + @Override + public boolean isDumbAware() { + return DumbService.isDumbAware(creator); + } + }); + } + return result.toArray(AnAction.EMPTY_ARRAY); + } +} diff --git a/platform/platform-resources/src/idea/LangActions.xml b/platform/platform-resources/src/idea/LangActions.xml index 80f8b8ce43bc..8fe578256e15 100644 --- a/platform/platform-resources/src/idea/LangActions.xml +++ b/platform/platform-resources/src/idea/LangActions.xml @@ -35,6 +35,7 @@ +