Package com.vf.apex.editor.scanners

Source Code of com.vf.apex.editor.scanners.XMLTextScanner

package com.vf.apex.editor.scanners;

import org.eclipse.jface.text.TextAttribute;
import org.eclipse.jface.text.rules.IRule;
import org.eclipse.jface.text.rules.IToken;
import org.eclipse.jface.text.rules.RuleBasedScanner;
import org.eclipse.jface.text.rules.Token;

import com.vf.apex.editor.ColorManager;
import com.vf.apex.editor.IXMLColorConstants;
import com.vf.apex.editor.rules.CDataRule;

/**
*
* @author eclipse and AjayHada
*
*/
public class XMLTextScanner extends RuleBasedScanner
{

  public IToken ESCAPED_CHAR;
  public IToken CDATA_START;
  public IToken CDATA_END;
  public IToken CDATA_TEXT;

  IToken currentToken;

  public XMLTextScanner(ColorManager colorManager)
  {

    ESCAPED_CHAR = new Token(new TextAttribute(colorManager.getColor(IXMLColorConstants.ESCAPED_CHAR)));
    CDATA_START = new Token(new TextAttribute(colorManager.getColor(IXMLColorConstants.CDATA)));
    CDATA_END = new Token(new TextAttribute(colorManager.getColor(IXMLColorConstants.CDATA)));
    CDATA_TEXT = new Token(new TextAttribute(colorManager.getColor(IXMLColorConstants.CDATA_TEXT)));
    IRule[] rules = new IRule[2];

    // Add rule to pick up escaped chars
    // Add rule to pick up start of CDATA section
    rules[0] = new CDataRule(CDATA_START, true);
    // Add a rule to pick up end of CDATA sections
    rules[1] = new CDataRule(CDATA_END, false);
    setRules(rules);

  }

  public IToken nextToken()
  {
    IToken token = super.nextToken();
    if (currentToken == CDATA_START || currentToken == CDATA_TEXT && token != CDATA_END)
    {
      this.currentToken = CDATA_TEXT;
      return CDATA_TEXT;
    }
    this.currentToken = token;
    return token;
  }
}
TOP

Related Classes of com.vf.apex.editor.scanners.XMLTextScanner

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.