package de.bht.fpa.examples.frameworks.v3.guiframework;
import org.apache.commons.validator.routines.EmailValidator;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.StyledText;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import de.bht.fpa.examples.frameworks.Person;
public final class UseSWT {
private static Text txtName;
private static StyledText txtEmail;
private static Button btnSubmit;
private UseSWT() {
}
public static void main(String[] args) {
final Display display = new Display();
Shell shell = new Shell(display);
shell.setSize(300, 150);
shell.setLayout(new GridLayout(2, false));
Label lblName = new Label(shell, SWT.NONE);
lblName.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
lblName.setText("What is your Name?");
txtName = new Text(shell, SWT.BORDER);
txtName.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
Label lblEmail = new Label(shell, SWT.NONE);
lblEmail.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
lblEmail.setText("What is your E-Mail?");
txtEmail = new StyledText(shell, SWT.BORDER);
txtEmail.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
txtEmail.addModifyListener(new ModifyListener() {
@Override
public void modifyText(ModifyEvent e) {
if (emailIsValid(txtEmail.getText())) {
txtEmail.setForeground(display.getSystemColor(SWT.COLOR_BLACK));
btnSubmit.setEnabled(true);
} else {
txtEmail.setForeground(display.getSystemColor(SWT.COLOR_RED));
btnSubmit.setEnabled(false);
}
}
});
btnSubmit = new Button(shell, SWT.NONE);
btnSubmit.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, true, false, 2, 1));
btnSubmit.setText("Submit");
btnSubmit.setEnabled(false);
btnSubmit.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
Person person = new Person(txtName.getText(), txtEmail.getText());
System.out.println(person);
}
});
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();
}
private static boolean emailIsValid(String email) {
// use the apache commons validator library
return EmailValidator.getInstance().isValid(email);
}
}