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


Reply via email to