blob: 14a6131925c1bb27ace55d5e73c8872a4f3067be [file] [log] [blame]
/*******************************************************************************
* 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.Iterator;
import java.util.List;
import java.util.Map;
import org.eclipse.jst.jsf.common.runtime.internal.model.behavioural.IEditableValueHolderInfo;
import org.eclipse.jst.jsf.common.runtime.internal.model.decorator.ValidatorDecorator;
import org.eclipse.jst.jsf.common.runtime.internal.model.decorator.ValueChangeListenerDecorator;
/**
* A design-time analog of the standard UIInput.
*
* @author cbateman
*
*/
public class UIInputInfo extends UIOutputInfo implements
IEditableValueHolderInfo
{
/**
* serializable uid
*/
private static final long serialVersionUID = -6055473902554910848L;
private final boolean _isValid;
private final boolean _isImmediate;
private final boolean _isRequired;
private final Object _submittedValue;
private final String _validator;
private final String _valueChangeListener;
private final boolean _localSetValue;
/**
* @param id
* @param parent
* @param typeInfo
* @param editableValueHolderInfo
* @param isRendered
*/
protected UIInputInfo(final String id, final ComponentInfo parent,
final ComponentTypeInfo typeInfo,
final IEditableValueHolderInfo editableValueHolderInfo,
final boolean isRendered)
{
super(id, parent, typeInfo, editableValueHolderInfo, isRendered);
if (editableValueHolderInfo == null)
{
_isValid = true;
_isImmediate = false;
_isRequired = false;
_localSetValue = false;
_submittedValue = null;
_validator = null;
_valueChangeListener = null;
}
else
{
_isValid = editableValueHolderInfo.isValid();
_isImmediate = editableValueHolderInfo.isImmediate();
_isRequired = editableValueHolderInfo.isRequired();
_localSetValue = editableValueHolderInfo.isLocalSetValue();
_submittedValue = editableValueHolderInfo.getSubmittedValue();
_validator = editableValueHolderInfo.getValidator();
_valueChangeListener = editableValueHolderInfo
.getValueChangeListener();
for (final Iterator it = editableValueHolderInfo.getValidators()
.iterator(); it.hasNext();)
{
final ValidatorDecorator validator = (ValidatorDecorator) it
.next();
addValidator(validator);
}
for (final Iterator it = editableValueHolderInfo
.getValueChangeListeners().iterator(); it.hasNext();)
{
final ValueChangeListenerDecorator valueChangeListener = (ValueChangeListenerDecorator) it
.next();
addValueChangeListener(valueChangeListener);
}
}
}
/**
* @param parent
* @param typeInfo
* @param attributes
*/
protected UIInputInfo(final ComponentInfo parent,
final ComponentTypeInfo typeInfo, Map attributes)
{
this(getStringProperty("id", attributes, true), parent, typeInfo, //$NON-NLS-1$
getEditableValueHolderInfo("$editableValueHolderInfo", //$NON-NLS-1$
attributes), getBooleanProperty("rendered", attributes, false)); //$NON-NLS-1$
}
private static IEditableValueHolderInfo getEditableValueHolderInfo(
String key, Map attributes)
{
return (IEditableValueHolderInfo) attributes.get(key);
}
// public String toString() {
// final String toString = super.toString();
// return toString + ", isValid=" + _isValid + ", isImmediate="
// + _isImmediate + ", isRequired=" + _isRequired;
// }
// @Override
protected String getMostSpecificComponentName()
{
return "UIInput"; //$NON-NLS-1$
}
public final boolean isValid()
{
return _isValid;
}
public final boolean isImmediate()
{
return _isImmediate;
}
public final boolean isRequired()
{
return _isRequired;
}
public final Object getSubmittedValue()
{
return _submittedValue;
}
public final String getValidator()
{
return _validator;
}
public final String getValueChangeListener()
{
return _valueChangeListener;
}
public final boolean isLocalSetValue()
{
return _localSetValue;
}
public final void addValidator(final ValidatorDecorator validator)
{
addDecorator(validator, ComponentFactory.VALIDATOR);
}
public final void addValueChangeListener(
final ValueChangeListenerDecorator valueChangeListenerInfo)
{
addDecorator(valueChangeListenerInfo,
ComponentFactory.VALUE_CHANGE_LISTENER);
}
public final List getValidators()
{
return getDecorators(ComponentFactory.VALIDATOR);
}
public final List getValueChangeListeners()
{
return getDecorators(ComponentFactory.VALUE_CHANGE_LISTENER);
}
}