001/**
002 * Copyright 2005-2018 The Kuali Foundation
003 *
004 * Licensed under the Educational Community License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.opensource.org/licenses/ecl2.php
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016package org.kuali.rice.krad.uif.widget;
017
018import org.apache.commons.lang.StringUtils;
019import org.kuali.rice.krad.datadictionary.parse.BeanTag;
020import org.kuali.rice.krad.datadictionary.parse.BeanTagAttribute;
021
022import java.util.HashMap;
023import java.util.Map;
024
025/**
026 * BlockUI element is used within the view element for managing element/page blocking attributes
027 *
028 * <p>
029 * Some basic options of the plugin are exposed through this class. Messages can be managed via
030 * Action elements. See the jquery BlockUI plugin for more details.
031 * </p>
032 *
033 * @author Kuali Rice Team (rice.collab@kuali.org)
034 */
035@BeanTag(name = "blockUI", parent = "Uif-BlockUI")
036public class BlockUI extends WidgetBase {
037
038    private String blockingImageSource;
039
040    public BlockUI() {
041        super();
042    }
043
044    /**
045     * Override to add property values to the template options
046     *
047     * {@inheritDoc}
048     */
049    @Override
050    public Map<String, String> getTemplateOptions() {
051        Map<String, String> templateOptions = super.getTemplateOptions();
052
053        if (templateOptions == null) {
054            super.setTemplateOptions(templateOptions = new HashMap<String, String>());
055        }
056
057        if (StringUtils.isNotBlank(blockingImageSource) && !templateOptions.containsKey("blockingImage")) {
058            templateOptions.put("blockingImage", blockingImageSource);
059        }
060
061        return templateOptions;
062    }
063
064    /**
065     * Path to an image that will be rendered in the blocking overlay
066     *
067     * <p>
068     * If specified, the image will be picked up and rendered before the blocking message in
069     * the overlay. If not given just the message will be displayed
070     * </p>
071     *
072     * @return url to the blocking image
073     */
074    @BeanTagAttribute
075    public String getBlockingImageSource() {
076        return blockingImageSource;
077    }
078
079    /**
080     * Setter for the url (source) of the blocking image to use (if any)
081     *
082     * @param blockingImageSource
083     */
084    public void setBlockingImageSource(String blockingImageSource) {
085        this.blockingImageSource = blockingImageSource;
086    }
087}