/*
 * (c) Copyright 2010-2011 AgileBirds
 *
 * This file is part of OpenFlexo.
 *
 * OpenFlexo is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * OpenFlexo is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with OpenFlexo. If not, see <http://www.gnu.org/licenses/>.
 *
 */
package org.openflexo.jedit;

/*
 * JavaTokenMarker.java - Java token marker
 * Copyright (C) 1999 Slava Pestov
 *
 * You may use and modify this package for any purpose. Redistribution is
 * permitted, in both source and binary form, provided that this notice
 * remains intact in all source distributions of this package.
 */

/**
 * Java token marker.
 * 
 * @author Slava Pestov
 * @version $Id: JavaTokenMarker.java,v 1.2 2011/09/12 11:47:08 gpolet Exp $
 */
public class FMLTokenMarker extends CTokenMarker {
	public FMLTokenMarker() {
		super(false, getKeywords());
	}

	public static KeywordMap getKeywords() {
		if (javaKeywords == null) {
			javaKeywords = new KeywordMap(false);
			javaKeywords.add("ViewDefinition", Token.KEYWORD1);
			javaKeywords.add("ModelSlot", Token.KEYWORD1);
			javaKeywords.add("VirtualModel", Token.KEYWORD1);
			javaKeywords.add("FlexoConcept", Token.KEYWORD1);
			javaKeywords.add("PatternRole", Token.KEYWORD1);

			javaKeywords.add("ActionScheme", Token.KEYWORD3);
			javaKeywords.add("CreationScheme", Token.KEYWORD3);
			javaKeywords.add("DeletionScheme", Token.KEYWORD3);
			javaKeywords.add("SynchronizationScheme", Token.KEYWORD3);
			javaKeywords.add("DropScheme", Token.KEYWORD3);
			javaKeywords.add("LinkScheme", Token.KEYWORD3);
			javaKeywords.add("CloningScheme", Token.KEYWORD3);

			javaKeywords.add("MatchFlexoConceptInstance", Token.KEYWORD4);
			javaKeywords.add("SelectFlexoConceptInstance", Token.KEYWORD4);

			javaKeywords.add("conformTo", Token.KEYWORD2);
			javaKeywords.add("type", Token.KEYWORD2);
			javaKeywords.add("uri", Token.KEYWORD2);
			javaKeywords.add("as", Token.KEYWORD2);
			javaKeywords.add("from", Token.KEYWORD2);
			javaKeywords.add("where", Token.KEYWORD2);
			javaKeywords.add("match", Token.KEYWORD2);
			javaKeywords.add("in", Token.KEYWORD2);
			javaKeywords.add("using", Token.KEYWORD2);

			javaKeywords.add("byte", Token.KEYWORD1);
			javaKeywords.add("char", Token.KEYWORD1);
			javaKeywords.add("short", Token.KEYWORD1);
			javaKeywords.add("int", Token.KEYWORD1);
			javaKeywords.add("long", Token.KEYWORD1);
			javaKeywords.add("float", Token.KEYWORD1);
			javaKeywords.add("double", Token.KEYWORD1);
			javaKeywords.add("boolean", Token.KEYWORD1);
			javaKeywords.add("void", Token.KEYWORD1);
			javaKeywords.add("class", Token.KEYWORD1);
			javaKeywords.add("interface", Token.KEYWORD1);
			javaKeywords.add("abstract", Token.KEYWORD1);
			javaKeywords.add("final", Token.KEYWORD1);
			javaKeywords.add("private", Token.KEYWORD1);
			javaKeywords.add("protected", Token.KEYWORD1);
			javaKeywords.add("public", Token.KEYWORD1);
			javaKeywords.add("static", Token.KEYWORD1);
			javaKeywords.add("synchronized", Token.KEYWORD1);
			javaKeywords.add("native", Token.KEYWORD1);
			javaKeywords.add("volatile", Token.KEYWORD1);
			javaKeywords.add("transient", Token.KEYWORD1);
			javaKeywords.add("break", Token.KEYWORD1);
			javaKeywords.add("case", Token.KEYWORD1);
			javaKeywords.add("continue", Token.KEYWORD1);
			javaKeywords.add("default", Token.KEYWORD1);
			javaKeywords.add("do", Token.KEYWORD1);
			javaKeywords.add("else", Token.KEYWORD1);
			javaKeywords.add("for", Token.KEYWORD1);
			javaKeywords.add("if", Token.KEYWORD1);
			javaKeywords.add("instanceof", Token.KEYWORD1);
			javaKeywords.add("new", Token.KEYWORD1);
			javaKeywords.add("return", Token.KEYWORD1);
			javaKeywords.add("switch", Token.KEYWORD1);
			javaKeywords.add("while", Token.KEYWORD1);
			javaKeywords.add("throw", Token.KEYWORD1);
			javaKeywords.add("try", Token.KEYWORD1);
			javaKeywords.add("catch", Token.KEYWORD1);
			javaKeywords.add("extends", Token.KEYWORD1);
			javaKeywords.add("finally", Token.KEYWORD1);
			javaKeywords.add("implements", Token.KEYWORD1);
			javaKeywords.add("throws", Token.KEYWORD1);
			javaKeywords.add("this", Token.KEYWORD1);
			javaKeywords.add("null", Token.KEYWORD1);
			javaKeywords.add("super", Token.KEYWORD1);
			javaKeywords.add("true", Token.KEYWORD1);
			javaKeywords.add("false", Token.KEYWORD1);
		}
		return javaKeywords;
	}

	// private members
	private static KeywordMap javaKeywords;
}
