2 * Copyright 2000-2009 JetBrains s.r.o.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
16 package com
.intellij
.packaging
.elements
;
18 import com
.intellij
.packaging
.artifacts
.Artifact
;
19 import com
.intellij
.packaging
.ui
.ArtifactEditorContext
;
20 import org
.jetbrains
.annotations
.NonNls
;
21 import org
.jetbrains
.annotations
.NotNull
;
22 import org
.jetbrains
.annotations
.Nullable
;
24 import java
.util
.Collections
;
25 import java
.util
.List
;
30 public abstract class CompositePackagingElementType
<E
extends CompositePackagingElement
<?
>> extends PackagingElementType
<E
> {
31 protected CompositePackagingElementType(@NotNull @NonNls String id
, @NotNull String presentableName
) {
32 super(id
, presentableName
);
36 public boolean canCreate(@NotNull ArtifactEditorContext context
, @NotNull Artifact artifact
) {
42 public abstract CompositePackagingElement
<?
> createComposite(CompositePackagingElement
<?
> parent
, @Nullable String baseName
, @NotNull ArtifactEditorContext context
);
45 public List
<?
extends PackagingElement
<?
>> chooseAndCreate(@NotNull ArtifactEditorContext context
, @NotNull Artifact artifact
, @NotNull CompositePackagingElement
<?
> parent
) {
46 final PackagingElement
<?
> composite
= createComposite(parent
, null, context
);
47 return composite
!= null ? Collections
.singletonList(composite
) : Collections
.<E
>emptyList();