package org.jblooming.waf.html.button; import org.jblooming.PlatformRuntimeException; import org.jblooming.utilities.JSP; import org.jblooming.waf.html.state.Form; import org.jblooming.waf.settings.I18n; import org.jblooming.waf.view.PageState; import java.io.Serializable; public class ButtonJS extends ButtonSupport { public String onClickScript; public ButtonJS() { super(); } public ButtonJS(String onClickScript) { this("",onClickScript); } public ButtonJS(String label,String onClickScript) { super("partButton.jsp"); this.label=label; this.onClickScript = onClickScript; } public String getLaunchedJsOnActionListened() { String ret = null; if (onClickScript != null) ret = onClickScript; if (additionalScript != null) ret = ret + " " + additionalScript; return ret; } public void setMainObjectId(Serializable id) { throw new PlatformRuntimeException("setMainObjectId implementation not supported: do it by hand, lazy fool! Hahahahaha!"); } public String generateLaunchJs() { StringBuffer sb = new StringBuffer(); if (enabled) { sb.append(" onClick=\""); sb.append(generateJs()); sb.append(";return false;\" ");// close onclick string if (additionalScript != null && additionalScript.trim().length() > 0) sb.append(' ').append(additionalScript); } return sb.toString(); } public String getLabel() { return label; } public boolean isEnabled() { return enabled; } public String getToolTip() { return toolTip; } public StringBuffer generateJs() { StringBuffer sb = new StringBuffer(); if (enabled) { if (confirmRequire) { sb.append("if (confirm('"); if (confirmQuestion != null && confirmQuestion.length() > 0) sb.append(JSP.javascriptEncode(confirmQuestion)); else sb.append("proceed?"); sb.append("')"); sb.append(')'); // close if parenthesis sb.append("{"); // open if block } sb.append(JSP.w(onClickScript)); sb.append(JSP.w(additionalOnClickScript)); if (confirmRequire) { sb.append("}"); // close if block } } return sb; } public static ButtonJS getResetInstance(Form f, PageState pageState) { return getResetInstance(f, I18n.get("RESET")); } public static ButtonJS getResetInstance(Form form, String label) { ButtonJS bs = new ButtonJS(); bs.onClickScript = "obj('" + form.id + "').reset();"; bs.label = label; return bs; } /** * ButtonJS delData = ButtonJS.getCommandInstance("DELETE_WORKLOG","WORKLOG_ID",workLog.getId()+""); */ public static ButtonJS getCommandInstance(String command, String... nameAndValue) { ButtonJS bj = new ButtonJS(); bj.onClickScript = getCommandJS(command, nameAndValue); return bj; } public static String getCommandJS(String command, String... nameAndValue) { if (nameAndValue.length % 2 != 0) throw new PlatformRuntimeException("nameAndValue must be an even lenght list of arguments"); String commandExe = "executeCommand('" + command; if (nameAndValue.length > 0) commandExe = commandExe + "','"; for (int i = 0; i < nameAndValue.length; i += 2) { commandExe = commandExe + (i > 0 ? "," : "") + nameAndValue[i] + "=" + JSP.urlEncode(nameAndValue[i + 1]); } return commandExe + "');"; } }