org.geoserver.wms.web.data.LayerAttributePanel.java Source code

Java tutorial

Introduction

Here is the source code for org.geoserver.wms.web.data.LayerAttributePanel.java

Source

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

import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;

import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.PropertyModel;
import org.geoserver.catalog.CoverageInfo;
import org.geoserver.catalog.FeatureTypeInfo;
import org.geoserver.catalog.ResourceInfo;
import org.geoserver.web.wicket.SimpleAjaxLink;
import org.geotools.util.logging.Logging;

/**
 * Style page tab for displaying layer attributes.
 * Includes a link for changing the current preview layer.
 * Delegates to {@link BandsPanel} or {@link LayerAttributePanel} to display the attributes, 
 * depending on the type of the layer resource.
 */
public class LayerAttributePanel extends StyleEditTabPanel {

    static final Logger LOGGER = Logging.getLogger(LayerAttributePanel.class);

    private static final long serialVersionUID = -5936224477909623317L;

    public LayerAttributePanel(String id, AbstractStylePage parent) throws IOException {
        super(id, parent);

        //Change layer link
        PropertyModel<String> layerNameModel = new PropertyModel<String>(parent.getLayerModel(), "prefixedName");
        add(new SimpleAjaxLink<String>("changeLayer", layerNameModel) {
            private static final long serialVersionUID = 7341058018479354596L;

            public void onClick(AjaxRequestTarget target) {
                ModalWindow popup = parent.getPopup();

                popup.setInitialHeight(400);
                popup.setInitialWidth(600);
                popup.setTitle(new Model<String>("Choose layer to edit"));
                popup.setContent(new LayerChooser(popup.getContentId(), parent));
                popup.show(target);
            }
        });

        this.setDefaultModel(parent.getLayerModel());

        updateAttributePanel();
    }

    @Override
    protected void configurationChanged() {
        try {
            updateAttributePanel();
        } catch (IOException e) {
            LOGGER.log(Level.WARNING, "Could not update LayerAttributePanel", e);
        }
    }

    protected void updateAttributePanel() throws IOException {
        ResourceInfo resource = this.getStylePage().getLayerInfo().getResource();

        if (this.get("attributePanel") != null) {
            this.remove("attributePanel");
        }
        if (resource instanceof FeatureTypeInfo) {
            this.add(new DataPanel("attributePanel", (FeatureTypeInfo) resource));
        } else if (resource instanceof CoverageInfo) {
            this.add(new BandsPanel("attributePanel", (CoverageInfo) resource));
        }
    }

}