eliminating dependencies from compiler-impl to idea-ui
[idea/community.git] / java / compiler / impl / src / com / intellij / packaging / impl / ui / ModuleElementPresentation.java
1 package com.intellij.packaging.impl.ui;
2
3 import com.intellij.ide.projectView.PresentationData;
4 import com.intellij.openapi.compiler.CompilerBundle;
5 import com.intellij.openapi.module.Module;
6 import com.intellij.packaging.ui.PackagingElementWeights;
7 import com.intellij.packaging.ui.TreeNodePresentation;
8 import com.intellij.packaging.ui.ArtifactEditorContext;
9 import com.intellij.ui.SimpleTextAttributes;
10 import org.jetbrains.annotations.NotNull;
11 import org.jetbrains.annotations.Nullable;
12
13 /**
14  * @author nik
15  */
16 public class ModuleElementPresentation extends TreeNodePresentation {
17   private final String myName;
18   private final ArtifactEditorContext myContext;
19   private final Module myModule;
20
21   public ModuleElementPresentation(@NotNull String name, @Nullable Module module, ArtifactEditorContext context) {
22     myModule = module;
23     myName = name;
24     myContext = context;
25   }
26
27   public String getPresentableName() {
28     return myName;
29   }
30
31   @Override
32   public boolean canNavigateToSource() {
33     return myModule != null;
34   }
35
36   @Override
37   public Object getSourceObject() {
38     return myModule;
39   }
40
41   @Override
42   public void navigateToSource() {
43     myContext.selectModule(myModule);
44   }
45
46   public void render(@NotNull PresentationData presentationData, SimpleTextAttributes mainAttributes, SimpleTextAttributes commentAttributes) {
47     if (myModule != null) {
48       presentationData.setOpenIcon(myModule.getModuleType().getNodeIcon(true));
49       presentationData.setClosedIcon(myModule.getModuleType().getNodeIcon(false));
50     }
51     presentationData.addText(getNodeText(),
52                              myModule != null ? mainAttributes : SimpleTextAttributes.ERROR_ATTRIBUTES);
53   }
54
55   protected String getNodeText() {
56     return CompilerBundle.message("node.text.0.compile.output", myName);
57   }
58
59   @Override
60   public int getWeight() {
61     return PackagingElementWeights.MODULE;
62   }
63 }