/******************************************************************************* * 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.List; import java.util.StringTokenizer; 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.ConvertPosition; import org.eclipse.jst.pagedesigner.css2.property.ICSSPropertyID; import org.eclipse.jst.pagedesigner.dom.EditModelQuery; import org.eclipse.jst.pagedesigner.jsf.core.dom.JSFDOMUtil; import org.w3c.dom.Element; import org.w3c.dom.Node; /** * @author mengbo * @version 1.5 * @deprecated Use DTTagConverter meta-data instead */ public class ColumnTagConverter extends AbstractTagConverter { /** * @param host */ public ColumnTagConverter(Element host) { super(host); } /* * (non-Javadoc) * * @see org.eclipse.jst.pagedesigner.converter.AbstractTagConverter#doConvertRefresh() */ protected Element doConvertRefresh() { Element hostEle = getHostElement(); // we render all non-facet (header, footer) sub elements of this element Element resultEle = createElement(IHTMLConstants.TAG_TD); // --- create column's td in column tag converter, this should not be final solution, we might need to use // referece column figure in td later. Node parent = hostEle.getParentNode(); int offset; if (parent != null && parent.getLocalName().equals(IJSFConstants.TAG_DATATABLE)) { String columnClassesAttr = ((Element) parent).getAttribute(IJSFConstants.ATTR_COLUMNCLASSES); List columnClasses = new ArrayList(); if (columnClassesAttr != null) { StringTokenizer tokenizer = new StringTokenizer(columnClassesAttr, ", "); //$NON-NLS-1$ while (tokenizer.hasMoreTokens()) { columnClasses.add(tokenizer.nextToken()); } } offset = EditModelQuery.getInstance().getSameTypeNodeIndex(hostEle); if (offset < columnClasses.size()) { resultEle.setAttribute(ICSSPropertyID.ATTR_CLASS, (String) columnClasses.get(offset)); } } if (EditModelQuery.getInstance().hasNonTransparentChild(hostEle, new String[] { IJSFConstants.TAG_FACET } )) { Node child = hostEle.getFirstChild(); int index = 0; while (child != null) { if (!(child instanceof Element) || !JSFDOMUtil.isFacet((Element) child)) { addChild(child, new ConvertPosition(resultEle, index++)); } child = child.getNextSibling(); } } else { Node child = createText(" "); //$NON-NLS-1$ resultEle.appendChild(child); } return resultEle; } /* * (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 false; } /* (non-Javadoc) * @see org.eclipse.jst.pagedesigner.css2.style.ITagEditInfo#needBorderDecorator() */ public boolean needBorderDecorator() { Element hostEle = getHostElement(); Node parent = hostEle.getParentNode(); if (parent != null && parent.getLocalName().equals(IJSFConstants.TAG_DATATABLE)) { return false; } return true; } }