package com.intellij.lang.javascript.inspections.actionscript;
import com.intellij.lang.javascript.flex.FlexBundle;
import com.intellij.lang.javascript.flex.projectStructure.FlexBuildConfigurationsExtension;
import com.intellij.lang.javascript.flex.projectStructure.model.FlexBuildConfiguration;
import com.intellij.lang.javascript.flex.projectStructure.model.FlexBuildConfigurationManager;
import com.intellij.lang.javascript.flex.projectStructure.ui.CompilerOptionsConfigurable;
import com.intellij.lang.javascript.flex.projectStructure.ui.CompositeConfigurable;
import com.intellij.lang.javascript.flex.projectStructure.ui.FlexBCConfigurable;
import com.intellij.lang.javascript.validation.fixes.FixAndIntentionAction;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.options.ShowSettingsUtil;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.roots.ui.configuration.ProjectStructureConfigurable;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
import com.intellij.ui.navigation.Place;
import org.jetbrains.annotations.NotNull;
public class DeclareConditionalCompilerDefinitionFix extends FixAndIntentionAction {
private final Module myModule;
private final String myConditionalCompilerDefinitionName;
public DeclareConditionalCompilerDefinitionFix(final @NotNull Module module, final String conditionalCompilerDefinitionName) {
myModule = module;
myConditionalCompilerDefinitionName = conditionalCompilerDefinitionName;
}
@NotNull
public String getName() {
return FlexBundle.message("define.0", myConditionalCompilerDefinitionName);
}
protected void applyFix(final Project project, final PsiElement psiElement, final PsiFile file, final Editor editor) {
final ProjectStructureConfigurable configurable = ProjectStructureConfigurable.getInstance(project);
ShowSettingsUtil.getInstance().editConfigurable(project, configurable, () -> {
final FlexBuildConfiguration bc = FlexBuildConfigurationManager.getInstance(myModule).getActiveConfiguration();
final Place place = FlexBuildConfigurationsExtension.getInstance().getConfigurator().getPlaceFor(myModule, bc.getName())
.putPath(CompositeConfigurable.TAB_NAME, CompilerOptionsConfigurable.TAB_NAME)
.putPath(FlexBCConfigurable.LOCATION_ON_TAB, CompilerOptionsConfigurable.Location.ConditionalCompilerDefinition)
.putPath(CompilerOptionsConfigurable.CONDITIONAL_COMPILER_DEFINITION_NAME, myConditionalCompilerDefinitionName);
configurable.navigateTo(place, true);
});
}
}