diff --git a/platform/platform-impl/src/com/intellij/ide/actions/ShowStructureSettingsAction.java b/java/idea-ui/src/com/intellij/ide/actions/ShowStructureSettingsAction.java similarity index 69% rename from platform/platform-impl/src/com/intellij/ide/actions/ShowStructureSettingsAction.java rename to java/idea-ui/src/com/intellij/ide/actions/ShowStructureSettingsAction.java index a4781c8a0235..6f4e0fa08cc7 100644 --- a/platform/platform-impl/src/com/intellij/ide/actions/ShowStructureSettingsAction.java +++ b/java/idea-ui/src/com/intellij/ide/actions/ShowStructureSettingsAction.java @@ -18,30 +18,20 @@ package com.intellij.ide.actions; import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.PlatformDataKeys; -import com.intellij.openapi.options.Configurable; import com.intellij.openapi.options.ShowSettingsUtil; import com.intellij.openapi.options.newEditor.OptionsEditorDialog; -import com.intellij.openapi.options.ex.ProjectConfigurablesGroup; +import com.intellij.openapi.project.DumbAware; import com.intellij.openapi.project.Project; import com.intellij.openapi.project.ProjectManager; -import com.intellij.openapi.project.DumbAware; -import com.intellij.openapi.diagnostic.Logger; +import com.intellij.openapi.roots.ui.configuration.ProjectStructureConfigurable; public class ShowStructureSettingsAction extends AnAction implements DumbAware { - - private static final Logger LOG = Logger.getInstance("#com.intellij.ide.actions.ShowStructureSettingsAction"); - public void actionPerformed(AnActionEvent e) { Project project = PlatformDataKeys.PROJECT.getData(e.getDataContext()); if (project == null) { project = ProjectManager.getInstance().getDefaultProject(); } - final Configurable configurable = ProjectConfigurablesGroup.getProjectStructureConfigurable(project); - if (configurable != null) { - ShowSettingsUtil.getInstance().editConfigurable(project, OptionsEditorDialog.DIMENSION_KEY, configurable); - } else { - LOG.info("No project structure configurable found"); - } + ShowSettingsUtil.getInstance().editProjectConfigurable(project, ProjectStructureConfigurable.class, OptionsEditorDialog.DIMENSION_KEY); } } \ No newline at end of file diff --git a/platform/platform-impl/src/com/intellij/ide/actions/TemplateProjectStructureAction.java b/java/idea-ui/src/com/intellij/ide/actions/TemplateProjectStructureAction.java similarity index 78% rename from platform/platform-impl/src/com/intellij/ide/actions/TemplateProjectStructureAction.java rename to java/idea-ui/src/com/intellij/ide/actions/TemplateProjectStructureAction.java index 22b98d5b36de..8386a91d8037 100644 --- a/platform/platform-impl/src/com/intellij/ide/actions/TemplateProjectStructureAction.java +++ b/java/idea-ui/src/com/intellij/ide/actions/TemplateProjectStructureAction.java @@ -17,18 +17,16 @@ package com.intellij.ide.actions; import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; -import com.intellij.openapi.options.Configurable; import com.intellij.openapi.options.ShowSettingsUtil; import com.intellij.openapi.options.newEditor.OptionsEditorDialog; -import com.intellij.openapi.options.ex.ProjectConfigurablesGroup; -import com.intellij.openapi.project.Project; import com.intellij.openapi.project.DumbAware; +import com.intellij.openapi.project.Project; import com.intellij.openapi.project.ex.ProjectManagerEx; +import com.intellij.openapi.roots.ui.configuration.ProjectStructureConfigurable; public class TemplateProjectStructureAction extends AnAction implements DumbAware { public void actionPerformed(final AnActionEvent e) { Project defaultProject = ProjectManagerEx.getInstanceEx().getDefaultProject(); - final Configurable configurable = ProjectConfigurablesGroup.getProjectStructureConfigurable(defaultProject); - ShowSettingsUtil.getInstance().editConfigurable(defaultProject, OptionsEditorDialog.DIMENSION_KEY, configurable); + ShowSettingsUtil.getInstance().editProjectConfigurable(defaultProject, ProjectStructureConfigurable.class, OptionsEditorDialog.DIMENSION_KEY); } } \ No newline at end of file diff --git a/platform/platform-api/src/com/intellij/openapi/options/ShowSettingsUtil.java b/platform/platform-api/src/com/intellij/openapi/options/ShowSettingsUtil.java index ab78894a72d4..15589dd85a69 100644 --- a/platform/platform-api/src/com/intellij/openapi/options/ShowSettingsUtil.java +++ b/platform/platform-api/src/com/intellij/openapi/options/ShowSettingsUtil.java @@ -46,6 +46,9 @@ public abstract class ShowSettingsUtil { public abstract boolean editConfigurable(Project project, @NonNls String dimensionServiceKey, Configurable configurable); + public abstract boolean editProjectConfigurable(@NotNull Project project, Class configurableClass, + @NonNls @Nullable String dimensionServiceKey); + public abstract boolean editConfigurable(Component parent, String dimensionServiceKey, Configurable configurable); public abstract T findProjectConfigurable(Project project, Class confClass); diff --git a/platform/platform-impl/src/com/intellij/ide/actions/ShowSettingsUtilImpl.java b/platform/platform-impl/src/com/intellij/ide/actions/ShowSettingsUtilImpl.java index 2492b85246b7..f1feefdc86bc 100644 --- a/platform/platform-impl/src/com/intellij/ide/actions/ShowSettingsUtilImpl.java +++ b/platform/platform-impl/src/com/intellij/ide/actions/ShowSettingsUtilImpl.java @@ -17,6 +17,7 @@ package com.intellij.ide.actions; import com.intellij.ide.util.PropertiesComponent; import com.intellij.openapi.application.ApplicationManager; +import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.options.Configurable; import com.intellij.openapi.options.ConfigurableGroup; import com.intellij.openapi.options.ShowSettingsUtil; @@ -36,6 +37,7 @@ import java.util.List; * @author max */ public class ShowSettingsUtilImpl extends ShowSettingsUtil { + private static final Logger LOG = Logger.getInstance("#com.intellij.ide.actions.ShowSettingsUtilImpl"); @NonNls private static final String PREFER_CLASSIC_OPTIONS_EDITOR = "PREFER_CLASSIC_OPTIONS_EDITOR"; @@ -147,6 +149,21 @@ public class ShowSettingsUtilImpl extends ShowSettingsUtil { return configurableEditor.isOK(); } + @Override + public boolean editProjectConfigurable(@NotNull Project project, + Class configurableClass, + @NonNls String dimensionServiceKey) { + final Configurable configurable = findProjectConfigurable(project, configurableClass); + if (configurable == null) { + LOG.error("Cannot find project configurable for " + configurableClass); + return false; + } + if (dimensionServiceKey == null) { + dimensionServiceKey = createDimensionKey(configurable); + } + return editConfigurable(project, dimensionServiceKey, configurable); + } + public boolean editConfigurable(Component parent, Configurable configurable) { final SingleConfigurableEditor configurableEditor = new SingleConfigurableEditor(parent, configurable, createDimensionKey(configurable)); configurableEditor.show(); diff --git a/platform/platform-impl/src/com/intellij/openapi/options/ex/ProjectConfigurablesGroup.java b/platform/platform-impl/src/com/intellij/openapi/options/ex/ProjectConfigurablesGroup.java index 6a30cb842012..8b898cf09c8f 100644 --- a/platform/platform-impl/src/com/intellij/openapi/options/ex/ProjectConfigurablesGroup.java +++ b/platform/platform-impl/src/com/intellij/openapi/options/ex/ProjectConfigurablesGroup.java @@ -18,7 +18,6 @@ package com.intellij.openapi.options.ex; import com.intellij.openapi.options.*; import com.intellij.openapi.project.Project; import com.intellij.util.containers.ContainerUtil; -import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.Iterator; @@ -75,17 +74,6 @@ public class ProjectConfigurablesGroup implements ConfigurableGroup { return result.toArray(new Configurable[result.size()]); } - @Nullable - public static Configurable getProjectStructureConfigurable(Project project) { - final Configurable[] configurables = getConfigurables(project, new ConfigurableFilter() { - public boolean isIncluded(final Configurable configurable) { - return PROJECT_STRUCTURE_CLASS_FQ_NAME.equals(configurable.getClass().getName()); - } - }); - - return configurables.length == 1 ? configurables[0] : null; - } - static List buildConfigurablesList(final Configurable[] extensions, final Configurable[] components, ConfigurableFilter filter) { List result = new ArrayList(); ContainerUtil.addAll(result, extensions);