//{HEADER
/**
* This class is part of jnex 'Nexirius Application Framework for Java'
*
* Copyright (C) Nexirius GmbH, CH-4450 Sissach, Switzerland (www.nexirius.ch)
*
* <p>This library is free software; you can redistribute it and/or<br>
* modify it under the terms of the GNU Lesser General Public<br>
* License as published by the Free Software Foundation; either<br>
* version 2.1 of the License, or (at your option) any later version.</p>
*
* <p>This library is distributed in the hope that it will be useful,<br>
* but WITHOUT ANY WARRANTY; without even the implied warranty of<br>
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU<br>
* Lesser General Public License for more details.</p>
*
* <p>You should have received a copy of the GNU Lesser General Public<br>
* License along with this library; if not, write to the Free Software<br>
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA</p>
* </blockquote>
*
* <p>
* Nexirius GmbH, hereby disclaims all copyright interest in<br>
* the library jnex' 'Nexirius Application Framework for Java' written<br>
* by Marcel Baumann.</p>
*/
//}HEADER
package com.nexirius.framework.htmlview.function;
import com.nexirius.framework.htmlview.HTMLParser;
import com.nexirius.framework.htmlview.HTMLTranslator;
import com.nexirius.framework.htmlview.HTMLSessionVariable;
import com.nexirius.util.resource.ClientResource;
import java.awt.*;
/**
* This class handles the $!color("name") function
*/
public class ColorHTMLFunction extends DefaultHTMLFunction {
public String getFunctionName() {
return "color";
}
/**
* access the first parameter
*
* @return
*/
public String getName() {
return getArgument(0);
}
/**
* translate the function into HTML and write the result back to the parser
*
* @param sessionVariable
* @param parser the parser which translates the embedded commands
* @throws Exception
*/
public void translate(HTMLSessionVariable sessionVariable, HTMLParser parser)
throws Exception {
String name = getName();
HTMLTranslator htmlTranslator = parser.getResolver().getHTMLTranslator();
String translatedName;
if (htmlTranslator instanceof ClientResource) {
ClientResource cr = (ClientResource) htmlTranslator;
Color color = cr.getColor(name);
StringBuffer result = new StringBuffer(7);
String s = Integer.toHexString(color.getRed());
result.append('#');
if (s.length() == 1) {
result.append('0');
} else
result.append(s);
s = Integer.toHexString(color.getGreen());
if (s.length() == 1) {
result.append('0');
} else
result.append(s);
s = Integer.toHexString(color.getBlue());
if (s.length() == 1) {
result.append('0');
} else
result.append(s);
translatedName = result.toString();
} else {
translatedName = htmlTranslator.translate(name + ".color");
}
parser.getOut().write(translatedName.getBytes());
}
}