{
boolean selectable = false;
if (this.isActionParameter())
{
selectable = this.isInputMultibox() || this.isInputSelect() || this.isInputRadio();
final ClassifierFacade type = this.getType();
if (!selectable && type != null)
{
final String name = this.getName();
final String typeName = type.getFullyQualifiedName();
// - if the parameter is not selectable but on a targetting page it IS selectable we must
// allow the user to set the backing list too
final Collection views = this.getAction().getTargetViews();
for (final Iterator iterator = views.iterator(); iterator.hasNext() && !selectable;)
{
final FrontEndView view = (FrontEndView)iterator.next();
final Collection parameters = view.getAllActionParameters();
for (final Iterator parameterIterator = parameters.iterator();
parameterIterator.hasNext() && !selectable;)
{
final Object object = parameterIterator.next();
if (object instanceof JSFParameter)
{
final JSFParameter parameter = (JSFParameter)object;
final String parameterName = parameter.getName();
final ClassifierFacade parameterType = parameter.getType();
if (parameterType != null)
{
final String parameterTypeName = parameterType.getFullyQualifiedName();
if (name.equals(parameterName) && typeName.equals(parameterTypeName))
{
selectable =
parameter.isInputMultibox() || parameter.isInputSelect() ||
parameter.isInputRadio();