From: erik Date: Sun, 13 Feb 2011 17:13:54 +0000 (+0000) Subject: (no commit message) X-Git-Tag: wamblee-utils-0.6~2 X-Git-Url: http://wamblee.org/gitweb/?a=commitdiff_plain;h=6dc96061bf16d4bf48ce1858f89a0808f8af002b;p=utils --- diff --git a/wicket/components/src/main/java/org/wamblee/wicket/behavior/OnClickConfirmationBehavior.java b/wicket/components/src/main/java/org/wamblee/wicket/behavior/OnClickConfirmationBehavior.java new file mode 100644 index 00000000..671bf206 --- /dev/null +++ b/wicket/components/src/main/java/org/wamblee/wicket/behavior/OnClickConfirmationBehavior.java @@ -0,0 +1,57 @@ +/* + * Copyright 2005-2011 the original author or authors. + * + * Licensed 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.wamblee.wicket.behavior; + +import org.apache.wicket.AttributeModifier; +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.Model; + +/** + * Attribute modifier to add onclick confirmation to buttons. + * + * @author Erik Brakkee + */ +public class OnClickConfirmationBehavior extends AttributeModifier { + + private static final String ATTRIBUTE = "onclick"; + + /** + * Constructs the behavior. + * @param aMsg Confirmation message. + */ + public OnClickConfirmationBehavior(String aMsg) { + this(new Model(aMsg)); + } + + /** + * Constructs the behavior. + * @param aMsgModel Confirmation message. + */ + public OnClickConfirmationBehavior(IModel aMsgModel) { + super(ATTRIBUTE, true, aMsgModel); + } + + @Override + protected String newValue(String aCurrentValue, String aReplacementValue) { + String value = "var conf = confirm('" + aReplacementValue + "'); " + + "if (!conf) return false; "; + if (aCurrentValue != null) { + return value + aCurrentValue; + } + return value; + } + +} diff --git a/wicket/components/src/test/java/org/wamblee/wicket/MyPage.java b/wicket/components/src/test/java/org/wamblee/wicket/MyPage.java index da2faad0..f67b5bc4 100644 --- a/wicket/components/src/test/java/org/wamblee/wicket/MyPage.java +++ b/wicket/components/src/test/java/org/wamblee/wicket/MyPage.java @@ -1,8 +1,11 @@ package org.wamblee.wicket; +import org.apache.wicket.Component; import org.apache.wicket.markup.html.WebPage; import org.apache.wicket.markup.html.basic.Label; +import org.apache.wicket.markup.html.form.Button; import org.apache.wicket.markup.html.form.Form; +import org.apache.wicket.markup.html.form.validation.IFormValidator; public class MyPage extends WebPage { @@ -13,9 +16,15 @@ public class MyPage extends WebPage { form = new Form("form"); label = new Label("label"); add(form); + form.add(createButton("submit")); + add(label); } + protected Component createButton(String aId) { + return new Button(aId); + } + public Form getForm() { return form; } diff --git a/wicket/components/src/test/java/org/wamblee/wicket/behavior/OnClickConfirmationBehaviorTest.java b/wicket/components/src/test/java/org/wamblee/wicket/behavior/OnClickConfirmationBehaviorTest.java new file mode 100644 index 00000000..0a2098e5 --- /dev/null +++ b/wicket/components/src/test/java/org/wamblee/wicket/behavior/OnClickConfirmationBehaviorTest.java @@ -0,0 +1,58 @@ +/* + * Copyright 2005-2011 the original author or authors. + * + * Licensed 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.wamblee.wicket.behavior; + +import static junit.framework.Assert.*; + +import org.apache.wicket.Component; +import org.apache.wicket.util.tester.WicketTester; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.wamblee.wicket.MyPage; +import org.wamblee.wicket.jquery.JQueryHeaderContributor; + +public class OnClickConfirmationBehaviorTest { + private WicketTester wicket; + + @Before + public void setUp() { + wicket = new WicketTester(); + } + + @After + public void tearDown() { + wicket.destroy(); + } + + @Test + public void testRenderWithMsgString() { + MyPage page = new MyPage() { + @Override + protected Component createButton(String aId) { + return super.createButton(aId).add( + new OnClickConfirmationBehavior("Are you sure?")); + } + }; + page.getForm().add(new PreselectionBehavior()); + wicket.startPage(page); + wicket.assertRenderedPage(page.getClass()); + // assertTrue(wicket.getServletResponse().getDocument().contains(NamespaceBehavior.NAMESPACE_SCRIPT)); + String doc = wicket.getServletResponse().getDocument(); + System.out.println(doc); + assert(doc.contains("onclick=\"var conf = confirm('Are you sure?');")); + } +} diff --git a/wicket/components/src/test/resources/org/wamblee/wicket/MyPage.html b/wicket/components/src/test/resources/org/wamblee/wicket/MyPage.html index 2a7eebc0..af72f744 100644 --- a/wicket/components/src/test/resources/org/wamblee/wicket/MyPage.html +++ b/wicket/components/src/test/resources/org/wamblee/wicket/MyPage.html @@ -9,7 +9,8 @@ My Test Page
-
+ + text