package com.intellij.lang.javascript.flex.projectStructure.ui; import com.intellij.lang.javascript.flex.projectStructure.FlexBuildConfigurationsExtension; import com.intellij.lang.javascript.flex.projectStructure.model.FlexBuildConfiguration; import com.intellij.openapi.module.Module; import com.intellij.openapi.roots.ui.configuration.ProjectStructureConfigurable; import com.intellij.openapi.roots.ui.configuration.projectRoot.ModuleStructureConfigurable; import com.intellij.openapi.ui.MasterDetailsComponent; import com.intellij.ui.navigation.Place; import org.jetbrains.annotations.Nullable; import java.util.List; public class FlexProjectStructureUtil { public static Place createPlace(FlexBCConfigurable configurable, @Nullable String tabName) { Place place = new Place() .putPath(ProjectStructureConfigurable.CATEGORY, ModuleStructureConfigurable.getInstance(configurable.getModule().getProject())) .putPath(MasterDetailsComponent.TREE_OBJECT, configurable.getEditableObject()); if (tabName != null) { place.putPath(CompositeConfigurable.TAB_NAME, tabName); } return place; } public static Place createPlace(Module module, DependenciesConfigurable configurable) { final FlexBCConfigurable bcConfigurable = findBcConfigurable(module, configurable); return createPlace(bcConfigurable, DependenciesConfigurable.TAB_NAME); } public static Place createPlace(final Module module, final FlexBuildConfiguration bc, @Nullable final String tabName) { final FlexBCConfigurable bcConfigurable = findBcConfigurable(module, bc); return createPlace(bcConfigurable, tabName); } @Nullable private static FlexBCConfigurable findBcConfigurable(Module module, final DependenciesConfigurable configurable) { final List<CompositeConfigurable> configurables = FlexBuildConfigurationsExtension.getInstance().getConfigurator().getBCConfigurables(module); for (CompositeConfigurable compositeConfigurable : configurables) { final FlexBCConfigurable bcConfigurable = FlexBCConfigurable.unwrap(compositeConfigurable); if (bcConfigurable.getEditableObject().getDependencies() == configurable.getEditableObject()) { return bcConfigurable; } } return null; } @Nullable private static FlexBCConfigurable findBcConfigurable(Module module, final FlexBuildConfiguration bc) { final List<CompositeConfigurable> configurables = FlexBuildConfigurationsExtension.getInstance().getConfigurator().getBCConfigurables(module); for (CompositeConfigurable compositeConfigurable : configurables) { final FlexBCConfigurable bcConfigurable = FlexBCConfigurable.unwrap(compositeConfigurable); if (bcConfigurable.getEditableObject() == bc) { return bcConfigurable; } } return null; } }