supported find usages for facets in Project Structure dialog (IDEA-50753)
[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.packaging.ui.ArtifactEditorContext;
24 import com.intellij.packaging.ui.PackagingElementWeights;
25 import com.intellij.packaging.ui.TreeNodePresentation;
26 import com.intellij.ui.SimpleTextAttributes;
27 import com.intellij.util.Icons;
28 import org.jetbrains.annotations.NotNull;
29 import org.jetbrains.annotations.Nullable;
30
31 /**
32  * @author nik
33  */
34 public class ModuleElementPresentation extends TreeNodePresentation {
35   private final ModulePointer myModulePointer;
36   private final ArtifactEditorContext myContext;
37   private final boolean myTestOutput;
38
39   public ModuleElementPresentation(@Nullable ModulePointer modulePointer, @NotNull ArtifactEditorContext context, final boolean testOutput) {
40     myModulePointer = modulePointer;
41     myContext = context;
42     myTestOutput = testOutput;
43   }
44
45   public String getPresentableName() {
46     return myModulePointer != null ? myModulePointer.getModuleName() : "<unknown>";
47   }
48
49   @Override
50   public boolean canNavigateToSource() {
51     return findModule() != null;
52   }
53
54   @Nullable
55   private Module findModule() {
56     return myModulePointer != null ? myModulePointer.getModule() : null;
57   }
58
59   @Override
60   public void navigateToSource() {
61     final Module module = findModule();
62     if (module != null) {
63       myContext.selectModule(module);
64     }
65   }
66
67   public void render(@NotNull PresentationData presentationData, SimpleTextAttributes mainAttributes, SimpleTextAttributes commentAttributes) {
68     final Module module = findModule();
69     if (myTestOutput) {
70       presentationData.setIcons(Icons.TEST_SOURCE_FOLDER);
71     }
72     else if (module != null) {
73       presentationData.setOpenIcon(module.getModuleType().getNodeIcon(true));
74       presentationData.setClosedIcon(module.getModuleType().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 }