KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > de > java2html > options > JavaSourceStyleTable


1 package de.java2html.options;
2
3 import java.util.HashMap JavaDoc;
4 import java.util.Iterator JavaDoc;
5 import java.util.Map JavaDoc;
6
7 import de.java2html.javasource.JavaSourceType;
8 import de.java2html.util.RGB;
9
10 /**
11  * Table containing style options (
12  * {@link de.java2html.options.JavaSourceStyleEntry}) for different types of
13  * source code ({@link de.java2html.javasource.JavaSourceType}).
14  *
15  * @author Markus Gebhard
16  */

17 public class JavaSourceStyleTable {
18   private final Map JavaDoc table = new HashMap JavaDoc();
19   private static JavaSourceStyleEntry defaultColorEntry = new JavaSourceStyleEntry(RGB.BLACK);
20   private String JavaDoc name;
21
22   private JavaSourceStyleTable(String JavaDoc name) {
23     setName(name);
24   }
25
26   public boolean equals(Object JavaDoc obj) {
27     if (!(obj instanceof JavaSourceStyleTable)) {
28       return false;
29     }
30     JavaSourceStyleTable other = (JavaSourceStyleTable) obj;
31
32     if (!name.equals(other.name)) {
33       return false;
34     }
35     if (other.table.size() != table.size()) {
36       return false;
37     }
38
39     Iterator JavaDoc iterator = table.keySet().iterator();
40     while (iterator.hasNext()) {
41       String JavaDoc key = (String JavaDoc) iterator.next();
42       JavaSourceStyleEntry value = get(key);
43       if (!value.equals(other.table.get(key))) {
44         return false;
45       }
46     }
47     return true;
48   }
49
50   public JavaSourceStyleTable getClone() {
51     JavaSourceStyleTable clone = new JavaSourceStyleTable(getName());
52     Iterator JavaDoc iterator = table.keySet().iterator();
53     while (iterator.hasNext()) {
54       String JavaDoc key = (String JavaDoc) iterator.next();
55       JavaSourceStyleEntry value = get(key);
56       clone.table.put(key, value);
57     }
58     return clone;
59   }
60
61   public static JavaSourceStyleTable[] getPredefinedTables() {
62     return new JavaSourceStyleTable[]{
63         createDefaultEclipseStyleTable(),
64         createDefaultKawaStyleTable(),
65         createDefaultMonochromeStyleTable(), };
66   }
67
68   /**
69    * Returns the style table with the given name or <code>null</code> if
70    * there is none having the give name.
71    *
72    * @throws IllegalArgumentException
73    * if the name is null.
74    */

75   public static JavaSourceStyleTable getPredefinedTable(String JavaDoc name) {
76     if (name == null) {
77       throw new IllegalArgumentException JavaDoc("name is null."); //$NON-NLS-1$
78
}
79     JavaSourceStyleTable[] tables = getPredefinedTables();
80     for (int i = 0; i < tables.length; ++i) {
81       if (tables[i].getName().equalsIgnoreCase(name)) {
82         return tables[i];
83       }
84     }
85     return null;
86   }
87
88   private static JavaSourceStyleTable createDefaultKawaStyleTable() {
89     JavaSourceStyleTable table = new JavaSourceStyleTable("Kawa"); //$NON-NLS-1$
90
table.put(JavaSourceType.UNDEFINED, new JavaSourceStyleEntry(new RGB(255, 97, 0)));
91     table.put(JavaSourceType.CODE, new JavaSourceStyleEntry(RGB.BLACK));
92     table.put(JavaSourceType.KEYWORD, new JavaSourceStyleEntry(new RGB(0, 0, 192), true, false));
93     table.put(JavaSourceType.CODE_TYPE, new JavaSourceStyleEntry(new RGB(192, 0, 0), true, false));
94     table.put(JavaSourceType.STRING, new JavaSourceStyleEntry(new RGB(153, 0, 0))); //darker
95
// red
96
table.put(JavaSourceType.COMMENT_LINE, new JavaSourceStyleEntry(new RGB(0, 128, 0))); //green
97
table.put(JavaSourceType.COMMENT_BLOCK, new JavaSourceStyleEntry(new RGB(0, 128, 0))); //green
98
table.put(JavaSourceType.JAVADOC, new JavaSourceStyleEntry(new RGB(0, 128, 0))); //green
99
table.put(JavaSourceType.JAVADOC_KEYWORD, new JavaSourceStyleEntry(new RGB(0, 85, 0)));
100     //dark green
101
// set.put(JavaSourceType.BACKGROUND, new JavaSourceStyleEntry(new
102
// Color(255,251,240)));
103
table.put(JavaSourceType.BACKGROUND, new JavaSourceStyleEntry(new RGB(255, 255, 255)));
104     table.put(JavaSourceType.NUM_CONSTANT, new JavaSourceStyleEntry(new RGB(153, 0, 0)));
105     //dark red
106
table.put(JavaSourceType.CHAR_CONSTANT, new JavaSourceStyleEntry(new RGB(153, 0, 0)));
107     //dark red
108
table.put(JavaSourceType.PARENTHESIS, new JavaSourceStyleEntry(RGB.BLACK));
109     table.put(JavaSourceType.JAVADOC_HTML_TAG, new JavaSourceStyleEntry(new RGB(0, 128, 0)));
110     table.put(JavaSourceType.JAVADOC_LINKS, new JavaSourceStyleEntry(new RGB(0, 128, 0)));
111     table.put(JavaSourceType.LINE_NUMBERS, new JavaSourceStyleEntry(new RGB(128, 128, 128)));
112     table.put(JavaSourceType.ANNOTATION, new JavaSourceStyleEntry(new RGB(100, 100, 100)));
113     return table;
114   }
115
116   private static JavaSourceStyleTable createDefaultEclipseStyleTable() {
117     JavaSourceStyleTable table = new JavaSourceStyleTable("Eclipse"); //$NON-NLS-1$
118
table.put(JavaSourceType.CODE, new JavaSourceStyleEntry(RGB.BLACK));
119     table.put(JavaSourceType.KEYWORD, new JavaSourceStyleEntry(new RGB(127, 0, 85), true, false));
120     table.put(JavaSourceType.CODE_TYPE, new JavaSourceStyleEntry(new RGB(127, 0, 85), true, false));
121     table.put(JavaSourceType.STRING, new JavaSourceStyleEntry(new RGB(42, 0, 255)));
122     table.put(JavaSourceType.COMMENT_LINE, new JavaSourceStyleEntry(new RGB(63, 127, 95)));
123     table.put(JavaSourceType.COMMENT_BLOCK, new JavaSourceStyleEntry(new RGB(63, 127, 95)));
124     table.put(JavaSourceType.JAVADOC, new JavaSourceStyleEntry(new RGB(63, 95, 191)));
125     table.put(JavaSourceType.JAVADOC_KEYWORD, new JavaSourceStyleEntry(new RGB(127, 159, 191)));
126     table.put(JavaSourceType.NUM_CONSTANT, new JavaSourceStyleEntry(new RGB(153, 0, 0)));
127     table.put(JavaSourceType.CHAR_CONSTANT, new JavaSourceStyleEntry(new RGB(153, 0, 0)));
128     table.put(JavaSourceType.PARENTHESIS, new JavaSourceStyleEntry(new RGB(0, 0, 0)));
129     table.put(JavaSourceType.JAVADOC_HTML_TAG, new JavaSourceStyleEntry(new RGB(127, 127, 159)));
130     table.put(JavaSourceType.JAVADOC_LINKS, new JavaSourceStyleEntry(new RGB(63, 63, 191)));
131     table.put(JavaSourceType.UNDEFINED, new JavaSourceStyleEntry(new RGB(255, 97, 0)));
132     table.put(JavaSourceType.BACKGROUND, new JavaSourceStyleEntry(new RGB(255, 255, 255)));
133     table.put(JavaSourceType.LINE_NUMBERS, new JavaSourceStyleEntry(new RGB(128, 128, 128)));
134     table.put(JavaSourceType.ANNOTATION, new JavaSourceStyleEntry(new RGB(100, 100, 100)));
135     return table;
136   }
137
138   private static JavaSourceStyleTable createDefaultMonochromeStyleTable() {
139     JavaSourceStyleTable table = new JavaSourceStyleTable("Monochrome"); //$NON-NLS-1$
140
table.put(JavaSourceType.CODE, new JavaSourceStyleEntry(RGB.BLACK));
141     table.put(JavaSourceType.KEYWORD, new JavaSourceStyleEntry(RGB.BLACK, true, false));
142     table.put(JavaSourceType.CODE_TYPE, new JavaSourceStyleEntry(RGB.BLACK, true, false));
143     table.put(JavaSourceType.STRING, new JavaSourceStyleEntry(RGB.BLACK));
144     table.put(JavaSourceType.COMMENT_LINE, new JavaSourceStyleEntry(RGB.BLACK, false, true));
145     table.put(JavaSourceType.COMMENT_BLOCK, new JavaSourceStyleEntry(RGB.BLACK, false, true));
146     table.put(JavaSourceType.JAVADOC, new JavaSourceStyleEntry(RGB.BLACK, false, true));
147     table.put(JavaSourceType.JAVADOC_KEYWORD, new JavaSourceStyleEntry(RGB.BLACK));
148     table.put(JavaSourceType.NUM_CONSTANT, new JavaSourceStyleEntry(RGB.BLACK));
149     table.put(JavaSourceType.CHAR_CONSTANT, new JavaSourceStyleEntry(RGB.BLACK));
150     table.put(JavaSourceType.PARENTHESIS, new JavaSourceStyleEntry(RGB.BLACK));
151     table.put(JavaSourceType.JAVADOC_HTML_TAG, new JavaSourceStyleEntry(RGB.BLACK));
152     table.put(JavaSourceType.JAVADOC_LINKS, new JavaSourceStyleEntry(RGB.BLACK));
153     table.put(JavaSourceType.UNDEFINED, new JavaSourceStyleEntry(RGB.BLACK));
154     table.put(JavaSourceType.BACKGROUND, new JavaSourceStyleEntry(RGB.WHITE));
155     table.put(JavaSourceType.LINE_NUMBERS, new JavaSourceStyleEntry(RGB.BLACK));
156     table.put(JavaSourceType.ANNOTATION, new JavaSourceStyleEntry(RGB.BLACK));
157     return table;
158   }
159
160   /**
161    * Sets the style for the given source type to the given style.
162    *
163    * @see #get(JavaSourceType)
164    */

165   public void put(JavaSourceType key, JavaSourceStyleEntry javaSourceStyleEntry) {
166     put(key.getName(), javaSourceStyleEntry);
167   }
168
169   public void put(String JavaDoc key, JavaSourceStyleEntry javaSourceStyleEntry) {
170     table.put(key, javaSourceStyleEntry);
171   }
172
173   /**
174    * Gets a default style table.
175    *
176    * @see #getDefaultEclipseStyleTable()
177    * @see #getDefaultKawaStyleTable()
178    */

179   public static JavaSourceStyleTable getDefault() {
180     return createDefaultEclipseStyleTable();
181   }
182
183   /**
184    * Gets a style table similar to the one from the Kawa IDE.
185    *
186    * @see #getDefault()
187    * @see #getDefaultEclipseStyleTable()
188    * @see #getDefaultMonochromeStyleTable()
189    */

190   public static JavaSourceStyleTable getDefaultKawaStyleTable() {
191     return createDefaultKawaStyleTable();
192   }
193
194   /**
195    * Gets a style table similar to the one from the IBM Eclipse IDE.
196    *
197    * @see #getDefault()
198    * @see #getDefaultKawaStyleTable()
199    * @see #getDefaultMonochromeStyleTable()
200    */

201   public static JavaSourceStyleTable getDefaultEclipseStyleTable() {
202     return createDefaultEclipseStyleTable();
203   }
204
205   /**
206    * Gets a style table for monochromatic output.
207    *
208    * @see #getDefault()
209    * @see #getDefaultEclipseStyleTable()
210    * @see #getDefaultKawaStyleTable()
211    */

212   public static JavaSourceStyleTable getDefaultMonochromeStyleTable() {
213     return createDefaultMonochromeStyleTable();
214   }
215
216   /**
217    * Returns the style for the given source type defined by this styletable.
218    *
219    * @see #put(JavaSourceType, JavaSourceStyleEntry)
220    * @see #put(JavaSourceType, JavaSourceStyleEntry)
221    */

222   public JavaSourceStyleEntry get(JavaSourceType key) {
223     return get(key.getName());
224   }
225
226   /** @deprecated As of Sep 12, 2004 (Markus Gebhard), replaced by {@link #get(JavaSourceType)} */
227   public JavaSourceStyleEntry get(String JavaDoc key) {
228     JavaSourceStyleEntry e = (JavaSourceStyleEntry) table.get(key);
229     return e == null ? defaultColorEntry : e;
230   }
231
232   public String JavaDoc getName() {
233     return name;
234   }
235
236   /** @deprecated As of Jan 2, 2004 (Markus Gebhard): Changing the name of a style table is not intended */
237   public void setName(String JavaDoc name) {
238     this.name = name;
239   }
240 }
Popular Tags