/* Copyright (c) 2001 - 2007 TOPP - www.openplans.org. All rights reserved. * This code is licensed under the GPL 2.0 license, available at the root * application directory. */ package org.geoserver.wms.web.publish; import org.apache.wicket.Component; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.form.OnChangeAjaxBehavior; import org.apache.wicket.extensions.markup.html.form.palette.Palette; import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.form.CheckBox; import org.apache.wicket.markup.html.form.DropDownChoice; import org.apache.wicket.markup.html.form.TextField; import org.apache.wicket.markup.html.image.Image; import org.apache.wicket.model.IModel; import org.apache.wicket.model.PropertyModel; import org.apache.wicket.model.ResourceModel; import org.apache.wicket.validation.validator.NumberValidator; import org.geoserver.catalog.CoverageInfo; import org.geoserver.catalog.FeatureTypeInfo; import org.geoserver.catalog.LayerInfo; import org.geoserver.catalog.ResourceInfo; import org.geoserver.web.publish.LayerConfigurationPanel; import org.geoserver.web.util.MapModel; import org.geoserver.web.wicket.LiveCollectionModel; /** * Configures {@link LayerInfo} WMS specific attributes */ @SuppressWarnings("serial") public class WMSLayerConfig extends LayerConfigurationPanel { @SuppressWarnings({ "unchecked", "rawtypes" }) public WMSLayerConfig(String id, IModel layerModel) { super(id, layerModel); add(new CheckBox("queryableEnabled", new PropertyModel(layerModel,"queryable"))); // styles block container WebMarkupContainer styleContainer = new WebMarkupContainer("styles"); add(styleContainer); ResourceInfo resource = ((LayerInfo) layerModel.getObject()).getResource(); styleContainer.setVisible(resource instanceof CoverageInfo || resource instanceof FeatureTypeInfo); // default style chooser. A default style is required StylesModel styles = new StylesModel(); final PropertyModel defaultStyleModel = new PropertyModel(layerModel, "defaultStyle"); final DropDownChoice defaultStyle = new DropDownChoice("defaultStyle", defaultStyleModel, styles, new StyleChoiceRenderer()); defaultStyle.setRequired(true); styleContainer.add(defaultStyle); final Image defStyleImg = new Image("defaultStyleLegendGraphic"); defStyleImg.setOutputMarkupId(true); styleContainer.add(defStyleImg); String wmsURL = getRequest().getRelativePathPrefixToContextRoot(); wmsURL += wmsURL.endsWith("/")? "wms?" : "/wms?"; final LegendGraphicAjaxUpdater defaultStyleUpdater; defaultStyleUpdater = new LegendGraphicAjaxUpdater(wmsURL, defStyleImg, defaultStyleModel); defaultStyle.add(new OnChangeAjaxBehavior() { @Override protected void onUpdate(AjaxRequestTarget target) { defaultStyleUpdater.updateStyleImage(target); } }); // build a palette with no reordering allowed, since order doesn't affect anything IModel stylesModel = LiveCollectionModel.set(new PropertyModel(layerModel, "styles")); Palette extraStyles = new Palette("extraStyles", stylesModel, styles, new StyleNameRenderer(), 10, false) { /** * Override otherwise the header is not i18n'ized */ @Override public Component newSelectedHeader(final String componentId) { return new Label(componentId, new ResourceModel("ExtraStylesPalette.selectedHeader")); } /** * Override otherwise the header is not i18n'ized */ @Override public Component newAvailableHeader(final String componentId) { return new Label(componentId, new ResourceModel( "ExtraStylesPalette.availableHeader")); } }; styleContainer.add(extraStyles); TextField renderingBuffer = new TextField("renderingBuffer", new MapModel(new PropertyModel(layerModel, "metadata"), LayerInfo.BUFFER), Integer.class); renderingBuffer.add(NumberValidator.minimum(0)); styleContainer.add(renderingBuffer); add(new TextField("wmsPath", new PropertyModel(layerModel, "path"))); // authority URLs and identifiers for this layer LayerAuthoritiesAndIdentifiersPanel authAndIds; authAndIds = new LayerAuthoritiesAndIdentifiersPanel("authoritiesAndIds", false, layerModel); add(authAndIds); } }