/******************************************************************************* * Copyright (c) 2006 Sybase, Inc. 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: * Sybase, Inc. - initial API and implementation *******************************************************************************/ package org.eclipse.jst.pagedesigner.jsf.ui.converter.jsfhtml; import java.util.ArrayList; import java.util.Collections; import java.util.List; import org.eclipse.jst.jsf.core.internal.tld.IJSFConstants; import org.eclipse.jst.pagedesigner.IHTMLConstants; import org.eclipse.jst.pagedesigner.converter.AbstractTagConverter; import org.eclipse.jst.pagedesigner.converter.JSFConverterUtil; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; /** * @author mengbo * @version 1.5 * @deprecated Use DTTagConverter meta-data instead */ public class CommandButtonTagConverter extends AbstractTagConverter { private List _nonVisualChildren = Collections.EMPTY_LIST; /** * @param host */ public CommandButtonTagConverter(Element host) { super(host); } /* (non-Javadoc) * @see org.eclipse.jst.pagedesigner.converter.AbstractTagConverter#doConvertRefresh() */ protected Element doConvertRefresh() { Element hostEle = getHostElement(); // Renders an HTML "input" element. Element inputEle = createElement(IHTMLConstants.TAG_INPUT); // pass throught attributes JSFConverterUtil.copyAllAttributes(hostEle, inputEle, null); // If the "styleClass" attribute is specified, render its // value as the value of the "class" attribute. JSFConverterUtil.copyAttribute(hostEle, IJSFConstants.ATTR_STYLECLASS, inputEle, IHTMLConstants.ATTR_CLASS); inputEle.removeAttribute(IJSFConstants.ATTR_STYLECLASS); // next handles input type // "image" attribute: Absolute or relative URL of the image to be // displayed for this button. If specified, this "input" element will be // of type "image". Otherwise, it will be of the type specified by the // "type" property with a label specified by the "value" property. String imageAttr = hostEle.getAttribute(IJSFConstants.ATTR_IMAGE); String type; if (imageAttr == null || imageAttr.length() == 0) { type = hostEle.getAttribute(IJSFConstants.ATTR_TYPE); if (type == null || type.length() == 0) { type = "submit"; // default type //$NON-NLS-1$ } } else { type = "image"; //$NON-NLS-1$ // copy the image attribute as the src attribute String src = mapURL(imageAttr); inputEle.setAttribute(IHTMLConstants.ATTR_SRC, src); } // overwrite the "type" attribute inputEle.setAttribute(IHTMLConstants.ATTR_TYPE, type); String value = hostEle.getAttribute(IJSFConstants.ATTR_VALUE); if (value != null && value.length() > 0) { value = mapValue(value); inputEle.setAttribute(IHTMLConstants.ATTR_VALUE, value); } // get non-visual children // a button only has non-visual children, so // all Element child nodes are considered such if (hostEle.hasChildNodes()) { _nonVisualChildren = new ArrayList(); NodeList list = hostEle.getChildNodes(); for (int i = 0; i < list.getLength(); i++) { Node node = list.item(i); if (node.getNodeType() == Node.ELEMENT_NODE) { _nonVisualChildren.add(node); } } } // Render the clientId of the component as the value of the "name" attribute. // Render the current value of the component as the value of the "value" attribute. return inputEle; } /* (non-Javadoc) * @see org.eclipse.jst.pagedesigner.converter.ITagConverter#isMultiLevel() */ public boolean isMultiLevel() { return true; } /* (non-Javadoc) * @see org.eclipse.jst.pagedesigner.converter.ITagConverter#isWidget() */ public boolean isWidget() { return true; } public List getNonVisualChildren() { return _nonVisualChildren; } }