/* (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.PasswordTextField;
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;
/**
* Panel for the basic dbms parameters
* @author Andrea Aime - OpenGeo
*/
@SuppressWarnings("serial")
class BasicDbParamPanel extends Panel {
String host;
int port;
String username;
String password;
String database;
String schema;
ConnectionPoolParamPanel connPoolPanel;
WebMarkupContainer connPoolPanelContainer;
Component connPoolLink;
public BasicDbParamPanel(String id, String host, int port, boolean databaseRequired) {
this(id, host, port, null, null, null, databaseRequired);
}
public BasicDbParamPanel(String id, String host, int port, String database, String schema,
String username, boolean databaseRequired) {
super(id);
this.host = host;
this.port = port;
this.database = database;
this.schema = schema;
this.username = username;
add(new TextField("host", new PropertyModel(this, "host")).setRequired(true));
add(new TextField("port", new PropertyModel(this, "port")).setRequired(true));
add(new TextField("username", new PropertyModel(this, "username")).setRequired(true));
add(new PasswordTextField("password", new PropertyModel(this, "password"))
.setResetPassword(false).setRequired(false));
add(new TextField("database", new PropertyModel(this, "database"))
.setRequired(databaseRequired));
add(new TextField("schema", new PropertyModel(this, "schema")));
connPoolLink = toggleConnectionPoolLink();
add(connPoolLink);
connPoolPanelContainer = new WebMarkupContainer("connPoolPanelContainer");
connPoolPanelContainer.setOutputMarkupId(true);
connPoolPanel = new ConnectionPoolParamPanel("connPoolPanel", true);
connPoolPanel.setVisible(false);
connPoolPanelContainer.add(connPoolPanel);
add(connPoolPanelContainer);
}
/**
* Toggles the connection pool param panel
*
*
*/
Component toggleConnectionPoolLink() {
AjaxLink connPoolLink = new AjaxLink("connectionPoolLink") {
@Override
public void onClick(AjaxRequestTarget target) {
connPoolPanel.setVisible(!connPoolPanel.isVisible());
target.add(connPoolPanelContainer);
target.add(this);
}
};
connPoolLink.add(new AttributeModifier("class", new AbstractReadOnlyModel() {
@Override
public Object getObject() {
return connPoolPanel.isVisible() ? "expanded" : "collapsed";
}
}));
connPoolLink.setOutputMarkupId(true);
return connPoolLink;
}
}