WICKET-6155 use JSON for settings
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/e1157cb7 Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/e1157cb7 Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/e1157cb7 Branch: refs/heads/master Commit: e1157cb783cb82d791bdf97869d4924bd369a1f0 Parents: c346806 Author: Sven Meier <[email protected]> Authored: Fri May 20 18:55:36 2016 +0200 Committer: Sven Meier <[email protected]> Committed: Fri May 20 18:55:36 2016 +0200 ---------------------------------------------------------------------- .../ajax/markup/html/modal/ModalWindow.java | 119 +++++-------------- 1 file changed, 31 insertions(+), 88 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/e1157cb7/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/modal/ModalWindow.java ---------------------------------------------------------------------- diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/modal/ModalWindow.java b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/modal/ModalWindow.java index 36e3d20..66ad3f0 100644 --- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/modal/ModalWindow.java +++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/modal/ModalWindow.java @@ -21,6 +21,8 @@ import org.apache.wicket.Page; import org.apache.wicket.WicketRuntimeException; import org.apache.wicket.ajax.AbstractDefaultAjaxBehavior; import org.apache.wicket.ajax.AjaxRequestTarget; +import org.apache.wicket.ajax.json.JSONObject; +import org.apache.wicket.ajax.json.JsonFunction; import org.apache.wicket.core.request.handler.IPartialPageRequestHandler; import org.apache.wicket.core.request.handler.PageProvider; import org.apache.wicket.core.request.handler.RenderPageRequestHandler; @@ -42,7 +44,6 @@ import org.apache.wicket.resource.CoreLibrariesContributor; import org.apache.wicket.util.io.IClusterable; import org.apache.wicket.util.lang.EnumeratedType; import org.apache.wicket.util.string.AppendingStringBuffer; -import org.apache.wicket.util.string.Strings; /** * Modal window component. @@ -1008,37 +1009,28 @@ public class ModalWindow extends Panel */ protected final String getWindowOpenJavaScript() { - AppendingStringBuffer buffer = new AppendingStringBuffer(500); - - if (isCustomComponent()) - { - buffer.append("var element = document.getElementById(\""); - buffer.append(getContentMarkupId()); - buffer.append("\");\n"); - } - - buffer.append("var settings = new Object();\n"); + JSONObject settings = new JSONObject(); - appendAssignment(buffer, "settings.minWidth", getMinimalWidth()); - appendAssignment(buffer, "settings.minHeight", getMinimalHeight()); - appendAssignment(buffer, "settings.className", getCssClassName()); - appendAssignment(buffer, "settings.width", getInitialWidth()); + settings.put("minWidth", getMinimalWidth()); + settings.put("minHeight", getMinimalHeight()); + settings.put("className", getCssClassName()); + settings.put("width", getInitialWidth()); if ((isUseInitialHeight() == true) || (isCustomComponent() == false)) { - appendAssignment(buffer, "settings.height", getInitialHeight()); + settings.put("height", getInitialHeight()); } else { - buffer.append("settings.height=null;\n"); + settings.put("height", (Object)null); } - appendAssignment(buffer, "settings.resizable", isResizable()); + settings.put("resizable", isResizable()); if (isResizable() == false) { - appendAssignment(buffer, "settings.widthUnit", getWidthUnit()); - appendAssignment(buffer, "settings.heightUnit", getHeightUnit()); + settings.put("widthUnit", getWidthUnit()); + settings.put("heightUnit", getHeightUnit()); } if (isCustomComponent() == false) @@ -1062,37 +1054,36 @@ public class ModalWindow extends Panel pageUrl = requestCycle.urlFor(handler); } - appendAssignment(buffer, "settings.src", pageUrl); + settings.put("src", pageUrl); } else { - buffer.append("settings.element=element;\n"); + settings.put("element", new JsonFunction("document.getElementById(\"" + getContentMarkupId() + "\")")); } if (getCookieName() != null) { - appendAssignment(buffer, "settings.cookieId", getCookieName()); + settings.put("cookieId", getCookieName()); } String title = getTitle() != null ? getTitle().getObject() : null; if (title != null) { - String escaped = getDefaultModelObjectAsString(title); - appendAssignment(buffer, "settings.title", escaped); + settings.put("title", getDefaultModelObjectAsString(title)); } if (getMaskType() == MaskType.TRANSPARENT) { - buffer.append("settings.mask=\"transparent\";\n"); + settings.put("mask", "transparent"); } else if (getMaskType() == MaskType.SEMI_TRANSPARENT) { - buffer.append("settings.mask=\"semi-transparent\";\n"); + settings.put("mask", "semi-transparent"); } - appendAssignment(buffer, "settings.autoSize", autoSize); + settings.put("autoSize", autoSize); - appendAssignment(buffer, "settings.unloadConfirmation", showUnloadConfirmation()); + settings.put("unloadConfirmation", showUnloadConfirmation()); // set true if we set a windowclosedcallback boolean haveCloseCallback = false; @@ -1102,9 +1093,7 @@ public class ModalWindow extends Panel if (windowClosedCallback != null) { WindowClosedBehavior behavior = getBehaviors(WindowClosedBehavior.class).get(0); - buffer.append("settings.onClose = function() { "); - buffer.append(behavior.getCallbackScript()); - buffer.append(" };\n"); + settings.put("onClose", new JsonFunction("function() { " + behavior.getCallbackScript() + " }")); haveCloseCallback = true; } @@ -1114,74 +1103,28 @@ public class ModalWindow extends Panel if ((closeButtonCallback != null) || (haveCloseCallback == false)) { CloseButtonBehavior behavior = getBehaviors(CloseButtonBehavior.class).get(0); - buffer.append("settings.onCloseButton = function() { "); - buffer.append(behavior.getCallbackScript()); - buffer.append(";return false;};\n"); + settings.put("onCloseButton", new JsonFunction("function() { " + behavior.getCallbackScript() + "; return false; }")); } - postProcessSettings(buffer); - - buffer.append(getShowJavaScript()); - return buffer.toString(); - } - - /** - * - * @param buffer - * @param key - * @param value - */ - private void appendAssignment(final AppendingStringBuffer buffer, final CharSequence key, - final int value) - { - buffer.append(key).append('='); - buffer.append(value); - buffer.append(";\n"); - } - - /** - * - * @param buffer - * @param key - * @param value - */ - private void appendAssignment(final AppendingStringBuffer buffer, final CharSequence key, - final boolean value) - { - buffer.append(key).append('='); - buffer.append(Boolean.toString(value)); - buffer.append(";\n"); - } - - /** - * - * @param buffer - * @param key - * @param value - */ - private void appendAssignment(final AppendingStringBuffer buffer, final CharSequence key, CharSequence value) - { - buffer.append(key).append("=\""); + postProcessSettings(settings); - if (value != null) - { - value = Strings.replaceAll(value, "\"", "\\\""); - value = Strings.replaceAll(value, "\n", "\\n"); - } + AppendingStringBuffer buffer = new AppendingStringBuffer(500); + buffer.append("var settings = "); + buffer.append(settings.toString()); + buffer.append(";"); - buffer.append(value); - buffer.append("\";\n"); + buffer.append(getShowJavaScript()); + return buffer.toString(); } /** * Method that allows tweaking the settings * * @param settings - * @return settings javascript + * @return settings json */ - protected AppendingStringBuffer postProcessSettings(final AppendingStringBuffer settings) + protected void postProcessSettings(JSONObject settings) { - return settings; } /**
