/*******************************************************************************
* Copyright 2005-2007, CHISEL Group, University of Victoria, Victoria, BC, Canada
* and IBM Corporation. All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* The Chisel Group, University of Victoria
*******************************************************************************/
package net.sourceforge.tagsea.instrumentation.network.ui;
import net.sourceforge.tagsea.instrumentation.TagSEAInstrumentationPlugin;
import net.sourceforge.tagsea.instrumentation.network.ui.RegisterComposite.IValidator;
import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.ShellAdapter;
import org.eclipse.swt.events.ShellEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Event;
import org.eclipse.ui.PlatformUI;
/**
* Dialog for registering TagSEA.
* @author Del Myers
*
*/
public class RegisterPage extends WizardPage implements IValidator {
private Button agreementButton;
private RegisterComposite registerComposite;
/**
* @param pageName
*/
protected RegisterPage(String pageName) {
super(pageName, "Registering TagSEA", TagSEAInstrumentationPlugin.imageDescriptorFromPlugin(TagSEAInstrumentationPlugin.PLUGIN_ID, "/icons/check.png"));
}
public void createControl(Composite parent) {
Composite page = new Composite(parent, SWT.NONE);
page.setLayout(new GridLayout());
registerComposite = new RegisterComposite(page, SWT.NONE);
registerComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
PlatformUI.getWorkbench().getHelpSystem().setHelp(getShell(), "net.sourceforge.tagsea.instrumentation.registration");
registerComposite.setValidator(this);
setControl(page);
agreementButton = new Button(page, SWT.CHECK);
agreementButton.setText("*I agree to the terms of the TagSEA Monitoring Consent Agreement");
agreementButton.setForeground(agreementButton.getDisplay().getSystemColor(SWT.COLOR_RED));
agreementButton.setLayoutData(new GridData());
PlatformUI.getWorkbench().getHelpSystem().setHelp(agreementButton, "net.sourceforge.tagsea.instrumentation.consent");
agreementButton.addSelectionListener(new SelectionAdapter(){
@Override
public void widgetSelected(SelectionEvent e) {
//force the tray open
agreementButton.notifyListeners(SWT.Help, new Event());
validateInput(registerComposite);
}
});
agreementButton.setForeground(getShell().getDisplay().getSystemColor(SWT.COLOR_RED));
getShell().addShellListener(new ShellAdapter(){
@Override
public void shellActivated(ShellEvent e) {
getShell().notifyListeners(SWT.Help, new Event());
}
});
validateInput(registerComposite);
}
public String validateInput(RegisterComposite composite) {
if (composite.isAnonymous()) {
setErrorMessage(null);
setPageComplete(true);
return null;
}
String s = composite.getFirstName();
if (s == null || "".equals(s.trim())) {
String error = "First name missing.";
setErrorMessage(error);
setPageComplete(false);
return error;
}
s = composite.getLastName();
if (s == null || "".equals(s.trim())) {
String error = "Last name missing.";
setErrorMessage(error);
setPageComplete(false);
return error;
}
s = composite.getEmail();
if (s != null) {
if (!s.matches(".+\\@.+\\..+")) {
String error = "Invalid email address.";
setErrorMessage(error);
setPageComplete(false);
return error;
}
} else {
String error = "Invalid email address.";
setPageComplete(false);
return error;
}
if (!agreementButton.getSelection()) {
String error = "You must agree to the TagSEA Monitoring Consent Agreement.";
setErrorMessage(error);
return error;
}
setErrorMessage(null);
setPageComplete(true);
return null;
}
public RegisterComposite getRegisterComposite() {
return registerComposite;
}
public boolean willMonitor() {
return agreementButton.getSelection();
}
}