/*******************************************************************************
 * 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();
}
