/*
* Copyright 2009 Rodrigo Reyes reyes.rr at gmail dot com
*
* 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 net.kornr.swit.site;
import java.awt.Color;
import java.awt.Font;
import java.awt.GradientPaint;
import java.awt.geom.Point2D;
import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;
import net.kornr.swit.button.AmazonianButton;
import net.kornr.swit.button.ButtonResource;
import net.kornr.swit.button.ButtonTemplate;
import net.kornr.swit.button.SoftShiningButton;
import net.kornr.swit.button.VistafarianButton;
import net.kornr.swit.button.WebTwoButton;
import net.kornr.swit.button.effect.AutoClip;
import net.kornr.swit.button.effect.Rotate;
import net.kornr.swit.button.effect.ShadowBorder;
import net.kornr.swit.button.effect.VerticalMirror;
import net.kornr.swit.site.buttoneditor.ButtonEditor;
import net.kornr.swit.site.jquery.JQuery;
import net.kornr.swit.site.jquery.tools.JQueryTools;
import net.kornr.swit.wicket.border.ImageBorder;
import net.kornr.swit.wicket.border.TableImageBorder;
import net.kornr.swit.wicket.border.graphics.GenericShadowBorder;
import net.kornr.swit.wicket.border.graphics.GfxEffects;
import net.kornr.swit.wicket.border.graphics.GlossyRoundedBorderMaker;
import net.kornr.swit.wicket.border.graphics.MarginBorder;
import net.kornr.swit.wicket.border.graphics.RoundedBorderMaker;
import net.kornr.swit.wicket.border.graphics.SizedBorder;
import net.kornr.swit.wicket.layout.ColumnPanel;
import net.kornr.swit.wicket.layout.LayoutInfo;
import net.kornr.swit.wicket.layout.threecol.ThreeColumnsLayoutBorderFixed;
import net.kornr.swit.wicket.layout.threecol.ThreeColumnsLayoutBorderPc;
import net.kornr.swit.wicket.layout.threecol.ThreeColumnsLayoutResource;
import org.apache.wicket.PageParameters;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.border.Border;
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
import org.apache.wicket.markup.html.panel.Fragment;
import org.apache.wicket.markup.html.IHeaderContributor;
import org.apache.wicket.markup.html.IHeaderResponse;
import org.apache.wicket.markup.html.WebPage;
/**
* Homepage
*/
public class HomePage extends BasePage implements IHeaderContributor
{
private static final long serialVersionUID = 1L;
static private WebTwoButton s_disclaimerButton = new WebTwoButton();
//
// We use a lot of buttons on this page
//
static private ButtonTemplate s_button1 = new VistafarianButton();
static private AmazonianButton s_button2 = new AmazonianButton();
static private ButtonTemplate s_button3 = new WebTwoButton();
static private ButtonTemplate s_button4 = new SoftShiningButton();
static private VistafarianButton s_button5 = new net.kornr.swit.button.VistafarianButton();
static private WebTwoButton s_button6 = new WebTwoButton();
static {
s_disclaimerButton.setFont(new Font("Monospaced", Font.BOLD, 18));
s_disclaimerButton.setShadowDisplayed(Boolean.TRUE);
s_disclaimerButton.setBaseColor(new Color(0x961313));
s_disclaimerButton.setTextTransform(ButtonTemplate.TEXT_TRANSFORM_ALLCAPS);
s_button1.setFont(new Font("Arial", Font.BOLD|Font.ITALIC, 48));
s_button2.setFont(new Font("Courier", Font.BOLD|Font.ITALIC, 26));
s_button3.setFont(new Font("Verdana", 0, 32));
s_button4.setFont(new Font("Serif", 0, 24));
s_button2.setRightHanded(true);
s_button1.setShadowDisplayed(true);
s_button3.setShadowDisplayed(true);
s_button4.setShadowDisplayed(true);
s_button1.addEffect(new ShadowBorder(6, 2, 2, Color.black)).addEffect(new AutoClip());
s_button2.addEffect(new ShadowBorder(4, 0, 0, new Color(0x666633))).addEffect(new AutoClip());
s_button3.addEffect(new VerticalMirror(0.6f, 0.6f)).addEffect(new AutoClip());
s_button4.addEffect(new ShadowBorder(12, 0, 0, new Color(0xAABB00))).addEffect(new AutoClip());
s_button4.addEffect(new Rotate(Math.PI/24)).addEffect(new AutoClip());
s_button4.setFontColor(Color.blue);
s_button5.setFont(new Font("Courier", Font.BOLD, 38));
s_button5.setTextTransform(VistafarianButton.TEXT_TRANSFORM_ALLCAPS);
s_button5.setBaseColor(new Color(0xCC99AA));
s_button5.setShadowDisplayed(true);
s_button6.setFont(new Font("Verdana", 0, 32));
s_button6.setBaseColor(new Color(0x3399AA));
s_button6.setShadowDisplayed(true);
s_button6.addEffect(new ShadowBorder(4, 0, 0, Color.black));
}
// Wow, that's a lot of borders
static private Long s_border1 = RoundedBorderMaker.register(24, 4.5f, new Color(0xC5,0xC5,0xC5), new Color(0xF8,0xf8,0xf7));
static private Long s_border2 = RoundedBorderMaker.register(20, 6, new Color(0xFFDD88), new Color(0xdaeaef));
static private Long s_shadowborder2 = GenericShadowBorder.register(s_border2, 0, 0, 8f, new Color(0xF8F8F7), Color.black);
static private Long s_border3 = RoundedBorderMaker.register(20, 5, new Color(0xFFAAAA), Color.white);
static private Long s_shadowborder3 = GenericShadowBorder.register(s_border3, 3, 3, 5f, new Color(0xdaeaef), GfxEffects.adjustBrightness(new Color(0xdaeaef), 0.7f));
static private Long s_border4 = GlossyRoundedBorderMaker.register(8, 20, new Color(0xFFDD88), new Color(0xFFFFFF));
static private Long s_shadowborder4 = GenericShadowBorder.register(s_border4, 0, 0, 6f, new Color(0xdaeaef), GfxEffects.adjustBrightness(new Color(0xdaeaef), 0.2f));
static private DateFormat s_dateFormatter = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.MEDIUM, Locale.US);
static private LayoutInfo s_layout1 = new LayoutInfo(LayoutInfo.UNIT_PIXEL, 100, 100);
static private LayoutInfo s_layout2 = new LayoutInfo(LayoutInfo.UNIT_PERCENTAGE, 33, 33);
static {
ThreeColumnsLayoutResource.register(s_layout1);
ThreeColumnsLayoutResource.register(s_layout2);
}
/**
* Constructor that is invoked when page is invoked without a session.
*
* @param parameters
* Page parameters
*/
public HomePage(final PageParameters parameters) {
this.innerAdd(ButtonResource.getImage("graphics-disclaimer", s_disclaimerButton, "No Graphic Artists Were Hurt In the Process Of Making This Page!"));
this.innerAdd(ButtonResource.getImage("button1", s_button1, "Swit can"));
this.innerAdd(ButtonResource.getImage("button2", s_button2, "dynamically generate"));
this.innerAdd(ButtonResource.getImage("button3", s_button3, "the finest buttons"));
this.innerAdd(ButtonResource.getImage("button4", s_button4, " (for free) !!"));
this.innerAdd(ButtonResource.getImage("button5", s_button5, "Ain't it great ?"));
Border border1 = new TableImageBorder("border1", s_border1, new Color(0xF8,0xf8,0xf7));
this.innerAdd(border1);
Border border2 = new TableImageBorder("border2", s_shadowborder2, new Color(0xdaeaef)); // ImageBorder.createFromBorder("border2", s_margin, 600, 600);
border1.add(border2);
border2.add(new TableImageBorder("border3", s_shadowborder3, Color.white));
border2.add(new TableImageBorder("border4", s_shadowborder4, Color.white));
ThreeColumnsLayoutBorderFixed layout1;
this.innerAdd(layout1 = new ThreeColumnsLayoutBorderFixed("layout1", s_layout1));
ColumnPanel layout1left = layout1.getLeftColumn();
layout1left.addContent(this.createColumnElement(layout1.getLeftColumn(), "Some text"));
layout1left.addContent(this.createColumnElement(layout1.getLeftColumn(), "We can stack several elements on each columns"));
ColumnPanel layout1right = layout1.getRightColumn();
layout1right.addContent(this.createColumnElement(layout1.getRightColumn(), "Each columns can be dynamically hidden"));
layout1right.addContent(this.createColumnElement(layout1.getRightColumn(), "when hidden, the central column streches out to fill the empty space"));
LayoutInfo s_layout2temp = new LayoutInfo(LayoutInfo.UNIT_PERCENTAGE, 33, 33);
ThreeColumnsLayoutResource.register(s_layout2temp);
ThreeColumnsLayoutBorderPc layout2;
layout1.add(layout2 = new ThreeColumnsLayoutBorderPc("layout2", s_layout2temp));
ColumnPanel layout2left = layout2.getLeftColumn();
layout2left.addContent(this.createColumnElement(layout2.getLeftColumn(), "Yes, 33% only here!"));
layout2left.addContent(this.createColumnElement(layout2.getLeftColumn(), "And still stackable..."));
this.innerAdd(ButtonResource.getTemporaryImage("timebutton", s_button6, s_dateFormatter.format(new Date())));
}
private Fragment createColumnElement(ColumnPanel col, String text)
{
Fragment frag = new Fragment(col.getContentId(), "column-element", this);
frag.add(new Label("element", text));
return frag;
}
public void renderHead(IHeaderResponse response)
{
super.renderHead(response);
response.renderJavascriptReference(JQuery.getReference());
response.renderJavascriptReference(JQueryTools.getReference());
response.renderJavascript(JQuery.getOnReadyScript("$('ul.tabs').tabs('div.panes > div');"), null);
}
}