0cee9dfb4c0754397434825189fb2941eb99c63e
[idea/community.git] / java / idea-ui / src / com / intellij / openapi / roots / ui / configuration / artifacts / sourceItems / ModuleGroupItem.java
1 /*
2  * Copyright 2000-2009 JetBrains s.r.o.
3  *
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
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  */
16 package com.intellij.openapi.roots.ui.configuration.artifacts.sourceItems;
17
18 import com.intellij.ide.projectView.PresentationData;
19 import com.intellij.packaging.elements.PackagingElement;
20 import com.intellij.packaging.ui.ArtifactEditorContext;
21 import com.intellij.packaging.ui.PackagingSourceItem;
22 import com.intellij.packaging.ui.SourceItemPresentation;
23 import com.intellij.packaging.ui.SourceItemWeights;
24 import com.intellij.ui.SimpleTextAttributes;
25 import com.intellij.util.PlatformIcons;
26 import org.jetbrains.annotations.NotNull;
27
28 import java.util.Collections;
29 import java.util.List;
30
31 public class ModuleGroupItem extends PackagingSourceItem {
32   private final String myGroupName;
33   private final List<String> myPath;
34
35   public ModuleGroupItem(@NotNull List<String> path) {
36     super(false);
37     myGroupName = path.get(path.size() - 1);
38     myPath = path;
39   }
40
41   public boolean equals(Object obj) {
42     return obj instanceof ModuleGroupItem && myPath.equals(((ModuleGroupItem)obj).myPath);
43   }
44
45   public int hashCode() {
46     return myPath.hashCode();
47   }
48
49   @NotNull
50   @Override
51   public SourceItemPresentation createPresentation(@NotNull ArtifactEditorContext context) {
52     return new ModuleGroupSourceItemPresentation(myGroupName);
53   }
54
55   @NotNull
56   @Override
57   public List<? extends PackagingElement<?>> createElements(@NotNull ArtifactEditorContext context) {
58     return Collections.emptyList();
59   }
60
61   public List<String> getPath() {
62     return myPath;
63   }
64
65   private static class ModuleGroupSourceItemPresentation extends SourceItemPresentation {
66     private final String myGroupName;
67
68     ModuleGroupSourceItemPresentation(String groupName) {
69       myGroupName = groupName;
70     }
71
72     @Override
73     public String getPresentableName() {
74       return myGroupName;
75     }
76
77     @Override
78     public void render(@NotNull PresentationData presentationData, SimpleTextAttributes mainAttributes,
79                        SimpleTextAttributes commentAttributes) {
80       presentationData.setIcon(PlatformIcons.CLOSED_MODULE_GROUP_ICON);
81       presentationData.addText(myGroupName, mainAttributes);
82     }
83
84     @Override
85     public int getWeight() {
86       return SourceItemWeights.MODULE_GROUP_WEIGHT;
87     }
88   }
89 }