92bae07e47ece959d91e7df60110d367b8e30e24
[idea/community.git] / java / idea-ui / src / com / intellij / openapi / roots / ui / configuration / artifacts / ArtifactConfigurableBase.java
1 /*
2  * Copyright 2000-2017 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;
17
18 import com.intellij.ide.JavaUiBundle;
19 import com.intellij.openapi.roots.ui.configuration.projectRoot.ProjectStructureElementConfigurable;
20 import com.intellij.openapi.roots.ui.configuration.projectRoot.daemon.ProjectStructureElement;
21 import com.intellij.packaging.artifacts.Artifact;
22 import org.jetbrains.annotations.Nls;
23
24 import javax.swing.*;
25
26 public abstract class ArtifactConfigurableBase extends ProjectStructureElementConfigurable<Artifact> {
27   protected final Artifact myOriginalArtifact;
28   protected final ArtifactsStructureConfigurableContextImpl myArtifactsStructureContext;
29   private final ProjectStructureElement myProjectStructureElement;
30
31   protected ArtifactConfigurableBase(Artifact originalArtifact,
32                                      ArtifactsStructureConfigurableContextImpl artifactsStructureContext,
33                                      Runnable updateTree,
34                                      final boolean nameEditable) {
35     super(nameEditable, updateTree);
36     myOriginalArtifact = originalArtifact;
37     myArtifactsStructureContext = artifactsStructureContext;
38     myProjectStructureElement = myArtifactsStructureContext.getOrCreateArtifactElement(myOriginalArtifact);
39   }
40
41   @Override
42   public ProjectStructureElement getProjectStructureElement() {
43     return myProjectStructureElement;
44   }
45
46   protected Artifact getArtifact() {
47     return myArtifactsStructureContext.getArtifactModel().getArtifactByOriginal(myOriginalArtifact);
48   }
49
50   @Override
51   public Artifact getEditableObject() {
52     return getArtifact();
53   }
54
55   @Override
56   public String getBannerSlogan() {
57     return JavaUiBundle.message("banner.slogan.artifact.0", getDisplayName());
58   }
59
60   @Override
61   @Nls
62   public String getDisplayName() {
63     return getArtifact().getName();
64   }
65
66   @Override
67   public Icon getIcon(boolean open) {
68     return getArtifact().getArtifactType().getIcon();
69   }
70 }