blob: 0b477484150991bcd5c1a52e48d2f5094ce6870e [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2011 Laurent CARON
* 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:
* Laurent CARON (laurent.caron at gmail dot com) - initial API and implementation
*******************************************************************************/
package org.mihalis.opal.login;
import java.util.Locale;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Image;
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.mihalis.opal.utils.SWTGraphicUtil;
/**
* This snippet demonstrates the Login Dialog widget
*
*/
public class LoginDialogSnippet {
/**
* @param args
*/
public static void main(final String[] args) {
Locale.setDefault(Locale.ENGLISH);
final Display display = new Display();
final Shell shell = new Shell(display);
shell.setText("Login dialog snippet");
shell.setLayout(new GridLayout(2, false));
// Basic Login dialog
final Label label1 = new Label(shell, SWT.WRAP);
label1.setText("This is the basic dialog box, \nwithout any customization");
label1.setLayoutData(new GridData(GridData.FILL, GridData.BEGINNING, true, false));
final Button button1 = new Button(shell, SWT.PUSH);
button1.setText("Open basic dialog");
button1.setLayoutData(new GridData(GridData.FILL, GridData.BEGINNING, false, false));
final LoginDialogVerifier verifier = new LoginDialogVerifier() {
@Override
public void authenticate(final String login, final String password) throws Exception {
if ("".equals(login)) {
throw new Exception("Please enter a login.");
}
if ("".equals(password)) {
throw new Exception("Please enter a password.");
}
if (!login.equalsIgnoreCase("laurent")) {
throw new Exception("Login unknown.");
}
if (!password.equalsIgnoreCase("laurent")) {
throw new Exception("Authentication failed, please check your password.");
}
}
};
button1.addSelectionListener(new SelectionAdapter() {
/**
* @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
*/
@Override
public void widgetSelected(final SelectionEvent e) {
final LoginDialog dialog = new LoginDialog();
dialog.setVerifier(verifier);
final boolean result = dialog.open();
if (result) {
System.out.println("Login confirmed : " + dialog.getLogin());
} else {
System.out.println("User canceled !");
}
}
});
final Label separator = new Label(shell, SWT.SEPARATOR | SWT.HORIZONTAL);
separator.setLayoutData(new GridData(GridData.FILL, GridData.BEGINNING, false, false, 2, 1));
// Login dialog with image, description, default login, and no button
// "remember my password"
final Label label2 = new Label(shell, SWT.NONE);
label2.setText("This is a customized login (image, description, \ndefault login, multiple login values, \nno button 'remember my password'");
label2.setLayoutData(new GridData(GridData.FILL, GridData.BEGINNING, true, false));
final Button button2 = new Button(shell, SWT.PUSH);
button2.setText("Open customized dialog");
button2.setLayoutData(new GridData(GridData.END, GridData.BEGINNING, false, false));
button2.addSelectionListener(new SelectionAdapter() {
/**
* @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
*/
@Override
public void widgetSelected(final SelectionEvent e) {
final LoginDialog dialog = new LoginDialog();
dialog.setImage(new Image(display, LoginDialogSnippet.class.getClassLoader().getResourceAsStream("org/mihalis/opal/login/image.png")));
dialog.setDescription("Please login to our system...\nPlease remember that the password is the same as the login :)");
dialog.setAutorizedLogin("Laurent", "Albert", "Erik", "Ulrich", "Luis");
dialog.setLogin("Laurent");
dialog.setDisplayRememberPassword(false);
dialog.setVerifier(verifier);
final boolean result = dialog.open();
if (result) {
System.out.println("Login confirmed : " + dialog.getLogin());
} else {
System.out.println("User canceled !");
}
}
});
shell.pack();
shell.open();
SWTGraphicUtil.centerShell(shell);
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();
}
}