org.apache.wicket.settings.PageSettings.java Source code

Java tutorial

Introduction

Here is the source code for org.apache.wicket.settings.PageSettings.java

Source

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

import java.util.List;

import org.apache.wicket.IRequestListener;
import org.apache.wicket.markup.resolver.IComponentResolver;
import org.apache.wicket.util.lang.Generics;

/**
 * Class for page related settings.
 *
 * @author Jonathan Locke
 * @author Chris Turner
 * @author Eelco Hillenius
 * @author Juergen Donnerstag
 * @author Johan Compagner
 * @author Igor Vaynberg (ivaynberg)
 * @author Martijn Dashorst
 * @author James Carman
 */
public class PageSettings {
    /** List of (static) ComponentResolvers */
    private final List<IComponentResolver> componentResolvers = Generics.newArrayList();

    /** Determines if pages should be managed by a version manager by default */
    private boolean versionPagesByDefault = true;

    /** determines if bookmarkable pages should be recreated after expiry */
    private boolean recreateBookmarkablePagesAfterExpiry = true;

    /**
     * determines whether an {@link IRequestListener} can be executed
     * when its owning page is freshly created after expiration
     */
    private boolean callListenerAfterExpiry = false;

    /**
     * Adds a component resolver to the list.
     *
     * @param resolver
     *            The {@link IComponentResolver} that is added
     * @return {@code this} object for chaining
     */
    public PageSettings addComponentResolver(IComponentResolver resolver) {
        componentResolvers.add(resolver);
        return this;
    }

    /**
     * Get the (modifiable) list of IComponentResolvers.
     *
     * @return List of ComponentResolvers
     */
    public List<IComponentResolver> getComponentResolvers() {
        return componentResolvers;
    }

    /**
     * @return whether all pages should should update their page id when their component hierarchy
     *      changes somehow
     */
    public boolean getVersionPagesByDefault() {
        return versionPagesByDefault;
    }

    /**
     * A global setting that tells the pages to update their page id if their component
     * hierarchy changes somehow. This way versioned pages can have several versions
     * stored in the page stores and the user can go back and forth through the different
     * versions. If a page is not versioned then only its last state is keep in the page
     * stores and going back will lead the user to the page before the current one, not
     * to the previous state of the current one.
     *
     * @param pagesVersionedByDefault
     *      a flag that indicates whether pages should increase their page id when
     *      their component hierarchy changes somehow.
     * @return {@code this} object for chaining
     */
    public PageSettings setVersionPagesByDefault(boolean pagesVersionedByDefault) {
        versionPagesByDefault = pagesVersionedByDefault;
        return this;
    }

    /**
     * When enabled (default), urls on mounted pages will contain the full mount path, including
     * PageParameters, allowing wicket to reinstantiate the page if got expired. When disabled, urls
     * only use the page id. If this setting is enabled, you should take care that names form fields
     * on mounted pages do not clash with the page parameters.
     *
     * @return if urls on mounted pages should be the full mount path
     * @see <a href="https://issues.apache.org/jira/browse/WICKET-4014">WICKET-4014</a>
     * @see <a href="https://issues.apache.org/jira/browse/WICKET-4290">WICKET-4290</a>
     */
    public boolean getRecreateBookmarkablePagesAfterExpiry() {
        return recreateBookmarkablePagesAfterExpiry;
    }

    /**
     * Sets the recreateBookmarkablePagesAfterExpiry setting
     *
     * @param recreateBookmarkablePagesAfterExpiry
     * @return {@code this} object for chaining
     */
    public PageSettings setRecreateBookmarkablePagesAfterExpiry(boolean recreateBookmarkablePagesAfterExpiry) {
        this.recreateBookmarkablePagesAfterExpiry = recreateBookmarkablePagesAfterExpiry;
        return this;
    }

    /**
     * @return {@code true} if Wicket should execute an {@link IRequestListener} on a component
     *      which owning page is freshly created after expiration of the old one
     * @see #getRecreateBookmarkablePagesAfterExpiry()
     * @see org.apache.wicket.request.component.IRequestableComponent#canCallListenerAfterExpiry()
     */
    public boolean getCallListenerAfterExpiry() {
        return recreateBookmarkablePagesAfterExpiry && callListenerAfterExpiry;
    }

    /**
     * Sets a setting that determines whether Wicket should execute the {@link IRequestListener} on a component
     * which owner page is freshly created after expiration of the old one
     *
     * @param callAfterExpiry
     *          {@code true} if Wicket should execute the listener
     * @see #setRecreateBookmarkablePagesAfterExpiry(boolean)
     * @see org.apache.wicket.request.component.IRequestableComponent#canCallListenerAfterExpiry()
     * @return {@code this} object for chaining
     */
    public PageSettings setCallListenerAfterExpiry(boolean callAfterExpiry) {
        this.callListenerAfterExpiry = callAfterExpiry;
        return this;
    }
}