Package org.locationtech.udig.jconsole.javadoc

Source Code of org.locationtech.udig.jconsole.javadoc.JavaDocScanner$JavaDocWordDetector

/*******************************************************************************
* Copyright (c) 2000, 2008 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
*     IBM Corporation - initial API and implementation
*******************************************************************************/
package org.locationtech.udig.jconsole.javadoc;


import java.util.ArrayList;
import java.util.List;

import org.locationtech.udig.jconsole.util.JavaColorProvider;
import org.locationtech.udig.jconsole.util.JavaWhitespaceDetector;

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.IWordDetector;
import org.eclipse.jface.text.rules.RuleBasedScanner;
import org.eclipse.jface.text.rules.SingleLineRule;
import org.eclipse.jface.text.rules.Token;
import org.eclipse.jface.text.rules.WhitespaceRule;
import org.eclipse.jface.text.rules.WordRule;


/**
* A rule based JavaDoc scanner.
*/
public class JavaDocScanner extends RuleBasedScanner {

  /**
   * A key word detector.
   */
  static class JavaDocWordDetector implements IWordDetector {

  /* (non-Javadoc)
   * Method declared on IWordDetector
   */
    public boolean isWordStart(char c) {
      return (c == '@');
    }

    /* (non-Javadoc)
     * Method declared on IWordDetector
     */
    public boolean isWordPart(char c) {
      return Character.isLetter(c);
    }
  }

  private static String[] fgKeywords= { "@author", "@deprecated", "@exception", "@param", "@return", "@see", "@serial", "@serialData", "@serialField", "@since", "@throws", "@version" }; //$NON-NLS-12$ //$NON-NLS-11$ //$NON-NLS-10$ //$NON-NLS-7$ //$NON-NLS-9$ //$NON-NLS-8$ //$NON-NLS-6$ //$NON-NLS-5$ //$NON-NLS-4$ //$NON-NLS-3$ //$NON-NLS-2$ //$NON-NLS-1$

  /**
   * Create a new javadoc scanner for the given color provider.
   *
   * @param provider the color provider
   */
   public JavaDocScanner(JavaColorProvider provider) {
    super();

    IToken keyword= new Token(new TextAttribute(provider.getColor(JavaColorProvider.JAVADOC_KEYWORD)));
    IToken tag= new Token(new TextAttribute(provider.getColor(JavaColorProvider.JAVADOC_TAG)));
    IToken link= new Token(new TextAttribute(provider.getColor(JavaColorProvider.JAVADOC_LINK)));

    List list= new ArrayList();

    // Add rule for tags.
    list.add(new SingleLineRule("<", ">", tag)); //$NON-NLS-2$ //$NON-NLS-1$

    // Add rule for links.
    list.add(new SingleLineRule("{", "}", link)); //$NON-NLS-2$ //$NON-NLS-1$

    // Add generic whitespace rule.
    list.add(new WhitespaceRule(new JavaWhitespaceDetector()));

    // Add word rule for keywords.
    WordRule wordRule= new WordRule(new JavaDocWordDetector());
    for (int i= 0; i < fgKeywords.length; i++)
      wordRule.addWord(fgKeywords[i], keyword);
    list.add(wordRule);

    IRule[] result= new IRule[list.size()];
    list.toArray(result);
    setRules(result);
  }
}
TOP

Related Classes of org.locationtech.udig.jconsole.javadoc.JavaDocScanner$JavaDocWordDetector

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.