/* (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.importer.web; import org.apache.wicket.AttributeModifier; import org.apache.wicket.Component; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.markup.html.AjaxLink; import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.form.CheckBox; import org.apache.wicket.markup.html.form.TextField; import org.apache.wicket.markup.html.panel.Panel; import org.apache.wicket.model.AbstractReadOnlyModel; import org.apache.wicket.model.PropertyModel; /** * Other params form for databases: schema, loose bbox, pk metadata lookup table * * @author Andrea Aime - OpenGeo */ @SuppressWarnings("serial") class AdvancedDbParamPanel extends Panel { boolean excludeGeometryless = true; boolean looseBBox = true; String pkMetadata; WebMarkupContainer advancedContainer; private WebMarkupContainer advancedPanel; public AdvancedDbParamPanel(String id, boolean showLooseBBox) { super(id); // we create a global container in order to update the visibility of the various items // at runtime // final WebMarkupContainer basicParams = new WebMarkupContainer("basicParams"); //basicParams.setOutputMarkupId(true); // add(basicParams); //basicParams.add(new CheckBox("excludeGeometryless", new PropertyModel(this, "excludeGeometryless"))); add(toggleAdvanced()); advancedContainer = new WebMarkupContainer("advancedContainer"); advancedContainer.setOutputMarkupId(true); advancedPanel = new WebMarkupContainer("advanced"); advancedPanel.setVisible(false); WebMarkupContainer looseBBoxContainer = new WebMarkupContainer("looseBBoxContainer"); looseBBoxContainer.setVisible(showLooseBBox); CheckBox fastBBoxCheck = new CheckBox("looseBBox", new PropertyModel(this, "looseBBox")); looseBBoxContainer.add(fastBBoxCheck); advancedPanel.add(looseBBoxContainer); WebMarkupContainer excludeGeomlessContainer = new WebMarkupContainer("excludeGeometrylessContainer"); excludeGeomlessContainer.setVisible(showLooseBBox); CheckBox excludeGeomlessCheck = new CheckBox("excludeGeometryless", new PropertyModel(this, "excludeGeometryless")); excludeGeomlessContainer.add(excludeGeomlessCheck); advancedPanel.add(excludeGeomlessContainer); advancedPanel.add(new TextField("pkMetadata", new PropertyModel(this, "pkMetadata"))); advancedContainer.add(advancedPanel); add(advancedContainer); } Component toggleAdvanced() { final AjaxLink advanced = new AjaxLink("advancedLink") { @Override public void onClick(AjaxRequestTarget target) { advancedPanel.setVisible(!advancedPanel.isVisible()); target.add(advancedContainer); target.add(this); } }; advanced.add(new AttributeModifier("class", new AbstractReadOnlyModel() { @Override public Object getObject() { return advancedPanel.isVisible() ? "expanded" : "collapsed"; } })); advanced.setOutputMarkupId(true); return advanced; } }