Killing open/closed icons.
[idea/community.git] / java / compiler / impl / src / com / intellij / packaging / impl / ui / ModuleElementPresentation.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.packaging.impl.ui;
17
18 import com.intellij.ide.projectView.PresentationData;
19 import com.intellij.openapi.compiler.CompilerBundle;
20 import com.intellij.openapi.module.ModifiableModuleModel;
21 import com.intellij.openapi.module.Module;
22 import com.intellij.openapi.module.ModulePointer;
23 import com.intellij.openapi.module.ModuleType;
24 import com.intellij.packaging.ui.ArtifactEditorContext;
25 import com.intellij.packaging.ui.PackagingElementWeights;
26 import com.intellij.packaging.ui.TreeNodePresentation;
27 import com.intellij.ui.SimpleTextAttributes;
28 import com.intellij.util.PlatformIcons;
29 import org.jetbrains.annotations.NotNull;
30 import org.jetbrains.annotations.Nullable;
31
32 /**
33  * @author nik
34  */
35 public class ModuleElementPresentation extends TreeNodePresentation {
36   private final ModulePointer myModulePointer;
37   private final ArtifactEditorContext myContext;
38   private final boolean myTestOutput;
39
40   public ModuleElementPresentation(@Nullable ModulePointer modulePointer, @NotNull ArtifactEditorContext context, final boolean testOutput) {
41     myModulePointer = modulePointer;
42     myContext = context;
43     myTestOutput = testOutput;
44   }
45
46   public String getPresentableName() {
47     return myModulePointer != null ? myModulePointer.getModuleName() : "<unknown>";
48   }
49
50   @Override
51   public boolean canNavigateToSource() {
52     return findModule() != null;
53   }
54
55   @Nullable
56   private Module findModule() {
57     return myModulePointer != null ? myModulePointer.getModule() : null;
58   }
59
60   @Override
61   public void navigateToSource() {
62     final Module module = findModule();
63     if (module != null) {
64       myContext.selectModule(module);
65     }
66   }
67
68   public void render(@NotNull PresentationData presentationData, SimpleTextAttributes mainAttributes, SimpleTextAttributes commentAttributes) {
69     final Module module = findModule();
70     if (myTestOutput) {
71       presentationData.setIcon(PlatformIcons.TEST_SOURCE_FOLDER);
72     }
73     else if (module != null) {
74       presentationData.setIcon(ModuleType.get(module).getNodeIcon(false));
75     }
76     String moduleName;
77     if (module != null) {
78       moduleName = module.getName();
79       final ModifiableModuleModel moduleModel = myContext.getModifiableModuleModel();
80       if (moduleModel != null) {
81         final String newName = moduleModel.getNewName(module);
82         if (newName != null) {
83           moduleName = newName;
84         }
85       }
86     }
87     else if (myModulePointer != null) {
88       moduleName = myModulePointer.getModuleName();
89     }
90     else {
91       moduleName = "<unknown>";
92     }
93
94     String text = myTestOutput ? CompilerBundle.message("node.text.0.test.compile.output", moduleName)
95                                : CompilerBundle.message("node.text.0.compile.output", moduleName);
96     presentationData.addText(text, module != null ? mainAttributes : SimpleTextAttributes.ERROR_ATTRIBUTES);
97   }
98
99   @Override
100   public int getWeight() {
101     return PackagingElementWeights.MODULE;
102   }
103 }