/* (c) 2014 - 2016 Open Source Geospatial Foundation - all rights reserved
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/
package org.geoserver.wms.worldwind.web;
import java.nio.ByteOrder;
import java.util.Arrays;
import java.util.logging.Logger;
import org.apache.wicket.markup.html.form.ChoiceRenderer;
import org.apache.wicket.markup.html.form.DropDownChoice;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.model.StringResourceModel;
import org.apache.wicket.model.util.ListModel;
import org.apache.wicket.resource.loader.IStringResourceLoader;
import org.geoserver.catalog.LayerInfo;
import org.geoserver.web.GeoServerStringResourceLoader;
import org.geoserver.web.publish.PublishedConfigurationPanel;
import org.geoserver.web.util.MapModel;
import org.geoserver.wms.worldwind.BilConfig;
import org.geotools.util.logging.Logging;
/**
* UI panel to configure a the BIL output format for a layer. This panel appears
* in the Publishing tab of the layer configuration for a raster layer.
*
* @author Parker Abercrombie
*/
public class BilLayerConfigPanel extends PublishedConfigurationPanel<LayerInfo>
{
private static final long serialVersionUID = -7082211085566621848L;
private static final Logger LOGGER = Logging.getLogger(BilLayerConfigPanel.class);
public BilLayerConfigPanel(String id, IModel<LayerInfo> model)
{
super(id, model);
PropertyModel<Object> metadata = new PropertyModel<Object>(model,
"resource.metadata");
add(new DropDownChoice<String>(BilConfig.DEFAULT_DATA_TYPE,
new MapModel(metadata, BilConfig.DEFAULT_DATA_TYPE),
new ListModel<>(Arrays.asList(
"application/bil8",
"application/bil16",
"application/bil32"))));
add(new DropDownChoice<String>(BilConfig.BYTE_ORDER,
new MapModel(metadata, BilConfig.BYTE_ORDER),
new ListModel<>(Arrays.asList(
ByteOrder.BIG_ENDIAN.toString(),
ByteOrder.LITTLE_ENDIAN.toString())),
new ByteOrderRenderer()));
add(new TextField<Double>(BilConfig.NO_DATA_OUTPUT,
new MapModel(metadata, BilConfig.NO_DATA_OUTPUT), Double.class));
}
/**
* Renderer to display a localized string for the Byte Order drop down.
*/
private class ByteOrderRenderer extends ChoiceRenderer<String>
{
private static final long serialVersionUID = 9198622236589910965L;
public Object getDisplayValue(String str)
{
IStringResourceLoader loader = new GeoServerStringResourceLoader();
if (ByteOrder.LITTLE_ENDIAN.toString().equals(str))
{
return new StringResourceModel("byteOrderLittleEndian", BilLayerConfigPanel.this).getObject();
} else if (ByteOrder.BIG_ENDIAN.toString().equals(str)) {
return new StringResourceModel("byteOrderBigEndian", BilLayerConfigPanel.this).getObject();
}
LOGGER.warning("Unknown byte order: " + str);
return str;
}
public String getIdValue(String str, int index)
{
return str;
}
}
}