/**************************************************************************** * Copyright (c) 2008 Composent Inc., and others. * 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: *****************************************************************************/ package org.eclipse.ecf.internal.provider.xmpp.ui.wizards; import java.util.regex.Matcher; import org.eclipse.ecf.internal.provider.xmpp.ui.Messages; import org.eclipse.swt.SWT; import org.eclipse.swt.events.*; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.*; final class EclipseXMPPSConnectWizardPage extends XMPPConnectWizardPage { private static final String ECLIPSE_XMPP_HOST = (String) System .getProperty("org.eclipse.ecf.provider.xmpp.ui.eclipseXMPPServer", "xmpp.eclipse.org"); EclipseXMPPSConnectWizardPage() { super(); setTitle("Eclipse IM Connection Wizard"); setDescription("Eclipse Bugzilla Account - Please login using your Eclipse Bugzilla username and password"); setPageComplete(false); } EclipseXMPPSConnectWizardPage(String usernameAtHost) { this(); this.usernameAtHost = usernameAtHost; } private void verify() { final String text = connectText.getText(); if (text.equals("")) { //$NON-NLS-1$ updateStatus("A valid Bugzilla account must be specified"); } else { final Matcher matcher = emailPattern.matcher(text); if (!matcher.matches()) { updateStatus("Invalid Bugzilla account information"); } else { restorePassword(text); updateStatus(null); } } } public void createControl(Composite parent) { parent = new Composite(parent, SWT.NONE); parent.setLayout(new GridLayout()); final GridData fillData = new GridData(SWT.FILL, SWT.CENTER, true, false); final GridData endData = new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1); Label label = new Label(parent, SWT.LEFT); label.setText("Bugzilla Username:"); connectText = new Combo(parent, SWT.SINGLE | SWT.BORDER | SWT.DROP_DOWN); connectText.setLayoutData(fillData); connectText.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent e) { verify(); } }); connectText.addSelectionListener(new SelectionListener() { public void widgetDefaultSelected(SelectionEvent e) { verify(); } public void widgetSelected(SelectionEvent e) { verify(); } }); label = new Label(parent, SWT.RIGHT); label.setText("<email address>"); label.setLayoutData(endData); label = new Label(parent, SWT.LEFT); label.setText(Messages.XMPPSConnectWizardPage_WIZARD_PAGE_PASSWORD); passwordText = new Text(parent, SWT.SINGLE | SWT.PASSWORD | SWT.BORDER); passwordText.setLayoutData(fillData); restoreCombo(); if (usernameAtHost != null) { connectText.setText(usernameAtHost); restorePassword(usernameAtHost); passwordText.setFocus(); } verify(); if (connectText.getText().equals("")) { updateStatus(null); setPageComplete(false); } else if (isPageComplete()) passwordText.setFocus(); org.eclipse.jface.dialogs.Dialog.applyDialogFont(parent); setControl(parent); } String getConnectID() { final String bugzillaAccount = connectText.getText(); if (!bugzillaAccount.endsWith(ECLIPSE_XMPP_HOST)) { return bugzillaAccount + "@" + ECLIPSE_XMPP_HOST; } return bugzillaAccount; } }