name.martingeisse.trading_game.platform.wicket.page.AbstractPage.java Source code

Java tutorial

Introduction

Here is the source code for name.martingeisse.trading_game.platform.wicket.page.AbstractPage.java

Source

/**
 * Copyright (c) 2010 Martin Geisse
 * <p>
 * This file is distributed under the terms of the MIT license.
 */

package name.martingeisse.trading_game.platform.wicket.page;

import name.martingeisse.trading_game.game.definition.GameDefinition;
import name.martingeisse.trading_game.game.player.Player;
import name.martingeisse.trading_game.game.space.Space;
import name.martingeisse.trading_game.platform.wicket.MyWicketApplication;
import name.martingeisse.trading_game.platform.wicket.MyWicketSession;
import org.apache.wicket.markup.head.CssHeaderItem;
import org.apache.wicket.markup.head.IHeaderResponse;
import org.apache.wicket.markup.head.JavaScriptHeaderItem;
import org.apache.wicket.markup.head.PriorityHeaderItem;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.model.AbstractReadOnlyModel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.request.resource.CssResourceReference;
import org.apache.wicket.request.resource.JavaScriptResourceReference;
import org.apache.wicket.request.resource.ResourceReference;
import org.apache.wicket.resource.JQueryResourceReference;

/**
 * This page base class includes common CSS and JS resources.
 */
public class AbstractPage extends WebPage {

    /**
     * Constructor.
     */
    public AbstractPage() {
        super();
    }

    /**
     * Constructor.
     *
     * @param model the page model
     */
    public AbstractPage(final IModel<?> model) {
        super(model);
    }

    /**
     * Constructor.
     *
     * @param parameters the page parameters
     */
    public AbstractPage(final PageParameters parameters) {
        super(parameters);
    }

    /* (non-Javadoc)
     * @see org.apache.wicket.Component#renderHead(org.apache.wicket.markup.head.IHeaderResponse)
     */
    @Override
    public void renderHead(IHeaderResponse response) {
        super.renderHead(response);
        response.render(new PriorityHeaderItem(JavaScriptHeaderItem.forReference(JQueryResourceReference.get())));
        response.render(new PriorityHeaderItem(
                CssHeaderItem.forReference(new CssResourceReference(AbstractPage.class, "common.css"))));
        response.render(new PriorityHeaderItem(JavaScriptHeaderItem
                .forReference(new JavaScriptResourceReference(AbstractPage.class, "bootstrap.js"))));
        response.render(new PriorityHeaderItem(JavaScriptHeaderItem
                .forReference(new JavaScriptResourceReference(AbstractPage.class, "jscookie.js"))));
        response.render(new PriorityHeaderItem(JavaScriptHeaderItem
                .forReference(new JavaScriptResourceReference(AbstractPage.class, "jquery.mousewheel.js"))));
        response.render(new PriorityHeaderItem(JavaScriptHeaderItem
                .forReference(new JavaScriptResourceReference(AbstractPage.class, "AbstractPage.js"))));
    }

    /**
     *
     */
    private void markJavascriptAlreadyRendered(IHeaderResponse response, ResourceReference reference) {
        JavaScriptHeaderItem jQueryHeaderItem = JavaScriptHeaderItem.forReference(reference);
        for (Object renderToken : jQueryHeaderItem.getRenderTokens()) {
            response.markRendered(renderToken);
        }
    }

    public final Space getSpace() {
        return MyWicketApplication.get().getDependency(Space.class);
    }

    public final GameDefinition getGameDefinition() {
        return MyWicketApplication.get().getDependency(GameDefinition.class);
    }

    public final IModel<GameDefinition> gameDefinitionModel() {
        return new AbstractReadOnlyModel<GameDefinition>() {
            @Override
            public GameDefinition getObject() {
                return getGameDefinition();
            }
        };
    }

    public final <T> IModel<T> gameDefinitionModel(String propertyPath) {
        return new PropertyModel<T>(gameDefinitionModel(), propertyPath);
    }

    public final Player getPlayer() {
        return MyWicketSession.get().getPlayer();
    }

}