blob: b7e13d925026df18a5aa0c22523cae8792cd9fc1 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.uima.tools.stylemap;
import java.awt.Color;
import java.util.HashMap;
import java.util.StringTokenizer;
public class ColorParser {
private HashMap colorNameMap;
public ColorParser() {
initializeColorNameMap();
}
private void initializeColorNameMap() {
colorNameMap = new HashMap();
colorNameMap.put("#000000", "black");
colorNameMap.put("#c0c0c0", "silver");
colorNameMap.put("#808080", "gray");
colorNameMap.put("#ffffff", "white");
colorNameMap.put("#800000", "maroon");
colorNameMap.put("#ff0000", "red");
colorNameMap.put("#800080", "purple");
colorNameMap.put("#ff00ff", "fuchsia");
colorNameMap.put("#008000", "green");
colorNameMap.put("#00ff00", "lime");
colorNameMap.put("#808000", "olive");
colorNameMap.put("#ffff00", "yellow");
colorNameMap.put("#000080", "navy");
colorNameMap.put("#0000ff", "blue");
colorNameMap.put("#00ffff", "aqua");
colorNameMap.put("#000000", "black");
colorNameMap.put("#add8e6", "lightblue");
colorNameMap.put("#90ee90", "lightgreen");
colorNameMap.put("#ffa500", "orange");
colorNameMap.put("#ffc0cb", "pink");
colorNameMap.put("#fa8072", "salmon");
colorNameMap.put("#00ffff", "cyan");
colorNameMap.put("#ee82ee", "violet");
colorNameMap.put("#d2b48c", "tan");
colorNameMap.put("#a52a2a", "brown");
colorNameMap.put("#ffffff", "white");
colorNameMap.put("#9370db", "mediumpurple");
// in other order for lookup
colorNameMap.put("black", "#000000");
colorNameMap.put("silver", "#c0c0c0");
colorNameMap.put("gray", "#808080");
colorNameMap.put("white", "#ffffff");
colorNameMap.put("maroon", "#800000");
colorNameMap.put("red", "#ff0000");
colorNameMap.put("purple", "#800080");
colorNameMap.put("fuchsia", "#ff00ff");
colorNameMap.put("green", "#008000");
colorNameMap.put("lime", "#00ff00");
colorNameMap.put("olive", "#808000");
colorNameMap.put("yellow", "#ffff00");
colorNameMap.put("navy", "#000080");
colorNameMap.put("blue", "#0000ff");
colorNameMap.put("aqua", "#00ffff");
colorNameMap.put("black", "#000000");
colorNameMap.put("lightblue", "#add8e6");
colorNameMap.put("lightgreen", "#90ee90");
colorNameMap.put("orange", "#ffa500");
colorNameMap.put("pink", "#ffc0cb");
colorNameMap.put("salmon", "#fa8072");
colorNameMap.put("cyan", "#00ffff");
colorNameMap.put("violet", "#ee82ee");
colorNameMap.put("tan", "#d2b48c");
colorNameMap.put("brown", "#a52a2a");
colorNameMap.put("white", "#ffffff");
colorNameMap.put("mediumpurple", "#9370db");
}
// --------------------
public HashMap getColorNameMap() {
return colorNameMap;
}
// --------------------
public StyleMapEntry parseAndAssignColors(String typeName, String featureValue,
String labelString, String styleColor) {
StyleMapEntry sme = new StyleMapEntry();
sme.setAnnotationTypeName(typeName);
sme.setFeatureValue(featureValue);
sme.setLabel(labelString);
StringTokenizer token = new StringTokenizer(styleColor, ":;");
if (token.hasMoreTokens()) {
token.nextToken();
String fgString = token.nextToken().toLowerCase();
if (fgString.startsWith("#")) {
sme.setForeground(Color.decode(fgString));
} else {
String newFgString = (String) colorNameMap.get(fgString);
if (newFgString != null)
sme.setForeground(Color.decode(newFgString));
else
sme.setForeground(Color.black);
}
token.nextToken();
String bgString = token.nextToken().toLowerCase();
if (bgString.startsWith("#")) {
sme.setBackground(Color.decode(bgString));
} else {
String newBgString = (String) colorNameMap.get(bgString);
if (newBgString != null)
sme.setBackground(Color.decode(newBgString));
else
sme.setBackground(Color.white);
}
// parses the string
// checked:false
// and
// hidden:true
// this is added for check boxes
parseChecked(token, sme);
parseHidden(token, sme);
}
return sme;
}
// test for "checked:true" or false
private void parseChecked(StringTokenizer token, StyleMapEntry sme) {
if (token.hasMoreTokens()) {
String ck = token.nextToken(); // checked
String tf = token.nextToken(); // true or false
if (ck.equals("checked")) {
boolean checked = false;
if (tf.equals("true")) {
checked = true;
}
sme.setChecked(Boolean.valueOf(checked));
}
} else {
sme.setChecked(Boolean.TRUE);// default to Checked
}
}
// test for "hidden:true" or false
private void parseHidden(StringTokenizer token, StyleMapEntry sme) {
if (token.hasMoreTokens()) {
String ck = token.nextToken(); // checked
String tf = token.nextToken(); // true or false
if (ck.equals("hidden")) {
boolean checked = false;
if (tf.equals("true")) {
checked = true;
}
sme.setHidden(Boolean.valueOf(checked));
}
} else {
sme.setHidden(Boolean.FALSE); // Default to not hidden
}
}
}