1 package org.apache.maven.plugins.checkstyle;
2
3 /*
4 * Licensed to the Apache Software Foundation (ASF) under one
5 * or more contributor license agreements. See the NOTICE file
6 * distributed with this work for additional information
7 * regarding copyright ownership. The ASF licenses this file
8 * to you under the Apache License, Version 2.0 (the
9 * "License"); you may not use this file except in compliance
10 * with the License. You may obtain a copy of the License at
11 *
12 * http://www.apache.org/licenses/LICENSE-2.0
13 *
14 * Unless required by applicable law or agreed to in writing,
15 * software distributed under the License is distributed on an
16 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17 * KIND, either express or implied. See the License for the
18 * specific language governing permissions and limitations
19 * under the License.
20 */
21
22 import java.util.ResourceBundle;
23
24 import org.apache.maven.doxia.sink.Sink;
25
26 /**
27 * A little tool to deal with info/warning/error icons in Checkstyle reports, with eventual text.
28 *
29 * @since 2.13
30 */
31 public class IconTool
32 {
33 public static final String INFO = "info";
34
35 public static final String WARNING = "warning";
36
37 public static final String ERROR = "error";
38
39 public static final int NO_TEXT = 0;
40 public static final int TEXT_SIMPLE = 1;
41 public static final int TEXT_TITLE = 2;
42 public static final int TEXT_ABBREV = 3;
43
44 private final Sink sink;
45
46 private final ResourceBundle bundle;
47
48 public IconTool( Sink sink, ResourceBundle bundle )
49 {
50 this.sink = sink;
51 this.bundle = bundle;
52 }
53
54 /**
55 * Render a simple icon of given level.
56 * @param level one of <code>INFO</code>, <code>WARNING</code> or <code>ERROR</code> constants
57 */
58 public void iconSeverity( String level )
59 {
60 sink.figureGraphics( "images/icon_" + level + "_sml.gif" );
61 }
62
63 /**
64 * Render an icon of given level with associated text.
65 * @param level one of <code>INFO</code>, <code>WARNING</code> or <code>ERROR</code> constants
66 * @param textType one of <code>NO_TEXT</code>, <code>TEXT_SIMPLE</code>, <code>TEXT_TITLE</code> or
67 * <code>TEXT_ABBREV</code> constants
68 */
69 public void iconSeverity( String level, int textType )
70 {
71 sink.figureGraphics( "images/icon_" + level + "_sml.gif" );
72
73 if ( textType > 0 )
74 {
75 sink.nonBreakingSpace();
76
77 sink.text( bundle.getString( "report.checkstyle." + level + suffix( textType ) ) );
78 }
79 }
80
81 /**
82 * Render an info icon.
83 */
84 public void iconInfo()
85 {
86 iconSeverity( INFO );
87 }
88
89 /**
90 * Render an info icon with associated text.
91 * @param textType one of <code>NO_TEXT</code>, <code>TEXT_SIMPLE</code>, <code>TEXT_TITLE</code> or
92 * <code>TEXT_ABBREV</code> constants
93 */
94 public void iconInfo( int textType )
95 {
96 iconSeverity( INFO, textType );
97 }
98
99 /**
100 * Render a warning icon.
101 */
102 public void iconWarning()
103 {
104 iconSeverity( WARNING );
105 }
106
107 /**
108 * Render a warning icon with associated text.
109 * @param textType one of <code>NO_TEXT</code>, <code>TEXT_SIMPLE</code>, <code>TEXT_TITLE</code> or
110 * <code>TEXT_ABBREV</code> constants
111 */
112 public void iconWarning( int textType )
113 {
114 iconSeverity( WARNING, textType );
115 }
116
117 /**
118 * Render an error icon.
119 */
120 public void iconError()
121 {
122 iconSeverity( ERROR );
123 }
124
125 /**
126 * Render an error icon with associated text.
127 * @param textType one of <code>NO_TEXT</code>, <code>TEXT_SIMPLE</code>, <code>TEXT_TITLE</code> or
128 * <code>TEXT_ABBREV</code> constants
129 */
130 public void iconError( int textType )
131 {
132 iconSeverity( ERROR, textType );
133 }
134
135 private String suffix( int textType )
136 {
137 switch ( textType )
138 {
139 case TEXT_TITLE:
140 return "s";
141 case TEXT_ABBREV:
142 return "s.abbrev";
143 default:
144 return "";
145 }
146 }
147 }