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 3108 2006-03-13 18:03:00Z gbevin $
007    */
008    package com.uwyn.jhighlight.renderer;
009    
010    import com.uwyn.jhighlight.highlighter.ExplicitStateHighlighter;
011    import com.uwyn.jhighlight.highlighter.XmlHighlighter;
012    import com.uwyn.jhighlight.renderer.XhtmlRenderer;
013    import java.util.HashMap;
014    import 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: 3108 $
023     * @since 1.0
024     */
025    public 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