/* * Copyright (c) 2004-2005 Hans Kratz. * Geert Bevin . * All Rights Reserved. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ import com.omnicore.cle.abstraction.HighlighterAbstraction; import com.omnicore.cle.api.highlighter.HighlightingStyle; import com.omnicore.cle.api.highlighter.HighlightingTokenInfo; import com.omnicore.cle.api.highlighter.TokenIterator; import com.omnicore.cle.api.highlighter.XmlUtilities; import java.io.InputStreamReader; import java.io.Reader; import java.util.ArrayList; import java.util.List; public class RIFEXmlHighlighterMetadata implements HighlighterAbstraction { private RIFEXmlHighlighter highlighter = new RIFEXmlHighlighter(); public byte highlightLine(Reader lineReader, byte startState, TokenIterator tokenIterator) { highlighter.yyreset(lineReader); highlighter.setState(startState); byte token; do { token = highlighter.getNextToken(); if (token != RIFEXmlHighlighter.YYEOF) { tokenIterator.tokenFound(token, highlighter.getTokenLength()); } } while(token != RIFEXmlHighlighter.YYEOF); return highlighter.getCurrentState(); } public int getStyleCount() { return highlighter.getStyleCount(); } public byte getDefaultLineStartState() { return highlighter.getStartState(); } public HighlightingTokenInfo[] getTokenInfos() { List list = new ArrayList(); list.add(new HighlightingTokenInfo(RIFEXmlHighlighter.PLAIN_STYLE, "Plain")); list.add(new HighlightingTokenInfo(RIFEXmlHighlighter.CHAR_DATA, "Char data")); list.add(new HighlightingTokenInfo(RIFEXmlHighlighter.TAG_SYMBOLS, "Tag symbols")); list.add(new HighlightingTokenInfo(RIFEXmlHighlighter.COMMENT, "Comment")); list.add(new HighlightingTokenInfo(RIFEXmlHighlighter.ATTRIBUTE_VALUE, "Attribute value")); list.add(new HighlightingTokenInfo(RIFEXmlHighlighter.ATTRIBUTE_NAME, "Attribute name")); list.add(new HighlightingTokenInfo(RIFEXmlHighlighter.PROCESSING_INSTRUCTION, "Processing instruction")); list.add(new HighlightingTokenInfo(RIFEXmlHighlighter.TAG_NAME, "Tag name")); list.add(new HighlightingTokenInfo(RIFEXmlHighlighter.RIFE_TAG, "RIFE Tag")); list.add(new HighlightingTokenInfo(RIFEXmlHighlighter.RIFE_NAME, "RIFE Name")); HighlightingTokenInfo[] res = new HighlightingTokenInfo[list.size()]; list.toArray(res); return res; } public HighlightingStyle[] getDefaultStyles() { try { HighlightingStyle[] styles = XmlUtilities.getInstance().getHighlightingStylesFromXml ( new InputStreamReader(RIFEXmlHighlighter.class.getResourceAsStream("rifestyles.xml"), "UTF-8") ); return styles; } catch (Throwable t) { throw new InternalError(); } } public boolean allowsCompletion(int style) { return false; } public byte getSemanticHighlightingUnIfedLineStyle() { return -1; } public byte getSemanticHighlightingTypeStyle() { return -1; } public byte getSemanticHighlightingDelegateStyle() { return -1; } public byte getSemanticHighlightingNamespaceStyle() { return -1; } public byte getSemanticHighlightingKeywordStyle() { return -1; } public boolean isHyperlinkableIdentifierStyle(byte style) { return false; } }