--- /dev/null
+package org.argeo.suite.ui.dialogs;
+
+import static org.argeo.eclipse.ui.EclipseUiUtils.isEmpty;
+
+import javax.jcr.Node;
+
+import org.argeo.eclipse.ui.EclipseUiUtils;
+import org.argeo.suite.ui.SuiteMsg;
+import org.argeo.suite.ui.SuiteUiUtils;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Text;
+
+/** Ask first & last name. Update the passed node on finish */
+public class NewUserWizard extends Wizard {
+ // private final static Log log = LogFactory.getLog(NewPersonWizard.class);
+
+ // Context
+ private Node person;
+
+ // This page widgets
+ protected Text lastNameTxt;
+ protected Text firstNameTxt;
+ // private Button useDistinctDisplayNameBtn;
+ // private Text displayNameTxt;
+
+ public NewUserWizard(Node person) {
+ this.person = person;
+ }
+
+ @Override
+ public void addPages() {
+ try {
+ MainInfoPage page = new MainInfoPage("Main page");
+ addPage(page);
+ } catch (Exception e) {
+ throw new RuntimeException("Cannot add page to wizard", e);
+ }
+ setWindowTitle(SuiteMsg.personWizardWindowTitle.lead());
+ }
+
+ /**
+ * Called when the user click on 'Finish' in the wizard. The task is then
+ * created and the corresponding session saved.
+ */
+ @Override
+ public boolean performFinish() {
+ String lastName = lastNameTxt.getText();
+ String firstName = firstNameTxt.getText();
+ // String displayName = displayNameTxt.getText();
+ // boolean useDistinct = useDistinctDisplayNameBtn.getSelection();
+ if (EclipseUiUtils.isEmpty(lastName) && EclipseUiUtils.isEmpty(firstName)) {
+ MessageDialog.openError(getShell(), "Non-valid information",
+ "Please enter at least a name that is not empty.");
+ return false;
+ } else {
+// ConnectJcrUtils.setJcrProperty(person, PEOPLE_LAST_NAME, PropertyType.STRING, lastName);
+// ConnectJcrUtils.setJcrProperty(person, PEOPLE_FIRST_NAME, PropertyType.STRING, firstName);
+// String fullName = firstName + " " + lastName;
+// ConnectJcrUtils.setJcrProperty(person, PEOPLE_DISPLAY_NAME, PropertyType.STRING, fullName);
+ return true;
+ }
+ }
+
+ @Override
+ public boolean performCancel() {
+ return true;
+ }
+
+ @Override
+ public boolean canFinish() {
+ String lastName = lastNameTxt.getText();
+ String firstName = firstNameTxt.getText();
+ if (isEmpty(lastName) && isEmpty(firstName)) {
+ return false;
+ } else
+ return true;
+ }
+
+ protected class MainInfoPage extends WizardPage {
+ private static final long serialVersionUID = 1L;
+
+ public MainInfoPage(String pageName) {
+ super(pageName);
+ setTitle(SuiteMsg.personWizardPageTitle.lead());
+ // setMessage("Please enter a last name and/or a first name.");
+ }
+
+ public void createControl(Composite parent) {
+ parent.setLayout(new GridLayout(2, false));
+
+ // FirstName
+ SuiteUiUtils.createBoldLabel(parent, SuiteMsg.firstName);
+ firstNameTxt = new Text(parent, SWT.BORDER);
+ // firstNameTxt.setMessage("a first name");
+ firstNameTxt.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
+
+ // LastName
+ SuiteUiUtils.createBoldLabel(parent, SuiteMsg.lastName);
+ lastNameTxt = new Text(parent, SWT.BORDER);
+ // lastNameTxt.setMessage("a last name");
+ lastNameTxt.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
+
+ // Display Name
+ // useDistinctDisplayNameBtn = new Button(parent, SWT.CHECK);
+ // useDistinctDisplayNameBtn.setText("Define a disting display name");
+ // useDistinctDisplayNameBtn.setLayoutData(new GridData(SWT.FILL, SWT.CENTER,
+ // true, false, 2, 1));
+ //
+ // ConnectWorkbenchUtils.createBoldLabel(parent, "Display Name");
+ // displayNameTxt = new Text(parent, SWT.BORDER);
+ // displayNameTxt.setMessage("an optional display name");
+ // displayNameTxt.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true,
+ // false));
+ // displayNameTxt.setEnabled(false);
+ //
+ // useDistinctDisplayNameBtn.addSelectionListener(new SelectionAdapter() {
+ // private static final long serialVersionUID = 1L;
+ //
+ // @Override
+ // public void widgetSelected(SelectionEvent e) {
+ // displayNameTxt.setEnabled(useDistinctDisplayNameBtn.getSelection());
+ // }
+ // });
+
+ ModifyListener ml = new ModifyListener() {
+ private static final long serialVersionUID = -1628130380128946886L;
+
+ @Override
+ public void modifyText(ModifyEvent event) {
+ getContainer().updateButtons();
+ }
+ };
+
+ firstNameTxt.addModifyListener(ml);
+ lastNameTxt.addModifyListener(ml);
+ // displayNameTxt.addModifyListener(ml);
+
+ // Don't forget this.
+ setControl(firstNameTxt);
+ firstNameTxt.setFocus();
+ }
+ }
+}