From 58c7e6e46db7c2ffaeff2333327f6e3f130bec28 Mon Sep 17 00:00:00 2001 From: nik Date: Wed, 18 Sep 2013 09:53:11 +0400 Subject: [PATCH] hide flex modules from 'available elements' tree in artifact editor --- .../ui/PackagingSourceItemFilter.java | 28 +++++++++++++++++++ .../sourceItems/ModuleSourceItemGroup.java | 1 + ...odulesAndLibrariesSourceItemsProvider.java | 12 ++++---- .../sourceItems/SourceItemNodeBase.java | 22 ++++++++++----- resources/src/idea/RichPlatformPlugin.xml | 1 + 5 files changed, 52 insertions(+), 12 deletions(-) create mode 100644 java/compiler/openapi/src/com/intellij/packaging/ui/PackagingSourceItemFilter.java diff --git a/java/compiler/openapi/src/com/intellij/packaging/ui/PackagingSourceItemFilter.java b/java/compiler/openapi/src/com/intellij/packaging/ui/PackagingSourceItemFilter.java new file mode 100644 index 000000000000..eca70661fc75 --- /dev/null +++ b/java/compiler/openapi/src/com/intellij/packaging/ui/PackagingSourceItemFilter.java @@ -0,0 +1,28 @@ +/* + * 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.packaging.ui; + +import com.intellij.openapi.extensions.ExtensionPointName; +import org.jetbrains.annotations.NotNull; + +/** + * @author nik + */ +public abstract class PackagingSourceItemFilter { + public static final ExtensionPointName EP_NAME = ExtensionPointName.create("com.intellij.packaging.sourceItemFilter"); + + public abstract boolean isAvailable(@NotNull PackagingSourceItem item, @NotNull ArtifactEditorContext context); +} diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/sourceItems/ModuleSourceItemGroup.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/sourceItems/ModuleSourceItemGroup.java index c8acdd8c829f..e05eee47ee0f 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/sourceItems/ModuleSourceItemGroup.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/sourceItems/ModuleSourceItemGroup.java @@ -104,6 +104,7 @@ public class ModuleSourceItemGroup extends PackagingSourceItem { } } + @NotNull public Module getModule() { return myModule; } diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/sourceItems/ModulesAndLibrariesSourceItemsProvider.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/sourceItems/ModulesAndLibrariesSourceItemsProvider.java index 2f3b0f37a282..5ff0a85fef05 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/sourceItems/ModulesAndLibrariesSourceItemsProvider.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/sourceItems/ModulesAndLibrariesSourceItemsProvider.java @@ -46,10 +46,10 @@ public class ModulesAndLibrariesSourceItemsProvider extends PackagingSourceItems public Collection getSourceItems(@NotNull ArtifactEditorContext editorContext, @NotNull Artifact artifact, PackagingSourceItem parent) { if (parent == null) { - return createModuleItems(editorContext, artifact, ArrayUtil.EMPTY_STRING_ARRAY); + return createModuleItems(editorContext, ArrayUtil.EMPTY_STRING_ARRAY); } else if (parent instanceof ModuleGroupItem) { - return createModuleItems(editorContext, artifact, ((ModuleGroupItem)parent).getPath()); + return createModuleItems(editorContext, ((ModuleGroupItem)parent).getPath()); } else if (parent instanceof ModuleSourceItemGroup) { return createClasspathItems(editorContext, artifact, ((ModuleSourceItemGroup)parent).getModule()); @@ -57,8 +57,9 @@ public class ModulesAndLibrariesSourceItemsProvider extends PackagingSourceItems return Collections.emptyList(); } - private static Collection createClasspathItems(ArtifactEditorContext editorContext, - Artifact artifact, @NotNull Module module) { + @NotNull + private static Collection createClasspathItems(@NotNull ArtifactEditorContext editorContext, + @NotNull Artifact artifact, @NotNull Module module) { final List items = new ArrayList(); final ModuleRootModel rootModel = editorContext.getModulesProvider().getRootModel(module); List libraries = new ArrayList(); @@ -83,7 +84,8 @@ public class ModulesAndLibrariesSourceItemsProvider extends PackagingSourceItems return items; } - private static Collection createModuleItems(ArtifactEditorContext editorContext, Artifact artifact, @NotNull String[] groupPath) { + @NotNull + private static Collection createModuleItems(@NotNull ArtifactEditorContext editorContext, @NotNull String[] groupPath) { final Module[] modules = editorContext.getModulesProvider().getModules(); final List items = new ArrayList(); Set groups = new HashSet(); diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/sourceItems/SourceItemNodeBase.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/sourceItems/SourceItemNodeBase.java index 359ee783a476..795d4d84aff6 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/sourceItems/SourceItemNodeBase.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/sourceItems/SourceItemNodeBase.java @@ -17,15 +17,12 @@ package com.intellij.openapi.roots.ui.configuration.artifacts.sourceItems; import com.intellij.ide.projectView.PresentationData; import com.intellij.ide.util.treeView.NodeDescriptor; -import com.intellij.openapi.extensions.Extensions; import com.intellij.openapi.roots.ui.configuration.artifacts.ArtifactEditorEx; import com.intellij.openapi.roots.ui.configuration.artifacts.nodes.ArtifactsTreeNode; import com.intellij.packaging.artifacts.Artifact; -import com.intellij.packaging.ui.ArtifactEditorContext; -import com.intellij.packaging.ui.PackagingSourceItem; -import com.intellij.packaging.ui.PackagingSourceItemsProvider; -import com.intellij.packaging.ui.TreeNodePresentation; +import com.intellij.packaging.ui.*; import com.intellij.ui.treeStructure.SimpleNode; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.ArrayList; @@ -61,12 +58,13 @@ public abstract class SourceItemNodeBase extends ArtifactsTreeNode { @Override protected SimpleNode[] buildChildren() { - final PackagingSourceItemsProvider[] providers = Extensions.getExtensions(PackagingSourceItemsProvider.EP_NAME); + final PackagingSourceItemsProvider[] providers = PackagingSourceItemsProvider.EP_NAME.getExtensions(); + PackagingSourceItemFilter[] filters = PackagingSourceItemFilter.EP_NAME.getExtensions(); List children = new ArrayList(); for (PackagingSourceItemsProvider provider : providers) { final Collection items = provider.getSourceItems(myContext, myArtifact, getSourceItem()); for (PackagingSourceItem item : items) { - if (myArtifact.getArtifactType().isSuitableItem(item)) { + if (myArtifact.getArtifactType().isSuitableItem(item) && isAvailable(item, myContext, filters)) { children.add(new SourceItemNode(myContext, this, item, myArtifactEditor)); } } @@ -74,6 +72,16 @@ public abstract class SourceItemNodeBase extends ArtifactsTreeNode { return children.isEmpty() ? NO_CHILDREN : children.toArray(new SimpleNode[children.size()]); } + private static boolean isAvailable(@NotNull PackagingSourceItem item, @NotNull ArtifactEditorContext context, + @NotNull PackagingSourceItemFilter[] filters) { + for (PackagingSourceItemFilter filter : filters) { + if (!filter.isAvailable(item, context)) { + return false; + } + } + return true; + } + @Nullable protected abstract PackagingSourceItem getSourceItem(); } diff --git a/resources/src/idea/RichPlatformPlugin.xml b/resources/src/idea/RichPlatformPlugin.xml index 99f0a0bb9d0a..7b9af28063d9 100644 --- a/resources/src/idea/RichPlatformPlugin.xml +++ b/resources/src/idea/RichPlatformPlugin.xml @@ -65,6 +65,7 @@ +