001/*
002 * Copyright 2004-2006 Geert Bevin <gbevin[remove] at uwyn dot com>
003 * Distributed under the terms of either:
004 * - the common development and distribution license (CDDL), v1.0; or
005 * - the GNU Lesser General Public License, v2.1 or later
006 * $Id: XmlXhtmlRenderer.java 3106 2006-03-13 17:53:50Z gbevin $
007*/
008package com.uwyn.jhighlight.renderer;
009
010import com.uwyn.jhighlight.highlighter.ExplicitStateHighlighter;
011import com.uwyn.jhighlight.highlighter.XmlHighlighter;
012import com.uwyn.jhighlight.renderer.XhtmlRenderer;
013import java.util.HashMap;
014import java.util.Map;
015
016/**
017 * Generates highlighted syntax in XHTML from XML source.
018 * <p><a href="https://rife.dev.java.net">RIFE</a> template tags are also
019 * supported and will be clearly highlighted.
020 *
021 * @author Geert Bevin (gbevin[remove] at uwyn dot com)
022 * @version $Revision: 3106 $
023 * @since 1.0
024 */
025public class XmlXhtmlRenderer extends XhtmlRenderer
026{
027        public final static HashMap DEFAULT_CSS = new HashMap() {{
028                        put("h1",
029                                "font-family: sans-serif; "+
030                                "font-size: 16pt; "+
031                                "font-weight: bold; "+
032                                "color: rgb(0,0,0); "+
033                                "background: rgb(210,210,210); "+
034                                "border: solid 1px black; "+
035                                "padding: 5px; "+
036                                "text-align: center;");
037                        
038                        put("code",
039                                "color: rgb(0,0,0); "+
040                                "font-family: monospace; "+
041                                "font-size: 12px; " +
042                                "white-space: nowrap;");
043                        
044                        put(".xml_plain",
045                                "color: rgb(0,0,0);");
046                        
047                        put(".xml_char_data",
048                                "color: rgb(0,0,0);");
049                        
050                        put(".xml_tag_symbols",
051                                "color: rgb(0,59,255);");
052                        
053                        put(".xml_comment",
054                                "color: rgb(147,147,147); "+
055                                "background-color: rgb(247,247,247);");
056                        
057                        put(".xml_attribute_value",
058                                "color: rgb(193,0,0);");
059                        
060                        put(".xml_attribute_name",
061                                "color: rgb(0,0,0); "+
062                                "font-weight: bold;");
063                        
064                        put(".xml_processing_instruction",
065                                "color: rgb(0,0,0); "+
066                                "font-weight: bold; "+
067                                "font-style: italic;");
068                        
069                        put(".xml_tag_name",
070                                "color: rgb(0,55,255);");
071                        
072                        put(".xml_rife_tag",
073                                "color: rgb(0,0,0); "+
074                                "background-color: rgb(228,230,160);");
075                        
076                        put(".xml_rife_name",
077                                "color: rgb(0,0,196); "+
078                                "background-color: rgb(228,230,160);");
079                }};
080        
081        protected Map getDefaultCssStyles()
082        {
083                return DEFAULT_CSS;
084        }
085        
086        protected String getCssClass(int style)
087        {
088                switch (style)
089                {
090                        case XmlHighlighter.PLAIN_STYLE:
091                                return "xml_plain";
092                        case XmlHighlighter.CHAR_DATA:
093                                return "xml_char_data";
094                        case XmlHighlighter.TAG_SYMBOLS:
095                                return "xml_tag_symbols";
096                        case XmlHighlighter.COMMENT:
097                                return "xml_comment";
098                        case XmlHighlighter.ATTRIBUTE_VALUE:
099                                return "xml_attribute_value";
100                        case XmlHighlighter.ATTRIBUTE_NAME:
101                                return "xml_attribute_name";
102                        case XmlHighlighter.PROCESSING_INSTRUCTION:
103                                return "xml_processing_instruction";
104                        case XmlHighlighter.TAG_NAME:
105                                return "xml_tag_name";
106                        case XmlHighlighter.RIFE_TAG:
107                                return "xml_rife_tag";
108                        case XmlHighlighter.RIFE_NAME:
109                                return "xml_rife_name";
110                }
111                
112                return null;
113        }
114                
115        protected ExplicitStateHighlighter getHighlighter()
116        {
117                return new XmlHighlighter();
118        }
119}
120