From 185804e6b8f909505576e97f01a925dedae6eef1 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Mon, 11 Nov 2013 13:03:30 +0100 Subject: [PATCH] refactor supported root type checking according to CR-IC-3056 --- .../intellij/openapi/module/ModuleType.java | 5 +++ .../intellij/openapi/module/ModuleUtil.java | 11 ++++++ .../analysis/BaseAnalysisActionDialog.java | 4 +-- .../util/scopeChooser/ScopeChooserCombo.java | 4 +-- .../openapi/roots/SupportedRootTypes.java | 34 ------------------- .../python/PlatformPythonModuleType.java | 7 ++++ .../python/PySupportedRootTypes.java | 30 ---------------- python/src/META-INF/pycharm-core.xml | 3 -- 8 files changed, 27 insertions(+), 71 deletions(-) delete mode 100644 platform/lang-impl/src/com/intellij/openapi/roots/SupportedRootTypes.java delete mode 100644 python/ide/src/com/jetbrains/python/PySupportedRootTypes.java diff --git a/platform/lang-api/src/com/intellij/openapi/module/ModuleType.java b/platform/lang-api/src/com/intellij/openapi/module/ModuleType.java index 3e098021b82e..b6b5457a4724 100644 --- a/platform/lang-api/src/com/intellij/openapi/module/ModuleType.java +++ b/platform/lang-api/src/com/intellij/openapi/module/ModuleType.java @@ -26,6 +26,7 @@ import com.intellij.openapi.roots.ui.configuration.ModulesProvider; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.jetbrains.jps.model.module.JpsModuleSourceRootType; import javax.swing.*; @@ -115,4 +116,8 @@ public abstract class ModuleType { public FrameworkRole getDefaultAcceptableRole() { return myFrameworkRole; } + + public boolean isSupportedRootType(JpsModuleSourceRootType type) { + return true; + } } diff --git a/platform/lang-api/src/com/intellij/openapi/module/ModuleUtil.java b/platform/lang-api/src/com/intellij/openapi/module/ModuleUtil.java index 02f25166678b..3aeae29e99d7 100644 --- a/platform/lang-api/src/com/intellij/openapi/module/ModuleUtil.java +++ b/platform/lang-api/src/com/intellij/openapi/module/ModuleUtil.java @@ -29,6 +29,7 @@ import com.intellij.psi.util.ParameterizedCachedValueProvider; import com.intellij.util.containers.MultiMap; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.jetbrains.jps.model.module.JpsModuleSourceRootType; import java.util.ArrayList; import java.util.Collection; @@ -86,4 +87,14 @@ public class ModuleUtil extends ModuleUtilCore { public static boolean hasModulesOfType(@NotNull Project project, @NotNull ModuleType module) { return !getModulesOfType(project, module).isEmpty(); } + + public static boolean isSupportedRootType(Project project, JpsModuleSourceRootType sourceRootType) { + Module[] modules = ModuleManager.getInstance(project).getModules(); + for (Module module : modules) { + if (ModuleType.get(module).isSupportedRootType(sourceRootType)) { + return true; + } + } + return modules.length == 0; + } } diff --git a/platform/lang-impl/src/com/intellij/analysis/BaseAnalysisActionDialog.java b/platform/lang-impl/src/com/intellij/analysis/BaseAnalysisActionDialog.java index b1c5c385bc70..2042fcd42d67 100644 --- a/platform/lang-impl/src/com/intellij/analysis/BaseAnalysisActionDialog.java +++ b/platform/lang-impl/src/com/intellij/analysis/BaseAnalysisActionDialog.java @@ -20,10 +20,10 @@ import com.intellij.find.FindSettings; import com.intellij.ide.util.scopeChooser.ScopeChooserCombo; import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleManager; +import com.intellij.openapi.module.ModuleUtil; import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.ProjectFileIndex; import com.intellij.openapi.roots.ProjectRootManager; -import com.intellij.openapi.roots.SupportedRootTypes; import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.util.Comparing; import com.intellij.openapi.util.Disposer; @@ -112,7 +112,7 @@ public class BaseAnalysisActionDialog extends DialogWrapper { //include test option myInspectTestSource.setSelected(myAnalysisOptions.ANALYZE_TEST_SOURCES); - myInspectTestSource.setVisible(SupportedRootTypes.isSupported(JavaSourceRootType.TEST_SOURCE)); + myInspectTestSource.setVisible(ModuleUtil.isSupportedRootType(myProject, JavaSourceRootType.TEST_SOURCE)); //module scope if applicable myModuleButton.setText(AnalysisScopeBundle.message("scope.option.module.with.mnemonic", myModuleName)); diff --git a/platform/lang-impl/src/com/intellij/ide/util/scopeChooser/ScopeChooserCombo.java b/platform/lang-impl/src/com/intellij/ide/util/scopeChooser/ScopeChooserCombo.java index 9182757d05e9..37b1573e7094 100644 --- a/platform/lang-impl/src/com/intellij/ide/util/scopeChooser/ScopeChooserCombo.java +++ b/platform/lang-impl/src/com/intellij/ide/util/scopeChooser/ScopeChooserCombo.java @@ -27,9 +27,9 @@ import com.intellij.openapi.editor.Editor; import com.intellij.openapi.extensions.Extensions; import com.intellij.openapi.fileEditor.FileEditorManager; import com.intellij.openapi.module.Module; +import com.intellij.openapi.module.ModuleUtil; import com.intellij.openapi.module.ModuleUtilCore; import com.intellij.openapi.project.Project; -import com.intellij.openapi.roots.SupportedRootTypes; import com.intellij.openapi.util.Pair; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.packageDependencies.ChangeListsScopesProvider; @@ -239,7 +239,7 @@ public class ScopeChooserCombo extends ComboboxWithBrowseButton implements Dispo result.add(GlobalSearchScope.allScope(project)); } - if (!PlatformUtils.isCidr() && SupportedRootTypes.isSupported(JavaSourceRootType.TEST_SOURCE)) { // TODO: fix these scopes in AppCode + if (!PlatformUtils.isCidr() && ModuleUtil.isSupportedRootType(project, JavaSourceRootType.TEST_SOURCE)) { // TODO: fix these scopes in AppCode result.add(GlobalSearchScopes.projectProductionScope(project)); result.add(GlobalSearchScopes.projectTestScope(project)); } diff --git a/platform/lang-impl/src/com/intellij/openapi/roots/SupportedRootTypes.java b/platform/lang-impl/src/com/intellij/openapi/roots/SupportedRootTypes.java deleted file mode 100644 index 4b1e366ada4a..000000000000 --- a/platform/lang-impl/src/com/intellij/openapi/roots/SupportedRootTypes.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright 2000-2013 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.intellij.openapi.roots; - -import com.intellij.openapi.components.ServiceManager; -import org.jetbrains.jps.model.module.JpsModuleSourceRootType; - -/** - * @author yole - */ -public abstract class SupportedRootTypes { - public abstract boolean isSupportedRootType(JpsModuleSourceRootType sourceRootType); - - public static boolean isSupported(JpsModuleSourceRootType sourceRootType) { - SupportedRootTypes service = ServiceManager.getService(SupportedRootTypes.class); - if (service != null) { - return service.isSupportedRootType(sourceRootType); - } - return true; - } -} diff --git a/python/ide/src/com/jetbrains/python/PlatformPythonModuleType.java b/python/ide/src/com/jetbrains/python/PlatformPythonModuleType.java index b1fe9e9607fc..ae4e18cfe41c 100644 --- a/python/ide/src/com/jetbrains/python/PlatformPythonModuleType.java +++ b/python/ide/src/com/jetbrains/python/PlatformPythonModuleType.java @@ -18,6 +18,8 @@ package com.jetbrains.python; import com.intellij.ide.util.projectWizard.EmptyModuleBuilder; import com.intellij.openapi.module.ModuleType; import org.jetbrains.annotations.NotNull; +import org.jetbrains.jps.model.java.JavaSourceRootType; +import org.jetbrains.jps.model.module.JpsModuleSourceRootType; /** * @author yole @@ -33,4 +35,9 @@ public class PlatformPythonModuleType extends PythonModuleTypeBase - -