/* (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.wms.eo.web;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.DropDownChoice;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.link.Link;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.util.convert.IConverter;
import org.geoserver.catalog.LayerGroupInfo;
import org.geoserver.catalog.LayerInfo;
import org.geoserver.catalog.StyleInfo;
import org.geoserver.catalog.WorkspaceInfo;
import org.geoserver.web.GeoServerApplication;
import org.geoserver.web.data.resource.ResourceConfigurationPage;
/**
* Allows to edit the Browse Image Layer
*/
@SuppressWarnings("serial")
public class BrowseImageLayerEntryPanel extends Panel {
private LayerInfo layer;
private StyleInfo layerStyle;
@SuppressWarnings({ "rawtypes" })
public BrowseImageLayerEntryPanel(String id, final Form form, WorkspaceInfo workspace) {
super(id);
setOutputMarkupId(true);
LayerGroupInfo group = (LayerGroupInfo) form.getModel().getObject();
layer = group.getRootLayer();
layerStyle = group.getRootLayerStyle();
Link link = new Link("rootLayer") {
@Override
public void onClick() {
PageParameters pp = new PageParameters();
if (layer.getResource().getStore().getWorkspace() != null) {
pp.add(ResourceConfigurationPage.WORKSPACE, layer.getResource().getStore().getWorkspace().getName());
}
pp.add(ResourceConfigurationPage.NAME, layer.getName());
setResponsePage(ResourceConfigurationPage.class, pp);
}
};
link.add(new Label("rootLayerName", new PropertyModel(layer, "name")));
add(link);
// global styles
List<StyleInfo> globalStyles = new ArrayList<StyleInfo>();
List<StyleInfo> allStyles = GeoServerApplication.get().getCatalog().getStyles();
for (StyleInfo s : allStyles) {
if (s.getWorkspace() == null) {
globalStyles.add(s);
}
}
// available styles
List<StyleInfo> styles = new ArrayList<StyleInfo>();
styles.addAll(globalStyles);
if (workspace != null) {
styles.addAll(GeoServerApplication.get().getCatalog().getStylesByWorkspace(workspace));
}
Collections.sort(styles, new StyleInfoNameComparator());
DropDownChoice<StyleInfo> styleField = new DropDownChoice<StyleInfo>("rootLayerStyle", new PropertyModel<StyleInfo>(this, "layerStyle"), styles) {
@Override
public <C> IConverter<C> getConverter(Class<C> type) {
return form.getConverter(type);
}
};
styleField.setNullValid(true);
add(styleField);
}
public void setLayer(LayerInfo layer) {
this.layer = layer;
}
public void setLayerStyle(StyleInfo layerStyle) {
this.layerStyle = layerStyle;
}
public LayerInfo getLayer() {
return layer;
}
public StyleInfo getLayerStyle() {
return layerStyle;
}
}