Package org.geoserver.community.css.web

Source Code of org.geoserver.community.css.web.BandsPanel

/* (c) 2014 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.community.css.web;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.logging.Logger;

import org.apache.wicket.Component;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.markup.repeater.ReuseIfModelsEqualStrategy;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.geoserver.catalog.CoverageDimensionInfo;
import org.geoserver.catalog.CoverageInfo;
import org.geoserver.web.wicket.GeoServerDataProvider;
import org.geoserver.web.wicket.GeoServerDataProvider.Property;
import org.geoserver.web.wicket.GeoServerTablePanel;
import org.geoserver.web.wicket.ParamResourceModel;
import org.geotools.util.logging.Logging;
import org.opengis.coverage.SampleDimensionType;

@SuppressWarnings("serial")
public class BandsPanel extends Panel {
    static final Logger LOGGER = Logging.getLogger(BandsPanel.class);

    private GeoServerTablePanel<CoverageDimensionInfo> bands;

    public BandsPanel(String id, final CoverageInfo coverage) {
        super(id, new Model(coverage));

        // the parameters table
        bands = new GeoServerTablePanel<CoverageDimensionInfo>("bands",
                new CoverageDimensionsProvider(), true) {

            @Override
            protected Component getComponentForProperty(String id, IModel itemModel,
                    Property<CoverageDimensionInfo> property) {
                return null;
            }

        };
        bands.setFilterVisible(false);
        bands.setSortable(false);
        bands.getTopPager().setVisible(false);
        bands.getBottomPager().setVisible(false);
        bands.setOutputMarkupId(true);
        bands.setItemReuseStrategy(ReuseIfModelsEqualStrategy.getInstance());
        bands.setFilterable(false);
        bands.setSelectable(false);
        add(bands);
    }

    class CoverageDimensionsProvider extends GeoServerDataProvider<CoverageDimensionInfo> {

        @Override
        protected List<Property<CoverageDimensionInfo>> getProperties() {
            List<Property<CoverageDimensionInfo>> result = new ArrayList<Property<CoverageDimensionInfo>>();
            result.add(new BeanProperty<CoverageDimensionInfo>("band", "name"));
            result.add(new AbstractProperty<CoverageDimensionInfo>("dimensionType") {

                @Override
                public Object getPropertyValue(CoverageDimensionInfo item) {
                    SampleDimensionType type = item.getDimensionType();
                    if (type == null) {
                        return "-";
                    } else {
                        String name = type.name();
                        try {
                            String key = BandsPanel.class.getSimpleName() + "." +  name;
                            ParamResourceModel rm = new ParamResourceModel(key, null);
                            return rm.getString();
                        } catch(Exception e) {
                            return name;
                        }
                       
                    }
                }

            });
            result.add(new AbstractProperty<CoverageDimensionInfo>("nullValues") {

                @Override
                public Object getPropertyValue(CoverageDimensionInfo item) {
                    List<Double> values = item.getNullValues();
                    if (values == null || values.isEmpty()) {
                        return "-";
                    } else {
                        StringBuilder sb = new StringBuilder();
                        final int size = values.size();
                        for (int i = 0; i < size; i++) {
                            sb.append(values.get(i));
                            if (i < size - 1) {
                                sb.append(", ");
                            }
                        }

                        return sb.toString();
                    }
                }

            });
            result.add(new BeanProperty<CoverageDimensionInfo>("unit", "unit"));
            return result;
        }

        @Override
        protected List<CoverageDimensionInfo> getItems() {
            CoverageInfo ci = (CoverageInfo) BandsPanel.this
                    .getDefaultModelObject();
            if (ci.getDimensions() != null) {
                return ci.getDimensions();
            } else {
                return Collections.emptyList();
            }
        }

    }
}
TOP

Related Classes of org.geoserver.community.css.web.BandsPanel

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.