/*******************************************************************************
 * Copyright (c) 2002, 2005 Object Factory Inc.
 * 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:
 *		Object Factory Inc. - Initial implementation
 *******************************************************************************/
package org.eclipse.ant.internal.ui.dtd;

/**
 * Schema attribute interface.
 * @author Bob Foster
 */
public interface IAttribute extends IAtom {

	public static final String CDATA = "CDATA"; //$NON-NLS-1$
	public static final String ID = "ID"; //$NON-NLS-1$
	public static final String IDREF = "IDREF"; //$NON-NLS-1$
	public static final String IDREFS = "IDREFS"; //$NON-NLS-1$
	public static final String NMTOKEN = "NMTOKEN"; //$NON-NLS-1$
	public static final String NMTOKENS = "NMTOKENS"; //$NON-NLS-1$
	public static final String ENTITY = "ENTITY"; //$NON-NLS-1$
	public static final String ENTITIES = "ENTITIES"; //$NON-NLS-1$
	public static final String NOTATION = "NOTATION"; //$NON-NLS-1$
	public static final String ENUMERATION = "enumeration"; //$NON-NLS-1$
	
	/**
	 * @return the attribute type. This will be one of "CDATA", "ID", "IDREF",
	 * "IDREFS", "NMTOKEN", "NMTOKENS", "ENTITY", "ENTITIES", "NOTATION" or
	 * "enumeration". The type is interned and may be compared to a constant
	 * with ==. For "NOTATION" or "enumeration", <code>getEnum()</code> will
	 * return a list of values.
	 */
	public String getType();
	
	/**
	 * 
	 * @return String[] or null if type is not "NOTATION" or "ENUMERATION".
	 */
	public String[] getEnum();
	
	/**
	 * Return the element the attribute is defined in.
	 */
	public IElement getElement();
	
	/**
	 * Return the default value or null if none.
	 */
	public String getDefault();
	
	/**
	 * Return true if the default value is fixed.
	 */
	public boolean isFixed();
	
	/**
	 * Return true if attribute is required, false if it is optional.
	 */
	public boolean isRequired();
}
