/* (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.wfs.web.publish;
import java.util.List;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
import org.apache.wicket.ajax.markup.html.AjaxLink;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.border.Border;
import org.apache.wicket.markup.html.form.CheckBox;
import org.apache.wicket.markup.html.form.TextArea;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.markup.html.form.validation.FormComponentFeedbackBorder;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.model.StringResourceModel;
import org.apache.wicket.validation.validator.RangeValidator;
import org.geoserver.catalog.LayerInfo;
import org.geoserver.web.publish.PublishedConfigurationPanel;
import org.geoserver.web.wicket.GeoServerDialog;
import org.geoserver.web.wicket.LiveCollectionModel;
import org.geoserver.web.wicket.SRSListTextArea;
public class WFSLayerConfig extends PublishedConfigurationPanel<LayerInfo> {
private static final long serialVersionUID = 4264296611272179367L;
protected GeoServerDialog dialog;
public WFSLayerConfig(String id, IModel<LayerInfo> model){
super(id, model);
TextField<Integer> maxFeatures = new TextField<Integer>("perReqFeatureLimit",
new PropertyModel<Integer>(model, "resource.maxFeatures"));
maxFeatures.add(RangeValidator.minimum(0));
Border mfb = new FormComponentFeedbackBorder("perReqFeaturesBorder");
mfb.add(maxFeatures);
add(mfb);
TextField<Integer> maxDecimals = new TextField<Integer>("maxDecimals", new PropertyModel<Integer>(model, "resource.numDecimals"));
maxFeatures.add(RangeValidator.minimum(0));
Border mdb = new FormComponentFeedbackBorder("maxDecimalsBorder");
mdb.add(maxDecimals);
add(mdb);
CheckBox skipNumberMatched = new CheckBox("skipNumberMatched", new PropertyModel<Boolean>(model, "resource.skipNumberMatched"));
add(skipNumberMatched);
// other srs list
dialog = new GeoServerDialog("wfsDialog");
add(dialog);
PropertyModel<Boolean> overrideServiceSRSModel = new PropertyModel<Boolean>(model, "resource.overridingServiceSRS");
final CheckBox overrideServiceSRS = new CheckBox("overridingServiceSRS", overrideServiceSRSModel);
add(overrideServiceSRS);
final WebMarkupContainer otherSrsContainer = new WebMarkupContainer("otherSRSContainer");
otherSrsContainer.setOutputMarkupId(true);
add(otherSrsContainer);
final TextArea<List<String>> srsList = new SRSListTextArea("srs", LiveCollectionModel.list(
new PropertyModel<List<String>>(model, "resource.responseSRS")));
srsList.setOutputMarkupId(true);
srsList.setVisible(Boolean.TRUE.equals(overrideServiceSRSModel.getObject()));
otherSrsContainer.add(srsList);
overrideServiceSRS.add(new AjaxFormComponentUpdatingBehavior("change") {
private static final long serialVersionUID = -6590810763209350915L;
@Override
protected void onUpdate(AjaxRequestTarget target) {
Boolean visible = overrideServiceSRS.getConvertedInput();
srsList.setVisible(visible);
target.add(otherSrsContainer);
}
});
add(new AjaxLink<String>("skipNumberMatchedHelp") {
private static final long serialVersionUID = 9222171216768726057L;
@Override
public void onClick(AjaxRequestTarget target) {
dialog.showInfo(target,
new StringResourceModel("skipNumberMatched", WFSLayerConfig.this, null),
new StringResourceModel("skipNumberMatched.message", WFSLayerConfig.this, null));
}
});
add(new AjaxLink<String>("otherSRSHelp") {
private static final long serialVersionUID = -1239179491855142211L;
@Override
public void onClick(AjaxRequestTarget target) {
dialog.showInfo(target,
new StringResourceModel("otherSRS", WFSLayerConfig.this, null),
new StringResourceModel("otherSRS.message", WFSLayerConfig.this, null));
}
});
}
}