Author: ivaynberg
Date: Mon Dec 11 10:28:26 2006
New Revision: 485790

URL: http://svn.apache.org/viewvc?view=rev&rev=485790
Log:
WICKET-115: Example using RefreshingView in a form: contacts editor

Added:
    
incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/repeater/FormPage$ActionPanel.html
    
incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/repeater/FormPage.html
    
incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/repeater/FormPage.java
Modified:
    
incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/ajax/builtin/FormPage.java
    
incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/compref/CheckBoxMultipleChoicePage.java
    
incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/compref/SelectPage.java
    
incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/forminput/FormInput.java
    
incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/library/EditBook.java
    
incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/linkomatic/Home.java
    
incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/panels/signin/SignInPanel.java
    
incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/repeater/BasePage.java
    
incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/repeater/Index.html
    
incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/signin/SignIn.java
    
incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/upload/UploadPage.java

Modified: 
incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/ajax/builtin/FormPage.java
URL: 
http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/ajax/builtin/FormPage.java?view=diff&rev=485790&r1=485789&r2=485790
==============================================================================
    (empty)

Modified: 
incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/compref/CheckBoxMultipleChoicePage.java
URL: 
http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/compref/CheckBoxMultipleChoicePage.java?view=diff&rev=485790&r1=485789&r2=485790
==============================================================================
    (empty)

Modified: 
incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/compref/SelectPage.java
URL: 
http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/compref/SelectPage.java?view=diff&rev=485790&r1=485789&r2=485790
==============================================================================
    (empty)

Modified: 
incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/forminput/FormInput.java
URL: 
http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/forminput/FormInput.java?view=diff&rev=485790&r1=485789&r2=485790
==============================================================================
    (empty)

Modified: 
incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/library/EditBook.java
URL: 
http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/library/EditBook.java?view=diff&rev=485790&r1=485789&r2=485790
==============================================================================
    (empty)

Modified: 
incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/linkomatic/Home.java
URL: 
http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/linkomatic/Home.java?view=diff&rev=485790&r1=485789&r2=485790
==============================================================================
    (empty)

Modified: 
incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/panels/signin/SignInPanel.java
URL: 
http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/panels/signin/SignInPanel.java?view=diff&rev=485790&r1=485789&r2=485790
==============================================================================
    (empty)

Modified: 
incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/repeater/BasePage.java
URL: 
http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/repeater/BasePage.java?view=diff&rev=485790&r1=485789&r2=485790
==============================================================================
--- 
incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/repeater/BasePage.java
 (original)
+++ 
incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/repeater/BasePage.java
 Mon Dec 11 10:28:26 2006
@@ -1,6 +1,7 @@
 /*
- * $Id$ $Revision$
- * $Date$
+ * $Id: BasePage.java 460884 2006-06-02 15:15:55 -0700 (Fri, 02 Jun 2006)
+ * jdonnerstag $ $Revision$ $Date: 2006-06-02 15:15:55 -0700 (Fri, 02
+ * Jun 2006) $
  * 
  * ==================================================================== 
Licensed
  * under the Apache License, Version 2.0 (the "License"); you may not use this
@@ -23,6 +24,7 @@
 import wicket.markup.html.panel.Panel;
 import wicket.model.IModel;
 import wicket.model.PropertyModel;
+import wicket.version.undo.Change;
 
 /**
  * Base page for component demo pages.
@@ -82,4 +84,26 @@
                        };
                }
        }
+
+       /**
+        * @param selected
+        *            the selected to set
+        */
+       public void setSelected(Contact selected)
+       {
+               addStateChange(new Change()
+               {
+                       private final Contact old = BasePage.this.selected;
+
+                       @Override
+                       public void undo()
+                       {
+                               BasePage.this.selected = old;
+                       }
+
+               });
+               this.selected = selected;
+       }
+
+
 }

Added: 
incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/repeater/FormPage$ActionPanel.html
URL: 
http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/repeater/FormPage%24ActionPanel.html?view=auto&rev=485790
==============================================================================
--- 
incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/repeater/FormPage$ActionPanel.html
 (added)
