Package org.geoserver.gwc.web.gridset

Source Code of org.geoserver.gwc.web.gridset.GridSetListTablePanel

/* (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.gwc.web.gridset;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.apache.wicket.Component;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.CheckBox;
import org.apache.wicket.markup.repeater.Item;
import org.apache.wicket.model.IModel;
import org.geoserver.gwc.GWC;
import org.geoserver.web.wicket.GeoServerDataProvider.Property;
import org.geoserver.web.wicket.GeoServerTablePanel;
import org.geowebcache.diskquota.storage.Quota;
import org.geowebcache.grid.GridSet;

/**
* Panel listing the configured GridSet object on a table
*
* @author groldan
* @see GridSetTableProvider
*/
public abstract class GridSetListTablePanel extends GeoServerTablePanel<GridSet> {

    private static final long serialVersionUID = 5957961031378924960L;

    public GridSetListTablePanel(final String id, final GridSetTableProvider provider,
            final boolean selectable) {
        super(id, provider, selectable);

    }

    @SuppressWarnings("rawtypes")
    @Override
    protected Component getComponentForProperty(final String id, final IModel itemModel,
            final Property<GridSet> property) {

        if (property == GridSetTableProvider.NAME) {
            GridSet gridSet = (GridSet) itemModel.getObject();
            return nameLink(id, gridSet);

        } else if (property == GridSetTableProvider.EPSG_CODE) {

            String epsgCode = (String) property.getModel(itemModel).getObject();
            return new Label(id, epsgCode);

        } else if (property == GridSetTableProvider.TILE_DIMENSION) {

            String tileDimension = (String) property.getModel(itemModel).getObject();
            return new Label(id, tileDimension);

        } else if (property == GridSetTableProvider.ZOOM_LEVELS) {

            Integer zoomLevels = (Integer) property.getModel(itemModel).getObject();
            return new Label(id, zoomLevels.toString());

        } else if (property == GridSetTableProvider.QUOTA_USED) {

            Quota usedQuota = (Quota) property.getModel(itemModel).getObject();
            String quotaStr = usedQuota == null ? "N/A" : usedQuota.toNiceString();
            return new Label(id, quotaStr);

        } else if (property == GridSetTableProvider.ACTION_LINK) {
            String gridSetName = (String) property.getModel(itemModel).getObject();

            Component actionLink = actionLink(id, gridSetName);

            return actionLink;
        }

        throw new IllegalArgumentException("Unknown property: " + property.getName());
    }

    protected abstract Component nameLink(final String id, final GridSet gridSet);

    protected abstract Component actionLink(final String id, String gridSetName);

    /**
     * Overrides to return a disabled and non selectable checkbox if the GridSet for the item is an
     * internally defined one
     *
     * @see org.geoserver.web.wicket.GeoServerTablePanel#selectOneCheckbox
     */
    @Override
    protected CheckBox selectOneCheckbox(Item item) {
        CheckBox cb = super.selectOneCheckbox(item);

        GridSet gs = (GridSet) item.getModelObject();

        String name = gs.getName();
        final boolean internal = GWC.get().isInternalGridSet(name);
        if (internal) {
            cb.setEnabled(false);
            cb.setModelObject(Boolean.FALSE);
        }
        return cb;
    }

    /**
     * Overrides to remove any internal gridset from the list
     *
     * @see org.geoserver.web.wicket.GeoServerTablePanel#getSelection()
     */
    @Override
    public List<GridSet> getSelection() {
        List<GridSet> selection = new ArrayList<GridSet>(super.getSelection());
        for (Iterator<GridSet> it = selection.iterator(); it.hasNext();) {
            GridSet g = it.next();
            if (GWC.get().isInternalGridSet(g.getName())) {
                it.remove();
            }
        }
        return selection;
    }
}
TOP

Related Classes of org.geoserver.gwc.web.gridset.GridSetListTablePanel

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.