/******************************************************************************* * Copyright (c) 2001, 2008 Oracle 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: * Oracle Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.jst.jsf.common.runtime.internal.model.component; import java.util.List; import java.util.Map; import org.eclipse.jst.jsf.common.runtime.internal.model.behavioural.IValueHolderInfo; import org.eclipse.jst.jsf.common.runtime.internal.model.behavioural.ValueHolderInfo; import org.eclipse.jst.jsf.common.runtime.internal.model.decorator.ConverterDecorator; /** * A design-time analog for the UIOutput * * @author cbateman * */ public class UIOutputInfo extends ComponentInfo implements IValueHolderInfo { /** * serializable uid */ private static final long serialVersionUID = 9096297578991706150L; /** * the value */ protected final Object _value; /** * the value before any EL evaluation */ protected final Object _localValue; /** * @param id * @param parent * @param typeInfo * @param valueHolderInfo * @param isRendered */ protected UIOutputInfo(final String id, final ComponentInfo parent, final ComponentTypeInfo typeInfo, final IValueHolderInfo valueHolderInfo, final boolean isRendered) { super(id, parent, typeInfo, isRendered); if (valueHolderInfo == null) { _value = null; _localValue = null; } else { _value = valueHolderInfo.getValue(); _localValue = valueHolderInfo.getLocalValue(); final ConverterDecorator converter = valueHolderInfo.getConverter(); if (converter != null) { addDecorator(converter, ComponentFactory.CONVERTER); } } } /** * @param parent * @param typeInfo * @param attributes */ protected UIOutputInfo(final ComponentInfo parent, final ComponentTypeInfo typeInfo, final Map attributes) { this(getStringProperty("id", attributes, true), //$NON-NLS-1$ parent, typeInfo, getValueHolderInfo("$valueHolderInfo", attributes), //$NON-NLS-1$ getBooleanProperty("rendered", attributes, false)); //$NON-NLS-1$ } /** * @param key * @param attributes * @return the non-standard value holder info that encapsulates the * ValueHolder properties. This is never mandatory. */ protected static IValueHolderInfo getValueHolderInfo(String key, Map attributes) { IValueHolderInfo info = (IValueHolderInfo) attributes.get(key); if (info != null) { return info; } Object value = attributes.get("value"); //$NON-NLS-1$ if (value != null) { Object converter = attributes.get("converter"); //$NON-NLS-1$ Object localValue = attributes.get("localValue"); //$NON-NLS-1$ return new ValueHolderInfo((ConverterDecorator) converter, localValue, value); } return null; } // @Override protected String getMostSpecificComponentName() { return "UIOutput"; //$NON-NLS-1$ } public final ConverterDecorator getConverter() { // should only be a single converter decorator... // so on this interface we'll return the first one if present. // to do things like error checking, use the getDecorator final List converters = getDecorators(ComponentFactory.CONVERTER); if (converters.size() > 0) { return (ConverterDecorator) converters.get(0); } return null; } public final Object getLocalValue() { return _localValue; } public final Object getValue() { return _value; } }