/*
 * 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.examples.compref;

import java.util.Date;

import org.apache.wicket.examples.WicketExamplePage;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.StringResourceModel;


/**
 * Page with examples on {@link org.apache.wicket.markup.html.basic.Label}.
 * 
 * @author Eelco Hillenius
 */
public class LabelPage extends WicketExamplePage
{
	/**
	 * Constructor
	 */
	public LabelPage()
	{
		// add a static label
		add(new Label("staticLabel", "static text"));

		// add a dynamic label. For this example, we create an anonymous subclass
		// of IModel that returns a new java.util.Date on each invocation
		add(new Label("dynamicLabel", Date::new));

		// add a label with a model that gets its display text from a resource
		// bundle
		// (which is in this case LabelPage.properties)
		// We use key 'label.current.locale' and provide a the current locale
		// for
		// parameter substitution.
		StringResourceModel stringResourceModel = new StringResourceModel("label.current.locale",
			this).setParameters(getLocale());
		add(new Label("resourceLabel", stringResourceModel));

		// and here we add a label that contains markup. Normally, this markup
		// would be converted
		// to HTML escape characters so that e.g. a & really displays as that
		// literal char without
		// our browser trying to resolve it to an HTML entity. But it this case
		// we actually want
		// our browser to interpret it as real markup, so we set the
		// escapeModelString property
		// to false
		Label markupLabel = new Label("markupLabel",
			"now <i>that</i> is a pretty <b>bold</b> statement!");
		markupLabel.setEscapeModelStrings(false);
		add(markupLabel);
	}

	/**
	 * Override base method to provide an explanation
	 */
	@Override
	protected void explain()
	{
		String html = "<span wicket:id=\"markupLabel\" class=\"mark\">this text will be replaced</span>";
		String code = "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Label markupLabel = new Label(\"markupLabel\", \"now &lt;i&gt;that&lt;/i&gt; is a pretty &lt;b&gt;bold&lt;/b&gt; statement!\");\n"
			+ "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;markupLabel.setEscapeModelStrings(false);\n"
			+ "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;add(markupLabel);";
		add(new ExplainPanel(html, code));

	}
}
