'RIDER-47575 Design for Plist Editor -- icon for the button to toggle localized/raw...
[idea/community.git] / java / idea-ui / src / com / intellij / openapi / roots / ui / configuration / projectRoot / daemon / ProjectStructureProblemDescription.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.projectRoot.daemon;
17
18 import com.intellij.openapi.util.NlsSafe;
19 import com.intellij.openapi.util.text.StringUtil;
20 import org.jetbrains.annotations.Nls;
21 import org.jetbrains.annotations.NotNull;
22 import org.jetbrains.annotations.Nullable;
23
24 import java.util.List;
25
26 public class ProjectStructureProblemDescription {
27   public enum ProblemLevel {PROJECT, GLOBAL}
28   @NotNull
29   private final @Nls(capitalization = Nls.Capitalization.Sentence) String myMessage;
30   private final String myDescription;
31   private final PlaceInProjectStructure myPlace;
32   private final List<? extends ConfigurationErrorQuickFix> myFixes;
33   private final ProjectStructureProblemType myProblemType;
34   private final ProblemLevel myProblemLevel;
35   private final boolean myCanShowPlace;
36
37   public ProjectStructureProblemDescription(@NotNull @Nls(capitalization = Nls.Capitalization.Sentence) String message,
38                                             @Nullable String description,
39                                             @NotNull PlaceInProjectStructure place,
40                                             @NotNull ProjectStructureProblemType problemType,
41                                             @NotNull List<? extends ConfigurationErrorQuickFix> fixes) {
42     this(message, description, place, problemType, ProblemLevel.PROJECT, fixes, true);
43   }
44
45   public ProjectStructureProblemDescription(@NotNull @Nls(capitalization = Nls.Capitalization.Sentence) String message,
46                                             @Nullable String description,
47                                             @NotNull PlaceInProjectStructure place,
48                                             @NotNull ProjectStructureProblemType problemType,
49                                             @NotNull ProblemLevel level,
50                                             @NotNull List<? extends ConfigurationErrorQuickFix> fixes, final boolean canShowPlace) {
51     myMessage = message;
52     myDescription = description;
53     myPlace = place;
54     myFixes = fixes;
55     myProblemType = problemType;
56     myProblemLevel = level;
57     myCanShowPlace = canShowPlace;
58   }
59
60   public ProblemLevel getProblemLevel() {
61     return myProblemLevel;
62   }
63
64   @NotNull
65   public @Nls(capitalization = Nls.Capitalization.Sentence) String getMessage(final boolean includePlace) {
66     if (!includePlace || !myCanShowPlace) return myMessage;
67
68     @NlsSafe final String result = myPlace.getContainingElement().getPresentableText() + ": " + StringUtil.decapitalize(myMessage);
69     return result;
70   }
71
72   public boolean canShowPlace() {
73     return myCanShowPlace;
74   }
75
76   @Nullable
77   public String getDescription() {
78     return myDescription;
79   }
80
81   public List<? extends ConfigurationErrorQuickFix> getFixes() {
82     return myFixes;
83   }
84
85   public ProjectStructureProblemType.Severity getSeverity() {
86     return myProblemType.getSeverity();
87   }
88
89   @NotNull
90   public PlaceInProjectStructure getPlace() {
91     return myPlace;
92   }
93
94   public String getId() {
95     final String placePath = myPlace.getPlacePath();
96     return myProblemType.getId() + "(" + myPlace.getContainingElement().getId() + (placePath != null ? "," + placePath : "") + ")";
97   }
98 }