package org.geoserver.web.data.resource; import java.io.Serializable; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; import org.apache.wicket.Component; import org.apache.wicket.markup.html.list.ListItem; import org.apache.wicket.markup.html.list.ListView; import org.apache.wicket.model.IModel; import org.apache.wicket.model.PropertyModel; import org.geoserver.catalog.CoverageInfo; import org.geoserver.web.data.store.panel.ColorPickerPanel; import org.geoserver.web.data.store.panel.TextParamPanel; import org.geoserver.web.util.MapModel; /** * A configuration panel for CoverageInfo properties that related to WCS publication * @author Andrea Aime - OpenGeo * */ @SuppressWarnings("serial") public class CoverageResourceConfigurationPanel extends ResourceConfigurationPanel { public CoverageResourceConfigurationPanel(final String panelId, final IModel model){ super(panelId, model); final CoverageInfo coverage = (CoverageInfo) getResourceInfo(); final Map<String, Serializable> parameters = coverage.getParameters(); List<String> keys = new ArrayList<String>(parameters.keySet()); Collections.sort(keys); final IModel paramsModel = new PropertyModel(model, "parameters"); ListView paramsList = new ListView("parameters", keys) { @Override protected void populateItem(ListItem item) { Component inputComponent = getInputComponent("parameterPanel", paramsModel, item.getDefaultModelObjectAsString()); item.add(inputComponent); } }; // needed for form components not to loose state paramsList.setReuseItems(true); add(paramsList); if(keys.size() == 0) setVisible(false); } private Component getInputComponent(String id, IModel paramsModel, String keyName) { if (keyName.contains("Color")) return new ColorPickerPanel(id, new MapModel(paramsModel, keyName), new org.apache.wicket.model.ResourceModel(keyName, keyName), false); else return new TextParamPanel(id, new MapModel(paramsModel, keyName), new org.apache.wicket.model.ResourceModel(keyName, keyName), false); } }