+++ 
incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/repeater/FormPage$ActionPanel.html
 Mon Dec 11 10:28:26 2006
@@ -0,0 +1,4 @@
+<wicket:panel>
+<a href="#" wicket:id="select">select</a>
+<a href="#" wicket:id="remove">remove</a>
+</wicket:panel>

Added: 
incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/repeater/FormPage.html
URL: 
http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/repeater/FormPage.html?view=auto&rev=485790
==============================================================================
--- 
incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/repeater/FormPage.html
 (added)
+++ 
incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/repeater/FormPage.html
 Mon Dec 11 10:28:26 2006
@@ -0,0 +1,28 @@
+<wicket:extend>
+
+This page allows to edit the entries in the address book shown in 
« RefreshingView Example ».  It illustrates using a
+RefreshingView in a form, with a <tt>remove</tt> link along with each item.
+<br/><br/>
+
+<form wicket:id="form">
+<table cellspacing="0" class="dataview">
+       <tr>
+               <th>Actions</th>
+               <th>ID</th>
+               <th>First Name</th>
+               <th>Last Name</th>
+               <th>Home Phone</th>
+               <th>Cell Phone</th>
+       </tr>
+       <tr wicket:id="simple">
+               <td><span wicket:id="actions">[actions]</span></td>
+               <td><input type="text" wicket:id="id">[contactid]</input> </td>
+               <td><input type="text" 
wicket:id="firstName">[firstname]</input></td>
+               <td><input type="text" 
wicket:id="lastName">[lastname]</input></td>
+               <td><input type="text" 
wicket:id="homePhone">[homephone]</input></td>
+               <td><input type="text" 
wicket:id="cellPhone">[cellphone]</input></td>
+       </tr>
+</table>
+</form>
+
+</wicket:extend>

Added: 
incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/repeater/FormPage.java
URL: 
http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/repeater/FormPage.java?view=auto&rev=485790
==============================================================================
--- 
incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/repeater/FormPage.java
 (added)
+++ 
incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/repeater/FormPage.java
 Mon Dec 11 10:28:26 2006
