package com.intellij.lang.javascript.flex.flexunit.inspections; import com.intellij.codeInspection.LocalQuickFix; import com.intellij.codeInspection.ProblemHighlightType; import com.intellij.codeInspection.ProblemsHolder; import com.intellij.codeInspection.RefactoringQuickFix; import com.intellij.lang.javascript.flex.FlexBundle; import com.intellij.lang.javascript.flex.flexunit.FlexUnitSupport; import com.intellij.lang.javascript.psi.ecmal4.JSClass; import com.intellij.openapi.roots.ProjectRootManager; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiElement; import com.intellij.refactoring.RefactoringActionHandler; import com.intellij.refactoring.RefactoringActionHandlerFactory; import org.jetbrains.annotations.Nls; import org.jetbrains.annotations.NotNull; public class FlexUnitClassInProductSourceInspection extends FlexUnitClassInspectionBase { @Nls @NotNull public String getDisplayName() { return FlexBundle.message("flexunit.inspection.testclassinproductsource.displayname"); } @NotNull public String getShortName() { return "FlexUnitClassInProductSourceInspection"; } protected void visitPotentialTestClass(JSClass aClass, @NotNull ProblemsHolder holder, FlexUnitSupport support) { final VirtualFile file = aClass.getContainingFile().getVirtualFile(); if (file == null) { return; } if (!ProjectRootManager.getInstance(aClass.getProject()).getFileIndex().isInTestSourceContent(file)) { final PsiElement nameIdentifier = aClass.getNameIdentifier(); if (nameIdentifier != null) { final LocalQuickFix[] fixes = holder.isOnTheFly() ? new LocalQuickFix[]{new MoveClassFix()} : LocalQuickFix.EMPTY_ARRAY; holder.registerProblem(nameIdentifier, FlexBundle.message("flexunit.inspection.testclassinproductsource.message"), ProblemHighlightType.GENERIC_ERROR_OR_WARNING, fixes); } } } private static class MoveClassFix implements RefactoringQuickFix { @Override @NotNull public String getFamilyName() { return "Move class"; } @NotNull @Override public RefactoringActionHandler getHandler() { return RefactoringActionHandlerFactory.getInstance().createMoveHandler(); } } }