package gui.core;
import gui.GuiManager;
import org.apache.log4j.Logger;
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.bwlp.thrift.iface.ImageSummaryRead;
public class LoginComposite extends Composite {
private final static Logger LOGGER = Logger.getLogger(LoginComposite.class);
protected enum LOGIN_TYPE {
BWIDM, BWLP, SAT
}
protected LOGIN_TYPE loginType = LOGIN_TYPE.BWIDM;
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 = "Dozmod - Login";
private static final String authenticationGroupLabel = "Authentifizierungsart";
/**
* Create a new login composite
*
* @param mainShell
* The shell it should be added to
*/
public LoginComposite(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[0] = new Button(authGroup, SWT.RADIO);
authButtons[0].setSelection(true);
authButtons[0].setText("Authentifizierung über bwIDM");
gridData = new GridData(GridData.FILL, GridData.FILL, true, true);
authButtons[0].setLayoutData(gridData);
authButtons[1] = new Button(authGroup, SWT.RADIO);
authButtons[1].setText("Test-Zugang mit festem Benutzernamen");
gridData = new GridData(GridData.FILL, GridData.FILL, true, true);
authButtons[1].setLayoutData(gridData);
authButtons[2] = new Button(authGroup, SWT.RADIO);
authButtons[2].setText("Direkte Verbindung zum Satelliten");
gridData = new GridData(GridData.FILL, GridData.FILL, true, true);
authButtons[2].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());
}
}
}