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)