/*
 * 10/08/2011
 *
 * FoldType.java - Types of folds found in many programming languages.
 * 
 * This library is distributed under a modified BSD license.  See the included
 * RSyntaxTextArea.License.txt file for details.
 */
package com.fr.design.gui.syntax.ui.rsyntaxtextarea.folding;


/**
 * Constants representing the "type" of a folded region.  Implementations of
 * {@link FoldParser} can also define their own folded region types, provided
 * they give them values of at least {@link #FOLD_TYPE_USER_DEFINED_MIN}.  This
 * allows you to identify and auto-fold specific regions of source code when
 * opening files; for example, a Java editor could identify all import
 * statements in a file as a foldable region, and give it a user-defined value
 * for fold type.  Then, the UI could provide a means for the user to specify
 * that they always want the import region folded when opening a new file.<p>
 * 
 * The majority of the time, however, code editors won't need to be that fancy,
 * and can simply use the standard <code>CODE</code> and <code>COMMENT</code>
 * fold types.
 * 
 * @author Robert Futrell
 * @version 1.0
 * @see Fold
 */
public interface FoldType {

	/**
	 * Denotes a <code>Fold</code> as being a region of code.
	 */
	public static final int CODE							= 0;

	/**
	 * Denotes a <code>Fold</code> as being a multi-line comment.
	 */
	public static final int COMMENT							= 1;

	/**
	 * Denotes a <code>Fold</code> as being a section of import statements
	 * (Java), include statements (C), etc.
	 */
	public static final int IMPORTS							= 2;

	/**
	 * Users building advanced editors such as IDE's, that want to allow their
	 * users to auto-expand/collapse foldable regions of a specific type other
	 * than comments, should define their custom fold types using values
	 * <code>FOLD_TYPE_USER_DEFINED_MIN + <em>n</em></code>.  That way, if
	 * new default fold types are added to this interface in the future, your
	 * code won't suddenly break when upgrading to a new version of RSTA.
	 */
	public static final int FOLD_TYPE_USER_DEFINED_MIN		= 1000;


}