/* (c) 2014 - 2016 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 org.apache.wicket.Page; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.model.IModel; import org.apache.wicket.model.PropertyModel; import org.apache.wicket.request.mapper.parameter.PageParameters; import org.geoserver.catalog.LayerGroupInfo; import org.geoserver.catalog.LayerInfo; import org.geoserver.catalog.PublishedInfo; 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; /** * 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(); PublishedInfo publishedInfo = geoserverTileLayer.getPublishedInfo(); if (publishedInfo instanceof LayerInfo) { ResourceConfigurationPage resourceConfigPage; resourceConfigPage = new ResourceConfigurationPage((LayerInfo) publishedInfo, 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 if (publishedInfo instanceof LayerGroupInfo) { LayerGroupInfo layerGroup = (LayerGroupInfo) publishedInfo; WorkspaceInfo workspace = layerGroup.getWorkspace(); String wsName = workspace == null ? null : workspace.getName(); PageParameters parameters = new PageParameters(); parameters.add(LayerGroupEditPage.GROUP, layerGroup.getName()); if (wsName != null) { parameters.add(LayerGroupEditPage.WORKSPACE, wsName); } LayerGroupEditPage layerGroupEditPage = new LayerGroupEditPage(parameters); if (returnPage != null) { layerGroupEditPage.setReturnPage(returnPage); } setResponsePage(layerGroupEditPage); } } }