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

com.viaoa.web.html.jquery.JqDialog Maven / Gradle / Ivy

package com.viaoa.web.html.jquery;

import java.awt.Dimension;
import java.util.ArrayList;
import java.util.Set;

import com.viaoa.util.OAString;
import com.viaoa.web.html.HtmlElement;
import com.viaoa.web.html.form.OAFormInsertDelegate;
import com.viaoa.web.html.form.OAFormSubmitEvent;

/**
 * Turn an html element into a JQ Dialog.
 * 
 * @author vvia
 */
public class JqDialog extends HtmlElement {
    protected boolean bModal;
    protected Dimension dim, dimMin, dimMax;
    protected String title;
    protected String closeButtonText = "Close";
    private String submitButtonText;
    
    // list of button names. If selected, then the name/text will be set when onSubmit is called.
    private ArrayList alButtons = new ArrayList();  
    
    public JqDialog(String id) {
        super(id);
        setVisible(false);
    }
    public void setModal(boolean b) {
        bModal = b;
    }
    public boolean getModal() {
        return bModal;
    }

    
    @Override
    protected void onSubmitBeforeLoadValues(OAFormSubmitEvent formSubmitEvent) {
        boolean bWasSubmitted = false;
        String[] ids = formSubmitEvent.getNameValueMap().get("oacommand");
        if (ids != null && ids.length == 1) {
            String idx = ids[0];
            
            bWasSubmitted  = (idx != null && idx.startsWith(getId()+"_"));
            if (bWasSubmitted) {
                formSubmitEvent.setSubmitOAHtmlComponent(getOAHtmlComponent());
                formSubmitEvent.setSubmitHtmlElement(this);
                submitButtonText = idx.substring(getId().length()+1);
            }
        }
    }

    @Override
    protected void onSubmit(OAFormSubmitEvent formSubmitEvent) {
        if (formSubmitEvent.getSubmitHtmlElement() != this) return;
        setVisible(false);  // js code in this changed it
        getOAHtmlComponent().setVisibleChanged(false);
        onSubmit(submitButtonText);
    }

    /**
     * Override this for when button is clicked.
     */
    protected void onSubmit(String buttonName) {
    }
    
    
    public Dimension getDimension() {
        return dim;
    }
    public void setDimension(Dimension d) {
        this.dim = d;
    }
    public Dimension getMinDimension() {
        return dimMin;
    }
    public void setMinDimension(Dimension d) {
        this.dimMax = d;
    }
    public Dimension getMaxDimension() {
        return dimMax;
    }
    public void setMaxDimension(Dimension d) {
        this.dimMax = d;
    }
    
    public void setCloseButtonText(String text) {
        this.closeButtonText = text;
    }
    public String getCloseButtonText() {
        return this.closeButtonText;
    }
    
    public void addButton(String text) {
        alButtons.add(text);
    }

    @Override
    protected String getInitializeScript() {
        StringBuilder sb = new StringBuilder(2048);
        lastAjaxSent = null;
        
        
        sb.append("$('#"+getId()+"').dialog({autoOpen: false, modal: "+bModal);
        sb.append(", closeOnEscape: true, resizable: true");

        if (dim != null) {
            sb.append(", width: "+dim.width);
            sb.append(", height: "+dim.height);
        }
        if (dimMin != null) {
            sb.append(", minWidth: "+dimMin.width);
            sb.append(", minHeight: "+dimMin.height);
        }
        if (dimMax != null) {
            sb.append(", maxWidth: "+dimMax.width);
            sb.append(", maxHeight: "+dimMax.height);
        }

        String s = getCloseButtonText();
        if (!OAString.isEmpty(s)) {
            sb.append(", closeText: '"+s+"'");
        }

        
        if (alButtons.size() > 0) {
            sb.append(", buttons: [");
            int i=0;
            for (String text : alButtons) {
                if (i++ > 0) sb.append(", ");
                sb.append("{text: '"+text+"', click: function() { $(this).dialog('close'); ");
                
                if (getAjaxSubmit()) {
                    sb.append("$('#oacommand').val('"+getId()+"_"+text+"');ajaxSubmit();");
                }
                else if (getSubmit()) {
                    sb.append("$('#oacommand').val('"+getId()+"_"+text+"'); $('form').submit(); $('#oacommand').val('');");
                }
                sb.append("}}");
            }
            sb.append("]");
        }
        
        // end of constructor
        sb.append("});\n");

        
        String js = sb.toString();
        return js;
    }

    private String lastAjaxSent;
    
    @Override
    protected String getAjaxScript(final boolean bIsInitializing) {
        StringBuilder sb = new StringBuilder(256);
        
        if (getVisible()) {
            sb.append("$('#"+getId()+"').dialog('open');\n");
            lastAjaxSent = null;
        }
        else sb.append("$('#"+getId()+"').dialog('close');\n");

        String s = getTitle();
        if (s == null) s = "";
        sb.append("$('#"+getId()+"').dialog('option', 'title', '"+s+"');\n");

        String js = sb.toString();
        if (lastAjaxSent != null && lastAjaxSent.equals(js)) js = null;
        else lastAjaxSent = js;
        
        return js;
    }

    
    public void getRequiredJsNames(Set hsJsName) {
        hsJsName.add(OAFormInsertDelegate.JS_jquery);
        hsJsName.add(OAFormInsertDelegate.JS_jquery_ui);

/*qqqqqqqqqq        
        if (OAString.isNotEmpty(getToolTip())) {
            hsJsName.add(OAJspDelegate.JS_bootstrap);
        }
        if (getForm() == null || getForm().getDefaultJsLibrary() == OAApplication.JSLibrary_JQueryUI) {
            hsJsName.add(OAJspDelegate.JS_jquery_ui);
        }
        else {
            hsJsName.add(OAJspDelegate.JS_bootstrap);
        }
*/        
    }

    @Override
    public void getRequiredCssNames(Set hsCssName) {
        hsCssName.add(OAFormInsertDelegate.CSS_jquery_ui);
        
/*qqqqqqqq        
        if (OAString.isNotEmpty(getToolTip())) {
            hsCssName.add(OAJspDelegate.CSS_bootstrap);
        }
        if (getForm() == null || getForm().getDefaultJsLibrary() == OAApplication.JSLibrary_JQueryUI) {
            hsCssName.add(OAJspDelegate.CSS_jquery_ui);
        }
        else {
            hsCssName.add(OAJspDelegate.CSS_bootstrap);
        }
*/        
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy