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: GroovyXhtmlRenderer.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.GroovyHighlighter;
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 Groovy source.
018     *
019     * @author Geert Bevin (gbevin[remove] at uwyn dot com)
020     * @version $Revision: 3108 $
021     * @since 1.0
022     */
023    public class GroovyXhtmlRenderer extends XhtmlRenderer
024    {
025            public final static HashMap DEFAULT_CSS = new HashMap() {{
026                            put("h1",
027                                    "font-family: sans-serif; " +
028                                    "font-size: 16pt; " +
029                                    "font-weight: bold; " +
030                                    "color: rgb(0,0,0); " +
031                                    "background: rgb(210,210,210); " +
032                                    "border: solid 1px black; " +
033                                    "padding: 5px; " +
034                                    "text-align: center;");
035                            
036                            put("code",
037                                    "color: rgb(0,0,0); " +
038                                    "font-family: monospace; " +
039                                    "font-size: 12px; " +
040                                    "white-space: nowrap;");
041                            
042                            put(".java_plain",
043                                    "color: rgb(0,0,0);");
044                            
045                            put(".java_keyword",
046                                    "color: rgb(0,0,0); " +
047                                    "font-weight: bold;");
048                            
049                            put(".java_type",
050                                    "color: rgb(0,44,221);");
051                            
052                            put(".java_operator",
053                                    "color: rgb(0,124,31);");
054                            
055                            put(".java_separator",
056                                    "color: rgb(0,33,255);");
057                            
058                            put(".java_literal",
059                                    "color: rgb(188,0,0);");
060                            
061                            put(".java_comment",
062                                    "color: rgb(147,147,147); " +
063                                    "background-color: rgb(247,247,247);");
064                            
065                            put(".java_javadoc_comment",
066                                    "color: rgb(147,147,147); " +
067                                    "background-color: rgb(247,247,247); " +
068                                    "font-style: italic;");
069                            
070                            put(".java_javadoc_tag",
071                                    "color: rgb(147,147,147); " +
072                                    "background-color: rgb(247,247,247); " +
073                                    "font-style: italic; " +
074                                    "font-weight: bold;");
075                    }};
076            
077            protected Map getDefaultCssStyles()
078            {
079                    return DEFAULT_CSS;
080            }
081                    
082            protected String getCssClass(int style)
083            {
084                    switch (style)
085                    {
086                            case GroovyHighlighter.PLAIN_STYLE:
087                                    return "java_plain";
088                            case GroovyHighlighter.KEYWORD_STYLE:
089                                    return "java_keyword";
090                            case GroovyHighlighter.TYPE_STYLE:
091                                    return "java_type";
092                            case GroovyHighlighter.OPERATOR_STYLE:
093                                    return "java_operator";
094                            case GroovyHighlighter.SEPARATOR_STYLE:
095                                    return "java_separator";
096                            case GroovyHighlighter.LITERAL_STYLE:
097                                    return "java_literal";
098                            case GroovyHighlighter.JAVA_COMMENT_STYLE:
099                                    return "java_comment";
100                            case GroovyHighlighter.JAVADOC_COMMENT_STYLE:
101                                    return "java_javadoc_comment";
102                            case GroovyHighlighter.JAVADOC_TAG_STYLE:
103                                    return "java_javadoc_tag";
104                    }
105                    
106                    return null;
107            }
108            
109            protected ExplicitStateHighlighter getHighlighter()
110            {
111                    return new GroovyHighlighter();
112            }
113    }
114