blob: 9c4e30a0c84b15abff37897d38d185d49ca8d72e [file] [log] [blame]
/*
* 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.struts2.components;
import com.opensymphony.xwork2.util.ValueStack;
import org.apache.struts2.views.annotations.StrutsTagAttribute;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
/**
* <p>
* DoubleListUIBean is the standard superclass of all Struts double list handling components.
* </p>
* <p>
* <!-- START SNIPPET: javadoc -->
* <p>
* Note that the doublelistkey and doublelistvalue attribute will default to "key" and "value"
* respectively only when the doublelist attribute is evaluated to a Map or its descendant.
* Other thing else, will result in doublelistkey and doublelistvalue to be null and not used.
* </p>
* <p>
* <!-- END SNIPPET: javadoc -->
*/
public abstract class DoubleListUIBean extends ListUIBean {
protected String emptyOption;
protected String headerKey;
protected String headerValue;
protected String multiple;
protected String size;
protected String doubleList;
protected String doubleListKey;
protected String doubleListValue;
protected String doubleListCssClass;
protected String doubleListCssStyle;
protected String doubleListTitle;
protected String doubleName;
protected String doubleValue;
protected String formName;
protected String doubleId;
protected String doubleDisabled;
protected String doubleMultiple;
protected String doubleSize;
protected String doubleHeaderKey;
protected String doubleHeaderValue;
protected String doubleEmptyOption;
protected String doubleCssClass;
protected String doubleCssStyle;
protected String doubleOnclick;
protected String doubleOndblclick;
protected String doubleOnmousedown;
protected String doubleOnmouseup;
protected String doubleOnmouseover;
protected String doubleOnmousemove;
protected String doubleOnmouseout;
protected String doubleOnfocus;
protected String doubleOnblur;
protected String doubleOnkeypress;
protected String doubleOnkeydown;
protected String doubleOnkeyup;
protected String doubleOnselect;
protected String doubleOnchange;
protected String doubleAccesskey;
public DoubleListUIBean(ValueStack stack, HttpServletRequest request, HttpServletResponse response) {
super(stack, request, response);
}
public void evaluateExtraParams() {
super.evaluateExtraParams();
//Object doubleName = null;
if (emptyOption != null) {
addParameter("emptyOption", findValue(emptyOption, Boolean.class));
}
if (multiple != null) {
addParameter("multiple", findValue(multiple, Boolean.class));
}
if (size != null) {
addParameter("size", findString(size));
}
if ((headerKey != null) && (headerValue != null)) {
addParameter("headerKey", findString(headerKey));
addParameter("headerValue", findString(headerValue));
}
if (doubleMultiple != null) {
addParameter("doubleMultiple", findValue(doubleMultiple, Boolean.class));
}
if (doubleSize != null) {
addParameter("doubleSize", findString(doubleSize));
}
if (doubleDisabled != null) {
addParameter("doubleDisabled", findValue(doubleDisabled, Boolean.class));
}
if (doubleName != null) {
addParameter("doubleName", findString(this.doubleName));
}
if (doubleList != null) {
addParameter("doubleList", doubleList);
}
Object tmpDoubleList = findValue(doubleList);
if (doubleListKey != null) {
addParameter("doubleListKey", doubleListKey);
} else if (tmpDoubleList instanceof Map) {
addParameter("doubleListKey", "key");
}
if (doubleListValue != null) {
doubleListValue = stripExpression(doubleListValue);
addParameter("doubleListValue", doubleListValue);
} else if (tmpDoubleList instanceof Map) {
addParameter("doubleListValue", "value");
}
if (doubleListCssClass != null) {
addParameter("doubleListCssClass", findString(doubleListCssClass));
}
if (doubleListCssStyle != null) {
addParameter("doubleListCssStyle", findString(doubleListCssStyle));
}
if (doubleListTitle != null) {
addParameter("doubleListTitle", findString(doubleListTitle));
}
if (formName != null) {
addParameter("formName", findString(formName));
} else {
// ok, let's look it up
Component form = findAncestor(Form.class);
if (form != null) {
addParameter("formName", form.getParameters().get("name"));
}
}
Class<?> valueClazz = getValueClassType();
if (valueClazz != null) {
if (doubleValue != null) {
addParameter("doubleNameValue", findValue(doubleValue, valueClazz));
} else if (doubleName != null) {
addParameter("doubleNameValue", findValue(doubleName, valueClazz));
}
} else {
if (doubleValue != null) {
addParameter("doubleNameValue", findValue(doubleValue));
} else if (doubleName != null) {
addParameter("doubleNameValue", findValue(doubleName));
}
}
Form form = (Form) findAncestor(Form.class);
if (doubleId != null) {
addParameter("doubleId", findString(doubleId));
} else if (form != null) {
addParameter("doubleId", form.getParameters().get("id") + "_" + escape(doubleName != null ? findString(doubleName) : null));
} else {
addParameter("doubleId", escape(doubleName != null ? findString(doubleName) : null));
}
if (doubleOnclick != null) {
addParameter("doubleOnclick", findString(doubleOnclick));
}
if (doubleOndblclick != null) {
addParameter("doubleOndblclick", findString(doubleOndblclick));
}
if (doubleOnmousedown != null) {
addParameter("doubleOnmousedown", findString(doubleOnmousedown));
}
if (doubleOnmouseup != null) {
addParameter("doubleOnmouseup", findString(doubleOnmouseup));
}
if (doubleOnmouseover != null) {
addParameter("doubleOnmouseover", findString(doubleOnmouseover));
}
if (doubleOnmousemove != null) {
addParameter("doubleOnmousemove", findString(doubleOnmousemove));
}
if (doubleOnmouseout != null) {
addParameter("doubleOnmouseout", findString(doubleOnmouseout));
}
if (doubleOnfocus != null) {
addParameter("doubleOnfocus", findString(doubleOnfocus));
}
if (doubleOnblur != null) {
addParameter("doubleOnblur", findString(doubleOnblur));
}
if (doubleOnkeypress != null) {
addParameter("doubleOnkeypress", findString(doubleOnkeypress));
}
if (doubleOnkeydown != null) {
addParameter("doubleOnkeydown", findString(doubleOnkeydown));
}
if (doubleOnselect != null) {
addParameter("doubleOnselect", findString(doubleOnselect));
}
if (doubleOnchange != null) {
addParameter("doubleOnchange", findString(doubleOnchange));
}
if (doubleCssClass != null) {
addParameter("doubleCss", findString(doubleCssClass));
}
if (doubleCssStyle != null) {
addParameter("doubleStyle", findString(doubleCssStyle));
}
if (doubleHeaderKey != null && doubleHeaderValue != null) {
addParameter("doubleHeaderKey", findString(doubleHeaderKey));
addParameter("doubleHeaderValue", findString(doubleHeaderValue));
}
if (doubleEmptyOption != null) {
addParameter("doubleEmptyOption", findValue(doubleEmptyOption, Boolean.class));
}
if (doubleAccesskey != null) {
addParameter("doubleAccesskey", findString(doubleAccesskey));
}
}
@StrutsTagAttribute(description = "The second iterable source to populate from.", required = true)
public void setDoubleList(String doubleList) {
this.doubleList = doubleList;
}
@StrutsTagAttribute(description = "The key expression to use for second list")
public void setDoubleListKey(String doubleListKey) {
this.doubleListKey = doubleListKey;
}
@StrutsTagAttribute(description = "The value expression to use for second list")
public void setDoubleListValue(String doubleListValue) {
this.doubleListValue = doubleListValue;
}
@StrutsTagAttribute(description = "Property of second list objects to get css class from")
public void setDoubleListCssClass(String doubleListCssClass) {
this.doubleListCssClass = doubleListCssClass;
}
@StrutsTagAttribute(description = "Property of second list objects to get css style from")
public void setDoubleListCssStyle(String doubleListCssStyle) {
this.doubleListCssStyle = doubleListCssStyle;
}
@StrutsTagAttribute(description = "Property of second list objects to get title from")
public void setDoubleListTitle(String doubleListTitle) {
this.doubleListTitle = doubleListTitle;
}
@StrutsTagAttribute(description = "The name for complete component", required = true)
public void setDoubleName(String doubleName) {
this.doubleName = doubleName;
}
@StrutsTagAttribute(description = "The value expression for complete component")
public void setDoubleValue(String doubleValue) {
this.doubleValue = doubleValue;
}
@StrutsTagAttribute(description = "The form name this component resides in and populates to")
public void setFormName(String formName) {
this.formName = formName;
}
public String getFormName() {
return formName;
}
@StrutsTagAttribute(description = "The css class for the second list")
public void setDoubleCssClass(String doubleCssClass) {
this.doubleCssClass = doubleCssClass;
}
public String getDoubleCssClass() {
return doubleCssClass;
}
@StrutsTagAttribute(description = "The css style for the second list")
public void setDoubleCssStyle(String doubleCssStyle) {
this.doubleCssStyle = doubleCssStyle;
}
public String getDoubleCssStyle() {
return doubleCssStyle;
}
@StrutsTagAttribute(description = "The header key for the second list")
public void setDoubleHeaderKey(String doubleHeaderKey) {
this.doubleHeaderKey = doubleHeaderKey;
}
public String getDoubleHeaderKey() {
return doubleHeaderKey;
}
@StrutsTagAttribute(description = "The header value for the second list")
public void setDoubleHeaderValue(String doubleHeaderValue) {
this.doubleHeaderValue = doubleHeaderValue;
}
public String getDoubleHeaderValue() {
return doubleHeaderValue;
}
@StrutsTagAttribute(description = "Decides if the second list will add an empty option")
public void setDoubleEmptyOption(String doubleEmptyOption) {
this.doubleEmptyOption = doubleEmptyOption;
}
public String getDoubleEmptyOption() {
return this.doubleEmptyOption;
}
public String getDoubleDisabled() {
return doubleDisabled;
}
@StrutsTagAttribute(description = "Decides if a disable attribute should be added to the second list")
public void setDoubleDisabled(String doubleDisabled) {
this.doubleDisabled = doubleDisabled;
}
public String getDoubleId() {
return doubleId;
}
@StrutsTagAttribute(description = "The id of the second list")
public void setDoubleId(String doubleId) {
this.doubleId = doubleId;
}
public String getDoubleMultiple() {
return doubleMultiple;
}
@StrutsTagAttribute(description = " Decides if multiple attribute should be set on the second list")
public void setDoubleMultiple(String doubleMultiple) {
this.doubleMultiple = doubleMultiple;
}
public String getDoubleOnblur() {
return doubleOnblur;
}
@StrutsTagAttribute(description = "Set the onblur attribute of the second list")
public void setDoubleOnblur(String doubleOnblur) {
this.doubleOnblur = doubleOnblur;
}
public String getDoubleOnchange() {
return doubleOnchange;
}
@StrutsTagAttribute(description = "Set the onchange attribute of the second list")
public void setDoubleOnchange(String doubleOnchange) {
this.doubleOnchange = doubleOnchange;
}
public String getDoubleOnclick() {
return doubleOnclick;
}
@StrutsTagAttribute(description = "Set the onclick attribute of the second list")
public void setDoubleOnclick(String doubleOnclick) {
this.doubleOnclick = doubleOnclick;
}
public String getDoubleOndblclick() {
return doubleOndblclick;
}
@StrutsTagAttribute(description = "Set the ondbclick attribute of the second list")
public void setDoubleOndblclick(String doubleOndblclick) {
this.doubleOndblclick = doubleOndblclick;
}
public String getDoubleOnfocus() {
return doubleOnfocus;
}
@StrutsTagAttribute(description = "Set the onfocus attribute of the second list")
public void setDoubleOnfocus(String doubleOnfocus) {
this.doubleOnfocus = doubleOnfocus;
}
public String getDoubleOnkeydown() {
return doubleOnkeydown;
}
@StrutsTagAttribute(description = "Set the onkeydown attribute of the second list")
public void setDoubleOnkeydown(String doubleOnkeydown) {
this.doubleOnkeydown = doubleOnkeydown;
}
public String getDoubleOnkeypress() {
return doubleOnkeypress;
}
@StrutsTagAttribute(description = "Set the onkeypress attribute of the second list")
public void setDoubleOnkeypress(String doubleOnkeypress) {
this.doubleOnkeypress = doubleOnkeypress;
}
public String getDoubleOnkeyup() {
return doubleOnkeyup;
}
@StrutsTagAttribute(description = "Set the onkeyup attribute of the second list")
public void setDoubleOnkeyup(String doubleOnkeyup) {
this.doubleOnkeyup = doubleOnkeyup;
}
public String getDoubleOnmousedown() {
return doubleOnmousedown;
}
@StrutsTagAttribute(description = "Set the onmousedown attribute of the second list")
public void setDoubleOnmousedown(String doubleOnmousedown) {
this.doubleOnmousedown = doubleOnmousedown;
}
public String getDoubleOnmousemove() {
return doubleOnmousemove;
}
@StrutsTagAttribute(description = "Set the onmousemove attribute of the second list")
public void setDoubleOnmousemove(String doubleOnmousemove) {
this.doubleOnmousemove = doubleOnmousemove;
}
public String getDoubleOnmouseout() {
return doubleOnmouseout;
}
@StrutsTagAttribute(description = "Set the onmouseout attribute of the second list")
public void setDoubleOnmouseout(String doubleOnmouseout) {
this.doubleOnmouseout = doubleOnmouseout;
}
public String getDoubleOnmouseover() {
return doubleOnmouseover;
}
@StrutsTagAttribute(description = "Set the onmouseover attribute of the second list")
public void setDoubleOnmouseover(String doubleOnmouseover) {
this.doubleOnmouseover = doubleOnmouseover;
}
public String getDoubleOnmouseup() {
return doubleOnmouseup;
}
@StrutsTagAttribute(description = "Set the onmouseup attribute of the second list")
public void setDoubleOnmouseup(String doubleOnmouseup) {
this.doubleOnmouseup = doubleOnmouseup;
}
public String getDoubleOnselect() {
return doubleOnselect;
}
@StrutsTagAttribute(description = "Set the onselect attribute of the second list")
public void setDoubleOnselect(String doubleOnselect) {
this.doubleOnselect = doubleOnselect;
}
public String getDoubleSize() {
return doubleSize;
}
@StrutsTagAttribute(description = "Set the size attribute of the second list")
public void setDoubleSize(String doubleSize) {
this.doubleSize = doubleSize;
}
public String getDoubleList() {
return doubleList;
}
public String getDoubleListKey() {
return doubleListKey;
}
public String getDoubleListValue() {
return doubleListValue;
}
public String getDoubleName() {
return doubleName;
}
public String getDoubleValue() {
return doubleValue;
}
@StrutsTagAttribute(description = "Decides of an empty option is to be inserted in the second list", type = "Boolean", defaultValue = "false")
public void setEmptyOption(String emptyOption) {
this.emptyOption = emptyOption;
}
@StrutsTagAttribute(description = "Set the header key of the second list. Must not be empty! " +
"'-1' and '' is correct, '' is bad.")
public void setHeaderKey(String headerKey) {
this.headerKey = headerKey;
}
@StrutsTagAttribute(description = " Set the header value of the second list")
public void setHeaderValue(String headerValue) {
this.headerValue = headerValue;
}
@StrutsTagAttribute(description = "Creates a multiple select. " +
"The tag will pre-select multiple values if the values are passed as an Array " +
"(of appropriate types) via the value attribute.")
public void setMultiple(String multiple) {
// TODO: Passing a Collection may work too?
this.multiple = multiple;
}
@StrutsTagAttribute(description = "Size of the element box (# of elements to show)", type = "Integer")
public void setSize(String size) {
this.size = size;
}
@StrutsTagAttribute(description = "Set the html accesskey attribute.")
public void setDoubleAccesskey(String doubleAccesskey) {
this.doubleAccesskey = doubleAccesskey;
}
}