/*
* Scute
*
* Homepage: http://hyperdata.org/scute
*
* License : http://www.apache.org/licenses/LICENSE-2.0
* See also license.txt or http://hyperdata.org/wiki/Scute:License
*
* Danny Ayers 2011
*/
package org.hyperdata.scute.syntax;
import java.awt.Color;
import java.awt.Graphics;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.SortedMap;
import java.util.TreeMap;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.swing.text.BadLocationException;
import javax.swing.text.Document;
import javax.swing.text.Element;
import javax.swing.text.PlainDocument;
import javax.swing.text.PlainView;
import javax.swing.text.Segment;
import javax.swing.text.Utilities;
/**
* The Class TurtleView.
*/
public class TurtleView extends HighlighterView {
public static HashMap<Pattern, Color> commonPatternMap;
private static HashMap<Pattern, Color> patternMap;
public static String BNODE_PATTERN = "(_:\\w+)";
public static String KW_BASE_PATTERN = "(@base)";
public static String KW_PREFIX_PATTERN = "(@prefix)";
public static String LITERAL_PATTERN = "(\".+\")";
public static String LONG_LITERAL_PATTERN = "(\"\"\".+\"\"\")";
public static String NODE_PATTERN = "(\\w*:\\w+)";
public static String SQUARE_BRACKETS_PATTERN = "(\\[|\\])";
public static String CURLY_BRACKETS_PATTERN = "(\\{|\\})";
/** The UR i_ pattern. */
public static String URI_PATTERN = "(<.+>)";
static {
commonPatternMap = new LinkedHashMap<Pattern, Color>();
// order is important!
commonPatternMap.put(Pattern.compile(URI_PATTERN), Color.BLUE);
commonPatternMap.put(Pattern.compile(LITERAL_PATTERN), Color.GRAY);
commonPatternMap.put(Pattern.compile(LONG_LITERAL_PATTERN), Color.GRAY);
commonPatternMap.put(Pattern.compile(BNODE_PATTERN), Color.CYAN);
commonPatternMap.put(Pattern.compile(NODE_PATTERN), Color.RED);
commonPatternMap.put(Pattern.compile(SQUARE_BRACKETS_PATTERN), Color.BLUE);
commonPatternMap.put(Pattern.compile(CURLY_BRACKETS_PATTERN), Color.BLUE);
patternMap = new LinkedHashMap<Pattern, Color>();
patternMap.putAll(commonPatternMap);
patternMap.put(Pattern.compile(KW_PREFIX_PATTERN, Pattern.CASE_INSENSITIVE), Color.YELLOW);
patternMap.put(Pattern.compile(KW_BASE_PATTERN, Pattern.CASE_INSENSITIVE), Color.GREEN);
}
/**
* Instantiates a new turtle view.
*
* @param element
* the element
*/
public TurtleView(Element element) {
super(element);
// Set tabsize to 4 (instead of the default 8)
getDocument().putProperty(PlainDocument.tabSizeAttribute, 4);
}
/**
* @return
*/
public HashMap<Pattern, Color> getPatternMap() {
return patternMap;
}
}