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 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.GroovyHighlighter;
012import com.uwyn.jhighlight.renderer.XhtmlRenderer;
013import java.util.HashMap;
014import 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: 3106 $
021 * @since 1.0
022 */
023public 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