package org.openslx.dozmod.gui.window.layout;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.ImageData;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import org.openslx.dozmod.gui.Gui;
public abstract class LoginWindowLayout extends Composite {
// TODO This has nothing to to with the layout
protected static enum LOGIN_TYPE {
ECP(0),
TEST_ACCOUNT(1),
DIRECT_CONNECT(2);
public final int id;
private LOGIN_TYPE(final int id) {
this.id = id;
}
}
// authentication method to use for login attempts
protected LOGIN_TYPE loginType = null;
private Image titleImage;
// textfields for the username/password
protected Text usernameText;
protected Text passwordText;
// ComboBox/label for the IDP
protected final Combo idpCombo;
protected final Label idpText;
// buttons
protected final Button loginButton;
protected final Button saveUsernameCheck;
protected final Button[] authButtons;
private static final String title = "bwSuite - Login";
private static final String authenticationGroupLabel = "Authentifizierungsart";
/**
* Create a new login composite
*
* @param mainShell
* The shell it should be added to
*/
public LoginWindowLayout(final Shell mainShell) {
super(mainShell, SWT.NONE);
// title for composite
mainShell.setText(title);
// left authentication selection and right loginmask
GridLayout gridLayout = new GridLayout(2, true);
this.setLayout(gridLayout);
// load the needed Picture
loadImage();
Label titlePicture = new Label(this, SWT.NONE);
titlePicture.setImage(titleImage);
GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
gridData.horizontalSpan = 2;
gridData.horizontalAlignment = SWT.CENTER;
titlePicture.setLayoutData(gridData);
// group for the authentication method.
// groups have borders and a title
Group authGroup = new Group(this, SWT.NONE);
authGroup.setText(authenticationGroupLabel);
gridLayout = new GridLayout();
gridLayout.numColumns = 1;
authGroup.setLayout(gridLayout);
gridData = new GridData(GridData.FILL, GridData.FILL, false, false);
gridData.heightHint = 150;
authGroup.setLayoutData(gridData);
// add the authentication method selection buttons
authButtons = new Button[3];
authButtons[LOGIN_TYPE.ECP.id] = new Button(authGroup, SWT.RADIO);
authButtons[LOGIN_TYPE.ECP.id].setText("Authentifizierung über bwIDM");
gridData = new GridData(GridData.FILL, GridData.FILL, true, true);
authButtons[LOGIN_TYPE.ECP.id].setLayoutData(gridData);
authButtons[LOGIN_TYPE.TEST_ACCOUNT.id] = new Button(authGroup, SWT.RADIO);
authButtons[LOGIN_TYPE.TEST_ACCOUNT.id].setText("Test-Zugang mit festem Benutzernamen");
gridData = new GridData(GridData.FILL, GridData.FILL, true, true);
authButtons[LOGIN_TYPE.TEST_ACCOUNT.id].setLayoutData(gridData);
authButtons[LOGIN_TYPE.DIRECT_CONNECT.id] = new Button(authGroup, SWT.RADIO);
authButtons[LOGIN_TYPE.DIRECT_CONNECT.id].setText("Direkte Verbindung zum Satelliten");
gridData = new GridData(GridData.FILL, GridData.FILL, true, true);
authButtons[LOGIN_TYPE.DIRECT_CONNECT.id].setLayoutData(gridData);
// group for the login mask
final Group loginGroup = new Group(this, SWT.NONE);
loginGroup.setText("Zugangsdaten");
gridLayout = new GridLayout();
gridLayout.numColumns = 2;
loginGroup.setLayout(gridLayout);
gridData = new GridData(GridData.FILL, GridData.CENTER, true, false);
gridData.heightHint = 150;
loginGroup.setLayoutData(gridData);
idpText = new Label(loginGroup, SWT.NONE);
idpText.setText("IdP:");
idpCombo = new Combo(loginGroup, SWT.DROP_DOWN | SWT.READ_ONLY);
idpCombo.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
new Label(loginGroup, SWT.NONE).setText("Benutzername:");
usernameText = new Text(loginGroup, SWT.SINGLE | SWT.BORDER);
usernameText.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
new Label(loginGroup, SWT.NONE).setText("Passwort:");
passwordText = new Text(loginGroup, SWT.SINGLE | SWT.BORDER | SWT.PASSWORD);
passwordText.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
// login button
loginButton = new Button(loginGroup, SWT.PUSH);
loginButton.setText("Login");
saveUsernameCheck = new Button(loginGroup, SWT.CHECK);
saveUsernameCheck.setText("Benutzername speichern");
}
private void loadImage() {
try {
// TODO use the ResourceLoader class to load the logo
// this way, we can be sure to get an image
// (since the ResourceLoader always returns an image,
// even if it cannot load the specified one).
titleImage = new Image(Gui.display, getClass().getResourceAsStream("/img/Logo_bwLehrpool.png"));
ImageData imgData = titleImage.getImageData();
imgData = imgData.scaledTo(imgData.width / 5, imgData.height / 5);
titleImage = new Image(Gui.display, imgData);
} catch (Exception e) {
System.out.println("Cannot load image");
System.out.println(e.getMessage());
}
}
}