package com.intellij.lang.javascript.flex.build; import com.intellij.lang.javascript.flex.FlexBundle; import com.intellij.lang.javascript.flex.projectStructure.model.AirDesktopPackagingOptions; import com.intellij.lang.javascript.flex.projectStructure.model.AirPackagingOptions; import com.intellij.lang.javascript.flex.projectStructure.model.AndroidPackagingOptions; import com.intellij.lang.javascript.flex.projectStructure.model.IosPackagingOptions; import com.intellij.lang.javascript.flex.projectStructure.ui.*; import com.intellij.openapi.roots.ui.configuration.projectRoot.daemon.ProjectStructureProblemType; import org.jetbrains.annotations.Nullable; public class FlashProjectStructureProblem { public final ProjectStructureProblemType.Severity severity; public final String errorMessage; public final String errorId; public final String tabName; public final @Nullable Object locationOnTab; private FlashProjectStructureProblem(final ProjectStructureProblemType.Severity severity, final String errorMessage, final String errorId, final String tabName, final @Nullable Object locationOnTab) { this.severity = severity; this.errorMessage = errorMessage; this.errorId = errorId; this.tabName = tabName; this.locationOnTab = locationOnTab; } public static FlashProjectStructureProblem createGeneralOptionProblem(final ProjectStructureProblemType.Severity severity, final String bcName, final String errorMessage, final FlexBCConfigurable.Location location) { return new FlashProjectStructureProblem(severity, errorMessage, location.errorId, bcName, location); } public static FlashProjectStructureProblem createDependenciesProblem(final ProjectStructureProblemType.Severity severity, final String errorMessage, final DependenciesConfigurable.Location location) { return new FlashProjectStructureProblem(severity, errorMessage, location.errorId, DependenciesConfigurable.TAB_NAME, location); } public static FlashProjectStructureProblem createCompilerOptionsProblem(final ProjectStructureProblemType.Severity severity, final String errorMessage, final CompilerOptionsConfigurable.Location location) { return new FlashProjectStructureProblem(severity, errorMessage, location.errorId, CompilerOptionsConfigurable.TAB_NAME, location); } public static FlashProjectStructureProblem createPackagingOptionsProblem(final ProjectStructureProblemType.Severity severity, final AirPackagingOptions packagingOptions, final String errorMessage, final AirPackagingConfigurableBase.Location location) { final String tabName = packagingOptions instanceof AirDesktopPackagingOptions ? AirDesktopPackagingConfigurable.TAB_NAME : packagingOptions instanceof AndroidPackagingOptions ? AndroidPackagingConfigurable.TAB_NAME : packagingOptions instanceof IosPackagingOptions ? IOSPackagingConfigurable.TAB_NAME : null; assert tabName != null : packagingOptions; return new FlashProjectStructureProblem(severity, errorMessage, location.errorId, tabName, location); } public static class FlexUnitOutputFolderProblem extends FlashProjectStructureProblem { public static final FlexUnitOutputFolderProblem INSTANCE = new FlexUnitOutputFolderProblem(); private FlexUnitOutputFolderProblem() { super(ProjectStructureProblemType.Severity.ERROR, FlexBundle.message("flexunit.output.folder.not.set"), "project-output", "", null); } } }