Author: gseitz Date: Sun Nov 4 13:59:49 2007 New Revision: 591847 URL: http://svn.apache.org/viewvc?rev=591847&view=rev Log: disable label (and thus LabelAjaxBehavior) in onBeforeRender according to isEnabled&&isEnableAllowed of AjaxEditableLabel added tests for AjaxEditableLabel
Added: wicket/trunk/jdk-1.4/wicket-extensions/src/test/java/org/apache/wicket/extensions/ajax/ wicket/trunk/jdk-1.4/wicket-extensions/src/test/java/org/apache/wicket/extensions/ajax/markup/ wicket/trunk/jdk-1.4/wicket-extensions/src/test/java/org/apache/wicket/extensions/ajax/markup/html/ wicket/trunk/jdk-1.4/wicket-extensions/src/test/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableLabelPage.html (with props) wicket/trunk/jdk-1.4/wicket-extensions/src/test/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableLabelPage.java (with props) wicket/trunk/jdk-1.4/wicket-extensions/src/test/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableTest.java (with props) Modified: wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableLabel.java Modified: wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableLabel.java URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableLabel.java?rev=591847&r1=591846&r2=591847&view=diff ============================================================================== --- wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableLabel.java (original) +++ wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableLabel.java Sun Nov 4 13:59:49 2007 @@ -93,18 +93,17 @@ { super.onComponentTag(tag); final String saveCall = "{" + - generateCallbackScript("wicketAjaxGet('" + getCallbackUrl() + - "&save=true&'+this.name+'='+wicketEncode(this.value)") + - "; return false;}"; + generateCallbackScript("wicketAjaxGet('" + getCallbackUrl() + + "&save=true&'+this.name+'='+wicketEncode(this.value)") + "; return false;}"; final String cancelCall = "{" + - generateCallbackScript("wicketAjaxGet('" + getCallbackUrl() + "&save=false'") + - "; return false;}"; + generateCallbackScript("wicketAjaxGet('" + getCallbackUrl() + "&save=false'") + + "; return false;}"; final String keypress = "var kc=wicketKeyCode(event); if (kc==27) " + cancelCall + - " else if (kc!=13) { return true; } else " + saveCall; + " else if (kc!=13) { return true; } else " + saveCall; tag.put("onblur", saveCall); tag.put("onkeypress", keypress); @@ -115,7 +114,7 @@ { RequestCycle requestCycle = RequestCycle.get(); boolean save = Boolean.valueOf(requestCycle.getRequest().getParameter("save")) - .booleanValue(); + .booleanValue(); if (save) { @@ -334,6 +333,7 @@ { initLabelAndEditor(getParentModel()); } + label.setEnabled(isEnableAllowed() && isEnabled()); } /** @@ -364,9 +364,9 @@ // put focus on the textfield and stupid explorer hack to move the // caret to the end target.appendJavascript("{ var el=wicketGet('" + editor.getMarkupId() + "');" + - " if (el.createTextRange) { " + - " var v = el.value; var r = el.createTextRange(); " + - " r.moveStart('character', v.length); r.select(); } }"); + " if (el.createTextRange) { " + + " var v = el.value; var r = el.createTextRange(); " + + " r.moveStart('character', v.length); r.select(); } }"); target.focusComponent(editor); } @@ -382,7 +382,7 @@ if (errorMessage instanceof String) { target.appendJavascript("window.status='" + - JavascriptUtils.escapeQuotes((String)errorMessage) + "';"); + JavascriptUtils.escapeQuotes((String)errorMessage) + "';"); } String editorMarkupId = editor.getMarkupId(); target.appendJavascript(editorMarkupId + ".select();"); @@ -437,13 +437,13 @@ { Component parent = getParent(); String msg = "No model found for this component, either pass one explicitly or " - + "make sure an inheritable model is available."; + + "make sure an inheritable model is available."; if (parent == null) { msg += " This component is not added to a parent yet, so if this component " - + "is supposed to use the model of the parent (e.g. when it uses a " - + "compound property model), add it first before further configuring " - + "the component calling methods like e.g. setType and addValidator."; + + "is supposed to use the model of the parent (e.g. when it uses a " + + "compound property model), add it first before further configuring " + + "the component calling methods like e.g. setType and addValidator."; } throw new IllegalStateException(msg); } Added: wicket/trunk/jdk-1.4/wicket-extensions/src/test/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableLabelPage.html URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket-extensions/src/test/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableLabelPage.html?rev=591847&view=auto ============================================================================== --- wicket/trunk/jdk-1.4/wicket-extensions/src/test/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableLabelPage.html (added) +++ wicket/trunk/jdk-1.4/wicket-extensions/src/test/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableLabelPage.html Sun Nov 4 13:59:49 2007 @@ -0,0 +1,22 @@ +<!-- + 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. +--> +<html> +<body> + <div wicket:id="ajaxLabel"></div> + <a wicket:id="toggle">toggle</a> +</body> +</html> \ No newline at end of file Propchange: wicket/trunk/jdk-1.4/wicket-extensions/src/test/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableLabelPage.html ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: wicket/trunk/jdk-1.4/wicket-extensions/src/test/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableLabelPage.java URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket-extensions/src/test/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableLabelPage.java?rev=591847&view=auto ============================================================================== --- wicket/trunk/jdk-1.4/wicket-extensions/src/test/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableLabelPage.java (added) +++ wicket/trunk/jdk-1.4/wicket-extensions/src/test/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableLabelPage.java Sun Nov 4 13:59:49 2007 @@ -0,0 +1,51 @@ +/* + * 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.wicket.extensions.ajax.markup.html; + +import org.apache.wicket.ajax.AjaxRequestTarget; +import org.apache.wicket.ajax.markup.html.AjaxLink; +import org.apache.wicket.markup.html.WebPage; +import org.apache.wicket.model.Model; + +/** + * @author Gerolf Seitz + */ +public class AjaxEditableLabelPage extends WebPage +{ + private static final long serialVersionUID = 1L; + + /** + * Construct. + */ + public AjaxEditableLabelPage() + { + final AjaxEditableLabel ajaxLabel = new AjaxEditableLabel("ajaxLabel", + new Model("ajaxTest")); + add(ajaxLabel); + add(new AjaxLink("toggle") + { + private static final long serialVersionUID = 1L; + + public void onClick(AjaxRequestTarget target) + { + ajaxLabel.setEnabled(!ajaxLabel.isEnabled()); + target.addComponent(ajaxLabel); + } + }); + } + +} Propchange: wicket/trunk/jdk-1.4/wicket-extensions/src/test/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableLabelPage.java ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: wicket/trunk/jdk-1.4/wicket-extensions/src/test/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableTest.java URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket-extensions/src/test/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableTest.java?rev=591847&view=auto ============================================================================== --- wicket/trunk/jdk-1.4/wicket-extensions/src/test/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableTest.java (added) +++ wicket/trunk/jdk-1.4/wicket-extensions/src/test/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableTest.java Sun Nov 4 13:59:49 2007 @@ -0,0 +1,97 @@ +/* + * 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.wicket.extensions.ajax.markup.html; + +import org.apache.wicket.Page; +import org.apache.wicket.WicketTestCase; +import org.apache.wicket.ajax.markup.html.AjaxLink; +import org.apache.wicket.behavior.AbstractAjaxBehavior; + +/** + * Tests for [EMAIL PROTECTED] AjaxEditableLabel} + * + * @author Gerolf Seitz + */ +public class AjaxEditableTest extends WicketTestCase +{ + + protected void setUp() throws Exception + { + super.setUp(); + tester.getApplication().getMarkupSettings().setStripWicketTags(false); + tester.startPage(AjaxEditableLabelPage.class); + tester.assertRenderedPage(AjaxEditableLabelPage.class); + } + + + /** + * Tests default AjaxEditableLabel behavior + */ + public void testAjaxEditableLabel() + { + Page page = tester.getLastRenderedPage(); + AjaxEditableLabel ajaxLabel = (AjaxEditableLabel)page.get("ajaxLabel"); + + AbstractAjaxBehavior labelBehavior = (AbstractAjaxBehavior)ajaxLabel.get("label") + .getBehaviors() + .get(0); + AbstractAjaxBehavior editorBehavior = (AbstractAjaxBehavior)ajaxLabel.get("editor") + .getBehaviors() + .get(0); + + // "click" on the label and check for valid visibility + tester.executeBehavior(labelBehavior); + tester.assertVisible("ajaxLabel:editor"); + tester.assertInvisible("ajaxLabel:label"); + + // "leave" the editor and check for valid visibility + tester.executeBehavior(editorBehavior); + tester.assertInvisible("ajaxLabel:editor"); + tester.assertVisible("ajaxLabel:label"); + } + + /** + * Tests whether disabling/enabling an AjaxEditableLabel also disables/enables the + * <code>LabelBehavior</code> + */ + public void testDisabledAjaxEditableLabel() + { + Page page = tester.getLastRenderedPage(); + AjaxEditableLabel ajaxLabel = (AjaxEditableLabel)page.get("ajaxLabel"); + AjaxLink toggle = (AjaxLink)page.get("toggle"); + + AbstractAjaxBehavior toggleBehavior = (AbstractAjaxBehavior)toggle.getBehaviors().get(0); + + // check for correct rendering + tester.assertInvisible("ajaxLabel:editor"); + tester.assertVisible("ajaxLabel:label"); + + // disable ajaxLabel + tester.executeBehavior(toggleBehavior); + + // check for the *absence* of the ajax onclick call + String markup = tester.getTagById(ajaxLabel.getMarkupId()).getMarkup(); + assertFalse(markup.matches(".*onclick=\"var wcall=wicketAjaxGet.*")); + + // enable ajaxLabel + tester.executeBehavior(toggleBehavior); + + // check for the *presence* of the ajax onclick call + markup = tester.getTagById(ajaxLabel.getMarkupId()).getMarkup(); + assertTrue(markup.matches(".*onclick=\"var wcall=wicketAjaxGet.*")); + } +} \ No newline at end of file Propchange: wicket/trunk/jdk-1.4/wicket-extensions/src/test/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableTest.java ------------------------------------------------------------------------------ svn:mime-type = text/plain