package org.eclipse.emf.emfstore.client.ui.views.users; import java.util.HashMap; import java.util.Map; import org.eclipse.jface.wizard.WizardPage; import org.eclipse.swt.SWT; import org.eclipse.swt.events.KeyEvent; import org.eclipse.swt.events.KeyListener; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Text; public class UserCreateDataWizardPage extends WizardPage { private Text firstNameText; private Text lastNameText; private Text loginText; private Text descriptionText; private PageKeyListener listener; private class PageKeyListener implements KeyListener { public void keyPressed(KeyEvent e) { handleEvent(); } public void keyReleased(KeyEvent e) { } } /** * Create the wizard. */ public UserCreateDataWizardPage() { super("wizardPage"); setTitle("User data"); setDescription("Please provide user information"); } public void handleEvent() { String errorMgs = null; Map<Text, String> fieldNames = new HashMap<Text, String>(); fieldNames.put(loginText, "Login"); Text[] requiredFields = new Text[] { loginText }; for (Text text : requiredFields) { if (text.getText().isEmpty()) { errorMgs = "The following field is required: " + fieldNames.get(text); break; } } setErrorMessage(errorMgs); getContainer().updateMessage(); getContainer().updateButtons(); } /** * Create contents of the wizard. * * @param parent */ public void createControl(Composite parent) { Composite container = new Composite(parent, SWT.NULL); setControl(container); container.setLayout(new GridLayout(2, false)); Label lblFirstName = new Label(container, SWT.CENTER); lblFirstName.setText("First name"); firstNameText = new Text(container, SWT.BORDER); GridData gd_firstNameText = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1); gd_firstNameText.horizontalIndent = 30; gd_firstNameText.widthHint = 100; firstNameText.setLayoutData(gd_firstNameText); Label lblLastName = new Label(container, SWT.NONE); lblLastName.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1)); lblLastName.setText("Last name"); lastNameText = new Text(container, SWT.BORDER); lastNameText.setText(""); GridData gd_lastNameText = new GridData(SWT.LEFT, SWT.CENTER, true, false, 1, 1); gd_lastNameText.widthHint = 100; gd_lastNameText.horizontalIndent = 30; lastNameText.setLayoutData(gd_lastNameText); Label lblLogin = new Label(container, SWT.NONE); lblLogin.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1)); lblLogin.setText("Login"); loginText = new Text(container, SWT.BORDER); GridData gd_loginText = new GridData(SWT.LEFT, SWT.CENTER, true, false, 1, 1); gd_loginText.widthHint = 80; gd_loginText.horizontalIndent = 30; loginText.setLayoutData(gd_loginText); Label lblDescription = new Label(container, SWT.NONE); GridData gd_lblDescription = new GridData(SWT.RIGHT, SWT.TOP, false, false, 1, 1); gd_lblDescription.verticalIndent = 5; lblDescription.setLayoutData(gd_lblDescription); lblDescription.setText("Description"); descriptionText = new Text(container, SWT.BORDER | SWT.MULTI); GridData gd_text = new GridData(SWT.LEFT, SWT.CENTER, true, false, 1, 1); gd_text.heightHint = 100; gd_text.horizontalIndent = 30; gd_text.widthHint = 300; descriptionText.setLayoutData(gd_text); listener = new PageKeyListener(); for (Text textField : new Text[] { firstNameText, lastNameText, loginText, descriptionText }) { textField.addKeyListener(listener); } } @Override public void dispose() { for (Text textField : new Text[] { firstNameText, lastNameText, loginText, descriptionText }) { textField.removeKeyListener(listener); } super.dispose(); } /** * * {@inheritDoc} * * @see org.eclipse.jface.wizard.WizardPage#canFlipToNextPage() */ @Override public boolean canFlipToNextPage() { if (getErrorMessage() != null) return false; return true; } public String getFirstName() { return firstNameText.getText(); } public String getLastName() { return lastNameText.getText(); } public String getLogin() { return loginText.getText(); } public String getUserDescription() { return descriptionText.getText(); } }