/** * */ package org.sinnlabs.dbvim.ui; import java.io.UnsupportedEncodingException; import java.security.NoSuchAlgorithmException; import org.apache.commons.lang3.StringUtils; import org.sinnlabs.dbvim.model.User; import org.sinnlabs.dbvim.security.LoginProvider; import org.zkoss.zk.ui.Executions; import org.zkoss.zk.ui.WrongValueException; import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.EventListener; import org.zkoss.zk.ui.event.Events; import org.zkoss.zk.ui.event.MouseEvent; import org.zkoss.zk.ui.select.Selectors; import org.zkoss.zk.ui.select.annotation.Wire; import org.zkoss.zul.Button; import org.zkoss.zul.Messagebox; import org.zkoss.zul.Textbox; import org.zkoss.zul.Window; /** * Class represents add user dialog window * @author peter.liverovsky * */ public class AddUserDialog extends Window { /** * */ private static final long serialVersionUID = -220181534234726539L; /** * Cancel dialog action */ public static final int DD_CANCEL = 0; /** * Create new connection */ public static final int DD_OK = 1; /** * The selected action */ private int nSelectedAction = DD_CANCEL; /** * Current user */ private User user; /* Wire interface components */ @Wire Button btnOK; @Wire Button btnCancel; @Wire Textbox txtLogin; @Wire Textbox txtPassword; @Wire Textbox txtFullName; /** * Returns user selected action * */ public int getSelectedAction() { return nSelectedAction; } /** * Returns new user */ public User getUser() { return user; } public AddUserDialog() { // create the ui super(); Executions .createComponents("/components/adduserdialog.zul", this, null); Selectors.wireVariables(this, this, null); Selectors.wireComponents(this, this, false); Selectors.wireEventListeners(this, this); setBorder("normal"); setClosable(true); setTitle("Add new user"); addEventListeners(); user = null; } private boolean createUser() throws WrongValueException, NoSuchAlgorithmException, UnsupportedEncodingException { // validate user input if (StringUtils.isBlank(txtLogin.getText())) { Messagebox.show("Login can not be empty."); return false; } if (StringUtils.isBlank(txtPassword.getValue())) { Messagebox.show("Password can not be empty."); return false; } // create user object user = LoginProvider.createUser(txtLogin.getText(), txtPassword.getValue()); user.setEnabled(true); user.setFullName(txtFullName.getText()); return true; } /** * Wire UI events */ private void addEventListeners() { final Window t = this; btnOK.addEventListener(Events.ON_CLICK, new EventListener<MouseEvent>() { @Override public void onEvent(MouseEvent e) throws Exception { // if user successfully created if (createUser()) { nSelectedAction = DD_OK; Event closeEvent = new Event(Events.ON_CLOSE, t); Events.postEvent(closeEvent); detach(); } } }); btnCancel.addEventListener(Events.ON_CLICK, new EventListener<MouseEvent>() { @Override public void onEvent(MouseEvent arg0) throws Exception { nSelectedAction = DD_CANCEL; Event closeEvent = new Event(Events.ON_CLOSE, t); Events.postEvent(closeEvent); detach(); } }); } }