/*******************************************************************************
 * Copyright (c) 2004 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.eclipse.wst.html.core.internal.validate;



import org.w3c.dom.Attr;
import org.w3c.dom.Node;
import org.w3c.dom.Text;

final class ErrorInfoImpl extends AbstractErrorInfo {

	private Node target = null;

	//	private Segment seg = null;
	/**
	 */
	public ErrorInfoImpl(int state, Segment errorSeg, Node target) {
		super(state, errorSeg);
		this.target = target;
	}

	/**
	 */
	public String getHint() {
		switch (target.getNodeType()) {
			case Node.ATTRIBUTE_NODE :
				switch (getState()) {
					case UNDEFINED_VALUE_ERROR :
					case MISMATCHED_VALUE_ERROR :
					case UNCLOSED_ATTR_VALUE :
						//D210422
						return ((Attr) target).getValue();
					default :
						return target.getNodeName();
				}
			case Node.TEXT_NODE :
				return ((Text) target).getData();
			case Node.ELEMENT_NODE :
			default :
				return target.getNodeName();
		}
	}

	public short getTargetType() {
		return target.getNodeType();
	}
}