@@ -0,0 +1,145 @@
+/*
+ * $Id$ $Revision: 460265 $ $Date: 2006-04-16 15:36:52 +0200 (Dim, 16 avr 
2006) $
+ * 
+ * ==================================================================== 
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 wicket.examples.repeater;
+
+import java.util.Iterator;
+
+import wicket.MarkupContainer;
+import wicket.extensions.markup.html.repeater.refreshing.Item;
+import wicket.extensions.markup.html.repeater.refreshing.OddEvenItem;
+import wicket.extensions.markup.html.repeater.refreshing.RefreshingView;
+import 
wicket.extensions.markup.html.repeater.refreshing.ReuseIfModelsEqualStrategy;
+import wicket.extensions.markup.html.repeater.util.ModelIteratorAdapter;
+import wicket.markup.html.form.Form;
+import wicket.markup.html.form.SubmitLink;
+import wicket.markup.html.form.TextField;
+import wicket.markup.html.link.Link;
+import wicket.markup.html.panel.Panel;
+import wicket.model.IModel;
+import wicket.model.PropertyModel;
+
+/**
+ * Page that demonstrates using RefreshingView in a form. The component reuses
+ * its items, to allow adding or removing rows without necessarily validating
+ * the form, and preserving component state which preserves error messages, 
etc.
+ */
+public class FormPage extends BasePage
+{
+       final Form form;
+
+       /**
+        * constructor
+        */
+       public FormPage()
+       {
+               form = new Form(this, "form");
+
+               // create a repeater that will display the list of contacts.
+               RefreshingView<Contact> refreshingView = new 
RefreshingView<Contact>(form, "simple")
+               {
+                       @Override
+                       protected Iterator<IModel<Contact>> getItemModels()
+                       {
+                               // for simplicity we only show the first 10 
contacts
+                               Iterator<Contact> contacts = 
DatabaseLocator.getDatabase().find(0, 10, "firstName",
+                                               true).iterator();
+
+                               // the iterator returns contact objects, but we 
need it to
+                               // return models, we use this handy adapter 
class to perform
+                               // on-the-fly conversion.
+                               return new 
ModelIteratorAdapter<Contact>(contacts)
+                               {
+
+                                       protected IModel<Contact> model(Contact 
object)
+                                       {
+                                               return new 
DetachableContactModel(object);
+                                       }
+
+                               };
+
+                       }
+
+                       @SuppressWarnings("unchecked")
+                       @Override
+                       protected void populateItem(final Item<Contact> item)
+                       {
+                               // populate the row of the repeater
+                               IModel contact = item.getModel();
+                               new ActionPanel(item, "actions", contact);
+                               // FIXME use CompoundPropertyModel!
+                               new TextField(item, "id", new 
PropertyModel(contact, "id"));
+                               new TextField(item, "firstName", new 
PropertyModel(contact, "firstName"));
+                               new TextField(item, "lastName", new 
PropertyModel(contact, "lastName"));
+                               new TextField(item, "homePhone", new 
PropertyModel(contact, "homePhone"));
+                               new TextField(item, "cellPhone", new 
PropertyModel(contact, "cellPhone"));
+                       }
+
+                       @Override
+                       protected Item<Contact> newItem(MarkupContainer parent, 
String id, int index,
+                                       IModel<Contact> model)
+                       {
+                               // this item sets markup class attribute to 
either 'odd' or
+                               // 'even' for decoration
+                               return new OddEvenItem<Contact>(parent, id, 
index, model);
+                       }
+
+               };
+
+               // because we are in a form we need to preserve state of the 
component
+               // hierarchy (because it might contain things like form errors 
that
+               // would be lost if the hierarchy for each item was recreated 
every
+               // request by default), so we use an item reuse strategy.
+               
refreshingView.setItemReuseStrategy(ReuseIfModelsEqualStrategy.getInstance());
+       }
+
+       /**
+        * Panel that houses row-actions
+        */
+       class ActionPanel extends Panel
+       {
+               /**
+                * @param parent
+                * @param id
+                *            component id
+                * @param model
+                *            model for contact
+                */
+               public ActionPanel(MarkupContainer parent, String id, IModel 
model)
+               {
+                       super(parent, id, model);
+                       new Link(this, "select")
+                       {
+                               @Override
+                               public void onClick()
+                               {
+                                       
FormPage.this.setSelected((Contact)getParent().getModelObject());
+                               }
+                       };
+
+                       SubmitLink removeLink = new SubmitLink(this, "remove", 
form)
+                       {
+                               public void onSubmit()
+                               {
+                                       Contact contact = 
(Contact)getParent().getModelObject();
+                                       info("Removed contact " + contact);
+                                       
DatabaseLocator.getDatabase().delete(contact);
+                               }
+                       };
+                       removeLink.setDefaultFormProcessing(false);
+               }
+       }
+}

Modified: 
incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/repeater/Index.html
URL: 
http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/repeater/Index.html?view=diff&rev=485790&r1=485789&r2=485790
==============================================================================
--- 
incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/repeater/Index.html
 (original)
+++ 
incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/repeater/Index.html
 Mon Dec 11 10:28:26 2006
@@ -6,6 +6,7 @@
 <wicket:link>
 <a href="RepeatingPage.html">RepeatingView Example - basic example of a 
repeater</a><br/>
 <a href="RefreshingPage.html">RefreshingView Example - basic view that 
recreates its items every request</a><br/>
+<a href="FormPage.html">Contacts Editor - based on the previous example, but 
with editable values.</a><br/>
 <a href="SimplePage.html">Simple DataView Example - simple example of a 
dataview</a><br/>
 <a href="PagingPage.html">Paging DataView Example - builds on previous to 
demonstrate paging and page navigation</a><br/>
 <a href="SortingPage.html">Sorting DataView Example - builds on previous to 
demonstrate sorting</a><br/>

Modified: 
incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/signin/SignIn.java
URL: 
http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/signin/SignIn.java?view=diff&rev=485790&r1=485789&r2=485790
==============================================================================
    (empty)

Modified: 
incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/upload/UploadPage.java
URL: 
http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/upload/UploadPage.java?view=diff&rev=485790&r1=485789&r2=485790
==============================================================================
    (empty)


Reply via email to