Package org.geoserver.gwc.web.layer

Source Code of org.geoserver.gwc.web.layer.ConfigureCachedLayerAjaxLink

/* (c) 2014 Open Source Geospatial Foundation - all rights reserved
* (c) 2001 - 2013 OpenPlans
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/
package org.geoserver.gwc.web.layer;

import java.util.Collections;
import java.util.HashMap;
import java.util.Map;

import org.apache.wicket.Page;
import org.apache.wicket.PageParameters;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.PropertyModel;
import org.geoserver.catalog.LayerGroupInfo;
import org.geoserver.catalog.LayerInfo;
import org.geoserver.catalog.WorkspaceInfo;
import org.geoserver.gwc.layer.GeoServerTileLayer;
import org.geoserver.web.data.layergroup.LayerGroupEditPage;
import org.geoserver.web.data.resource.ResourceConfigurationPage;
import org.geoserver.web.wicket.SimpleAjaxLink;
import org.geowebcache.layer.TileLayer;

import com.google.common.collect.ImmutableMap;

/**
* A simple ajax link that links to the edit page for the given {@link GeoServerTileLayer} (that is,
* either to the layerinfo edit page or layergroup edit page, as appropriate)
*
*/
class ConfigureCachedLayerAjaxLink extends SimpleAjaxLink<TileLayer> {

    private static final long serialVersionUID = 1L;

    private Class<? extends Page> returnPage;

    /**
     * @param id
     *            component id
     * @param itemModel
     *            model over the tile layer to configure
     * @param returnPage
     *            which page to instruct the LayerInfo or LayerGroupInfo edit page to return to
     */
    public ConfigureCachedLayerAjaxLink(String id, IModel<TileLayer> itemModel,
            Class<? extends Page> returnPage) {
        super(id, itemModel, new PropertyModel<String>(itemModel, "name"));
        this.returnPage = returnPage;
    }

    @Override
    protected void onClick(AjaxRequestTarget target) {
        final TileLayer layer = getModelObject();
        if (!(layer instanceof GeoServerTileLayer)) {
            return;
        }
        final GeoServerTileLayer geoserverTileLayer = (GeoServerTileLayer) getModelObject();
        LayerInfo layerInfo = geoserverTileLayer.getLayerInfo();
        if (layerInfo != null) {
            ResourceConfigurationPage resourceConfigPage;
            resourceConfigPage = new ResourceConfigurationPage(layerInfo, false);
            // tell the resource/layer edit page to start up on the tile cache tab
            resourceConfigPage.setSelectedTab(LayerCacheOptionsTabPanel.class);
            if (returnPage != null) {
                resourceConfigPage.setReturnPage(returnPage);
            }
            setResponsePage(resourceConfigPage);
        } else {
            LayerGroupInfo layerGroup = geoserverTileLayer.getLayerGroupInfo();
            WorkspaceInfo workspace = layerGroup.getWorkspace();
            String wsName = workspace == null ? null : workspace.getName();
            Map<String, String> params = new HashMap<String, String>();
            params.put(LayerGroupEditPage.GROUP, layerGroup.getName());
            params.put(LayerGroupEditPage.WORKSPACE, wsName);
            PageParameters parameters = new PageParameters(params);
            LayerGroupEditPage layerGroupEditPage = new LayerGroupEditPage(parameters);
            if (returnPage != null) {
                layerGroupEditPage.setReturnPage(returnPage);
            }
            setResponsePage(layerGroupEditPage);
        }
    }
}
TOP

Related Classes of org.geoserver.gwc.web.layer.ConfigureCachedLayerAjaxLink

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.