All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.struts2.components.InputTransferSelect Maven / Gradle / Ivy

There is a newer version: 6.4.0
Show newest version
/*
 * 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.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.struts2.views.annotations.StrutsTag;
import org.apache.struts2.views.annotations.StrutsTagAttribute;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.LinkedHashMap;
import java.util.Map;

/**
 * 
 * 

* Create a input transfer select component which is basically an text input * and <select ...> tag with buttons in the middle of them allowing text * to be added to the transfer select. Will auto-select all its * elements upon its containing form submission. *

* * * *

* NOTE: The id and doubleId need not be supplied as they will generated provided * that the inputtransferselect tag is being used in a form tag. The generated id * and doubleId will be <form_id>_<inputtransferselect_doubleName> and * <form_id>_<inputtransferselect_doubleName> respectively. *

* * *
 * 
 *
 * <-- minimum configuration -->
 * <s:inputtransferselect
 *      label="Favourite Cartoons Characters"
 *      name="cartoons"
 *      list="{'Popeye', 'He-Man', 'Spiderman'}"
 *  />
 *
 * 
 * 
* */ @StrutsTag(name="inputtransferselect", tldTagClass="org.apache.struts2.views.jsp.ui.InputTransferSelectTag", description="Renders an input form") public class InputTransferSelect extends ListUIBean { private static final Logger LOG = LogManager.getLogger(InputTransferSelect.class); private static final String TEMPLATE = "inputtransferselect"; protected String size; protected String multiple; protected String allowRemoveAll; protected String allowUpDown; protected String leftTitle; protected String rightTitle; protected String buttonCssClass; protected String buttonCssStyle; protected String addLabel; protected String removeLabel; protected String removeAllLabel; protected String upLabel; protected String downLabel; protected String headerKey; protected String headerValue; public InputTransferSelect(ValueStack stack, HttpServletRequest request, HttpServletResponse response) { super(stack, request, response); } protected String getDefaultTemplate() { return TEMPLATE; } public void evaluateExtraParams() { super.evaluateExtraParams(); if (StringUtils.isBlank(size)) { addParameter("size", "5"); } if (StringUtils.isBlank(multiple)) { addParameter("multiple", Boolean.TRUE); } // allowUpDown addParameter("allowUpDown", allowUpDown != null ? findValue(allowUpDown, Boolean.class) : Boolean.TRUE); // allowRemoveAll addParameter("allowRemoveAll", allowRemoveAll != null ? findValue(allowRemoveAll, Boolean.class) : Boolean.TRUE); // leftTitle if (leftTitle != null) { addParameter("leftTitle", findValue(leftTitle, String.class)); } // rightTitle if (rightTitle != null) { addParameter("rightTitle", findValue(rightTitle, String.class)); } // buttonCssClass if (StringUtils.isNotBlank(buttonCssClass)) { addParameter("buttonCssClass", buttonCssClass); } // buttonCssStyle if (StringUtils.isNotBlank(buttonCssStyle)) { addParameter("buttonCssStyle", buttonCssStyle); } // addLabel addParameter("addLabel", addLabel != null ? findValue(addLabel, String.class) : "->" ); // removeLabel addParameter("removeLabel", removeLabel != null ? findValue(removeLabel, String.class) : "<-"); // removeAllLabel addParameter("removeAllLabel", removeAllLabel != null ? findValue(removeAllLabel, String.class) : "<<--"); // upLabel addParameter("upLabel", upLabel != null ? findValue(upLabel, String.class) : "^"); // leftDownLabel addParameter("downLabel", downLabel != null ? findValue(downLabel, String.class) : "v"); if ((headerKey != null) && (headerValue != null)) { addParameter("headerKey", findString(headerKey)); addParameter("headerValue", findString(headerValue)); } // inform the form component our select tag infos, so they know how to select // its elements upon onSubmit Form formAncestor = (Form) findAncestor(Form.class); if (formAncestor != null) { // inform ancestor form that we are having a customOnSubmit (see form-close.ftl [simple theme]) enableAncestorFormCustomOnsubmit(); // key -> select tag id, value -> headerKey (if exists) Map formInputtransferselectIds = (Map) formAncestor.getParameters().get("inputtransferselectIds"); // init lists if (formInputtransferselectIds == null) { formInputtransferselectIds = new LinkedHashMap(); } // id String tmpId = (String) getParameters().get("id"); String tmpHeaderKey = (String) getParameters().get("headerKey"); if (tmpId != null && (! formInputtransferselectIds.containsKey(tmpId))) { formInputtransferselectIds.put(tmpId, tmpHeaderKey); } formAncestor.getParameters().put("inputtransferselectIds", formInputtransferselectIds); } else { if (LOG.isWarnEnabled()) { LOG.warn("form enclosing inputtransferselect "+this+" not found, auto select upon form submit of inputtransferselect will not work"); } } } public String getSize() { return size; } @StrutsTagAttribute(description="the size of the select box") public void setSize(String size) { this.size = size; } public String getMultiple() { return multiple; } @StrutsTagAttribute(description="Determine whether or not multiple entries are shown") public void setMultiple(String multiple) { this.multiple = multiple; } public String getAllowRemoveAll() { return allowRemoveAll; } @StrutsTagAttribute(description="Determine whether the remove all button will display") public void setAllowRemoveAll(String allowRemoveAll) { this.allowRemoveAll = allowRemoveAll; } public String getAllowUpDown() { return allowUpDown; } @StrutsTagAttribute(description="Determine whether items in the list can be reordered") public void setAllowUpDown(String allowUpDown) { this.allowUpDown = allowUpDown; } public String getLeftTitle() { return leftTitle; } @StrutsTagAttribute(description="the left hand title") public void setLeftTitle(String leftTitle) { this.leftTitle = leftTitle; } public String getRightTitle() { return rightTitle; } @StrutsTagAttribute(description="the right hand title") public void setRightTitle(String rightTitle) { this.rightTitle = rightTitle; } public String getButtonCssClass() { return buttonCssClass; } @StrutsTagAttribute(description="the css class used for rendering buttons") public void setButtonCssClass(String buttonCssClass) { this.buttonCssClass = buttonCssClass; } public String getButtonCssStyle() { return buttonCssStyle; } @StrutsTagAttribute(description="the css style used for rendering buttons") public void setButtonCssStyle(String buttonCssStyle) { this.buttonCssStyle = buttonCssStyle; } public String getAddLabel() { return addLabel; } @StrutsTagAttribute(description="the label used for the add button") public void setAddLabel(String addLabel) { this.addLabel = addLabel; } public String getRemoveLabel() { return removeLabel; } @StrutsTagAttribute(description="the label used for the remove button") public void setRemoveLabel(String removeLabel) { this.removeLabel = removeLabel; } public String getRemoveAllLabel() { return removeAllLabel; } @StrutsTagAttribute(description="the label used for the remove all button") public void setRemoveAllLabel(String removeAllLabel) { this.removeAllLabel = removeAllLabel; } public String getUpLabel() { return upLabel; } @StrutsTagAttribute(description="the label used for the up button") public void setUpLabel(String upLabel) { this.upLabel = upLabel; } public String getDownLabel() { return downLabel; } @StrutsTagAttribute(description="the label used for the down button") public void setDownLabel(String downLabel) { this.downLabel = downLabel; } public String getHeaderKey() { return headerKey; } @StrutsTagAttribute(description="the header key of the select box") public void setHeaderKey(String headerKey) { this.headerKey = headerKey; } public String getHeaderValue() { return headerValue; } @StrutsTagAttribute(description="the header value of the select box") public void setHeaderValue(String headerValue) { this.headerValue = headerValue; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy