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.helper.GuiManager;
public abstract class LoginWindowLayout extends Composite {
// TODO add ids to use for the authButtons group!
protected static enum LOGIN_TYPE {
BWIDM(0, "bwidm"),
BWLP(1, "bwlp"),
SAT(2, "sat");
private final int id;
private final String tag;
private LOGIN_TYPE(final int id, final String tag) {
this.id = id;
this.tag = tag;
}
public int getId() { return this.id; }
public String getTag() { return this.tag; }
public static LOGIN_TYPE getEnum(String tag) {
switch(tag) {
case "bwidm": return LOGIN_TYPE.BWIDM;
case "bwlp": return LOGIN_TYPE.BWLP;
case "sat": return LOGIN_TYPE.SAT;
default: return null;
}
}
}
// 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.BWIDM.id] = new Button(authGroup, SWT.RADIO);
authButtons[LOGIN_TYPE.BWIDM.id].setText("Authentifizierung über bwIDM");
gridData = new GridData(GridData.FILL, GridData.FILL, true, true);
authButtons[LOGIN_TYPE.BWIDM.id].setLayoutData(gridData);
authButtons[LOGIN_TYPE.BWLP.id] = new Button(authGroup, SWT.RADIO);
authButtons[LOGIN_TYPE.BWLP.id].setText("Test-Zugang mit festem Benutzernamen");
gridData = new GridData(GridData.FILL, GridData.FILL, true, true);
authButtons[LOGIN_TYPE.BWLP.id].setLayoutData(gridData);
authButtons[LOGIN_TYPE.SAT.id] = new Button(authGroup, SWT.RADIO);
authButtons[LOGIN_TYPE.SAT.id].setText("Direkte Verbindung zum Satelliten");
gridData = new GridData(GridData.FILL, GridData.FILL, true, true);
authButtons[LOGIN_TYPE.SAT.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(GuiManager.getDisplay(), getClass()
.getResourceAsStream("/img/Logo_bwLehrpool.png"));
ImageData imgData = titleImage.getImageData();
imgData = imgData.scaledTo(imgData.width / 5, imgData.height / 5);
titleImage = new Image(GuiManager.getDisplay(), imgData);
} catch (Exception e) {
System.out.println("Cannot load image");
System.out.println(e.getMessage());
}
}
}