/* (c) 2014 - 2016 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.web.data.layergroup; import java.util.Arrays; import java.util.List; import org.apache.wicket.Component; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.model.IModel; import org.geoserver.catalog.StyleInfo; import org.geoserver.web.data.style.StyleDetachableModel; import org.geoserver.web.wicket.GeoServerDataProvider; import org.geoserver.web.wicket.GeoServerDataProvider.BeanProperty; import org.geoserver.web.wicket.GeoServerDataProvider.Property; import org.geoserver.web.wicket.GeoServerTablePanel; import org.geoserver.web.wicket.SimpleAjaxLink; /** * Base class for style listing table with clickable style names */ public abstract class StyleListPanel extends GeoServerTablePanel<StyleInfo> { protected static class StyleListProvider extends GeoServerDataProvider<StyleInfo> { private static final long serialVersionUID = -5061497681708482229L; @Override protected List<StyleInfo> getItems() { return getCatalog().getStyles(); } @Override protected List<Property<StyleInfo>> getProperties() { return Arrays.asList(NAME); } public IModel<StyleInfo> newModel(StyleInfo object) { return new StyleDetachableModel(object); } } private static final long serialVersionUID = -811883647153309626L; static Property<StyleInfo> NAME = new BeanProperty<StyleInfo>("name", "name"); public StyleListPanel(String id, StyleListProvider styleProvider) { super(id, styleProvider); getTopPager().setVisible(false); } public StyleListPanel(String id) { this(id, new StyleListProvider()); } @SuppressWarnings("unchecked") @Override protected Component getComponentForProperty(String id, IModel<StyleInfo> itemModel, Property<StyleInfo> property) { final StyleInfo style = (StyleInfo) itemModel.getObject(); if (property == NAME) { return new SimpleAjaxLink<String>( id, (IModel<String>) NAME.getModel(itemModel) ) { private static final long serialVersionUID = -2537227506881638001L; @Override public void onClick(AjaxRequestTarget target) { handleStyle(style, target); } }; } return null; } protected abstract void handleStyle( StyleInfo style, AjaxRequestTarget target ); }