/* Copyright (c) 2001 - 2007 TOPP - www.openplans.org. All rights reserved. * This code is licensed under the GPL 2.0 license, available at the root * application directory. */ package org.geoserver.web.data.workspace; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.markup.html.AjaxLink; import org.apache.wicket.markup.html.form.CheckBox; import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.markup.html.form.SubmitLink; import org.apache.wicket.markup.html.form.TextField; import org.apache.wicket.model.CompoundPropertyModel; import org.apache.wicket.model.Model; import org.apache.wicket.model.PropertyModel; import org.apache.wicket.validation.IValidatable; import org.apache.wicket.validation.validator.StringValidator; import org.geoserver.catalog.Catalog; import org.geoserver.catalog.NamespaceInfo; import org.geoserver.catalog.WorkspaceInfo; import org.geoserver.catalog.impl.CatalogImpl; import org.geoserver.web.GeoServerSecuredPage; import org.geoserver.web.wicket.ParamResourceModel; import org.geoserver.web.wicket.URIValidator; import org.geoserver.web.wicket.XMLNameValidator; /** * Allows creation of a new workspace */ @SuppressWarnings("serial") public class WorkspaceNewPage extends GeoServerSecuredPage { Form form; TextField nsUriTextField; boolean defaultWs; public WorkspaceNewPage() { WorkspaceInfo ws = getCatalog().getFactory().createWorkspace(); form = new Form( "form", new CompoundPropertyModel( ws ) ) { @Override protected void onSubmit() { Catalog catalog = getCatalog(); WorkspaceInfo ws = (WorkspaceInfo) form.getModelObject(); NamespaceInfo ns = catalog.getFactory().createNamespace(); ns.setPrefix ( ws.getName() ); ns.setURI(nsUriTextField.getDefaultModelObjectAsString()); catalog.add( ws ); catalog.add( ns ); if(defaultWs) catalog.setDefaultWorkspace(ws); //TODO: set the response page to be the edit setResponsePage(WorkspacePage.class ); } }; add(form); TextField<String> nameTextField = new TextField<String>("name"); nameTextField.setRequired(true); nameTextField.add(new XMLNameValidator()); nameTextField.add(new StringValidator() { @Override protected void onValidate(IValidatable<String> validatable) { if(CatalogImpl.DEFAULT.equals(validatable.getValue())) { error(validatable, "defaultWsError"); } } }); form.add( nameTextField.setRequired(true) ); nsUriTextField = new TextField( "uri", new Model() ); // maybe a bit too restrictive, but better than not validation at all nsUriTextField.setRequired(true); nsUriTextField.add(new URIValidator()); form.add( nsUriTextField ); CheckBox defaultChk = new CheckBox("default", new PropertyModel(this, "defaultWs")); form.add(defaultChk); SubmitLink submitLink = new SubmitLink( "submit", form ); form.add( submitLink ); form.setDefaultButton(submitLink); AjaxLink cancelLink = new AjaxLink( "cancel" ) { @Override public void onClick(AjaxRequestTarget target) { setResponsePage(WorkspacePage.class); } }; form.add( cancelLink ); } }