/***************************************************************************************************
 * Copyright (c) 2005, 2006 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
 *   Oracle Corporation - fixed getChildren()
 **************************************************************************************************/
package org.eclipse.jst.jsf.facesconfig.internal.translator;

import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.jst.jsf.facesconfig.emf.FacesConfigPackage;


import org.eclipse.wst.common.internal.emf.resource.Translator;

/**
 * @author xjiang, itrimble
 *
 */
public class RendererTranslator extends Translator {

	/**
	 * @param domNameAndPath
	 * @param aFeature
	 */
	public RendererTranslator(String domNameAndPath, EStructuralFeature aFeature) {
		super(domNameAndPath, aFeature);
	}

	/* (non-Javadoc)
	 * @see org.eclipse.wst.common.internal.emf.resource.Translator#getChildren()
	 */
	public Translator[] getChildren() {
		
		FacesConfigPackage facesPackage = FacesConfigPackage.eINSTANCE;
		return new Translator[] {
				new DescriptionTranslator("description", facesPackage.getRendererType_Description()), //$NON-NLS-1$
				new DisplayNameTranslator("display-name", facesPackage.getRendererType_DisplayName()), //$NON-NLS-1$
				new IconTranslator("icon", facesPackage.getRendererType_Icon()), //$NON-NLS-1$
				new ComponentFamilyTranslator("component-family", facesPackage.getRendererType_ComponentFamily()), //$NON-NLS-1$
				new RendererTypeTranslator("renderer-type", facesPackage.getRendererType_RendererType()), //$NON-NLS-1$
				new RendererClassTranslator("renderer-class", facesPackage.getRendererType_RendererClass()), //$NON-NLS-1$
				new FacetTranslator("facet", facesPackage.getRendererType_Facet()), //$NON-NLS-1$
				new AttributeTranslator("attribute", facesPackage.getRendererType_Attribute()), //$NON-NLS-1$
				new RendererExtensionTranslator("renderer-extension", facesPackage.getRendererType_RendererExtension()), //$NON-NLS-1$
				new Translator("id", facesPackage.getRendererType_Id(), DOM_ATTRIBUTE) //$NON-NLS-1$
		};
	}
}
