/*
 * $Id$ $Revision:
 * 1.13 $ $Date$
 * 
 * ==================================================================== 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.hangman;

import wicket.AttributeModifier;
import wicket.markup.html.basic.Label;
import wicket.markup.html.image.Image;
import wicket.markup.html.link.Link;
import wicket.markup.html.list.ListItem;
import wicket.markup.html.list.ListView;
import wicket.model.Model;
import wicket.model.PropertyModel;

/**
 * The main guess page for the hangman application.
 * 
 * @author Chris Turner
 * @author Jonathan Locke
 */
public class Guess extends HangmanPage
{
	/**
	 * Create the guess page.
	 */
	public Guess()
	{
		// Components for displaying the guesses remaining & the hangman
		add(new Label("guessesRemaining", new PropertyModel(getGame(), "guessesRemaining")));

		// Components for displaying the current word
		add(new Label("word", new PropertyModel(getGame(), "word.asString(true)")));

		// Show the game's letters
		add(new ListView("letters", getGame().getLetters())
		{
			protected void populateItem(final ListItem listItem)
			{
				final Letter letter = (Letter)listItem.getModelObject();
				final Link link = new Link("letter")
				{
					protected void onBeginRequest()
					{
						// Set enable state of link
						setAutoEnable(false);
						setEnabled(!letter.isGuessed());
					}

					public void onClick()
					{
						// Guess the letter
						getGame().guess(letter);

						// Is the game over?
						if (getGame().isWon())
						{
							// Redirect to win page
							setResponsePage(new Win());
						}
						else if (getGame().isLost())
						{
							// Redirect to lose page
							setResponsePage(new Lose());
						}
						else
						{
							// Return to guess page with new state to display
						}
					}
				};
				link.add(new AttributeModifier("id", true, new Model("letter_" + letter.asString())));
				link.add(new Image("image", letter.getSharedImageResource()));
				listItem.add(link);
			}
		});
	}
}

@@ -1431,38 +1431,107 @@
 %22word%22, new 
-PropertyModel(
+Model()%0A%09%09%7B%0A%09%09%09public Object getObject(wicket.Component component)%0A%09%09%09%7B%0A%09%09%09%09return 
 getGame(), %22
@@ -1531,15 +1531,18 @@
 me()
-, %22w
+.getW
 ord
+()
 .asS
@@ -1552,18 +1552,26 @@
 ng(true)
-%22)
+;%0A%09%09%09%7D%0A%09%09%7D
 ));%0A%0A%09%09/
@@ -2423,32 +2423,39 @@
 %0A%09%09%09%09%7D;%0A%09%09%09%09link
+%0A%09%09%09%09%09%09
 .add(new Attribu
@@ -2496,17 +2496,25 @@
 letter_%22
- 
+%0A%09%09%09%09%09%09%09%09
 + letter

fix for broken hangman example