org.apache.myfaces.trinidad.component.UIXSelectMany Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of trinidad-api Show documentation
Show all versions of trinidad-api Show documentation
Public API for the Apache MyFaces Trinidad project
The newest version!
// WARNING: This file was automatically generated. Do not edit it directly,
// or you will lose your changes.
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.myfaces.trinidad.component;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import javax.faces.context.FacesContext;
import org.apache.myfaces.trinidad.bean.FacesBean;
import org.apache.myfaces.trinidad.logging.TrinidadLogger;
/**
*
* UIXSelectMany is a base abstraction for
* components that allow selection of multiple of a
* series of selectItem controls, where order
* is not relevant.
* selectOne controls may contain any number of
* <f:selectItem>, <f:selectItems>, or
* <tr:selectItem> components.
*
* Events:
*
*
* Type
* Phases
* Description
*
*
* javax.faces.event.ValueChangeEvent
* Process
Validations
Apply
Request
Values
* The valueChange event is delivered when the value
attribute is changed.
*
*
* org.apache.myfaces.trinidad.event.AttributeChangeEvent
* Invoke
Application
Apply
Request
Values
* Event delivered to describe an attribute change. Attribute change events are not delivered for any programmatic change to a property. They are only delivered when a renderer changes a property without the application's specific request. An example of an attribute change event might include the width of a column that supported client-side resizing.
*
*
*/
public class UIXSelectMany extends UIXEditableValue
{
static public final FacesBean.Type TYPE = new FacesBean.Type(
UIXEditableValue.TYPE);
static public final String COMPONENT_FAMILY =
"org.apache.myfaces.trinidad.SelectMany";
static public final String COMPONENT_TYPE =
"org.apache.myfaces.trinidad.SelectMany";
/**
* Construct an instance of the UIXSelectMany.
*/
public UIXSelectMany()
{
super("org.apache.myfaces.trinidad.Listbox");
}
static public final String REQUIRED_MESSAGE_ID =
"org.apache.myfaces.trinidad.UIXSelectMany.REQUIRED";
static public final String UNSUPPORTED_MODEL_TYPE_MESSAGE_ID =
"org.apache.myfaces.trinidad.UIXSelectMany.UNSUPPORTED_MODEL_TYPE";
/**
* Compares two values, disregarding the order of the elements.
*/
// TODO walk through UIXSelectItem values to determine that new
// values are permitted
@Override
protected void validateValue(FacesContext context, Object newValue)
{
super.validateValue(context, newValue);
}
@Override
protected boolean isEmpty(Object value)
{
if (value == null)
return true;
if (value instanceof Collection)
return ((Collection) value).isEmpty();
if (value.getClass().isArray())
return Array.getLength(value) == 0;
return false;
}
@Override
protected String getRequiredMessageKey()
{
return REQUIRED_MESSAGE_ID;
}
/**
* @return true if the values are different
*/
// TODO improve efficiency
@Override
protected boolean compareValues(Object previous, Object value)
{
int prevSize = __getSize(previous);
int newSize = __getSize(value);
// If the sizes are different, no need to bother with further work
if (prevSize != newSize)
return true;
// If the sizes are the same, and they're empty, we're also done.
if (prevSize == 0)
return false;
List