summaryrefslogblamecommitdiffstats
path: root/dozentenmodul/src/main/java/gui/core/LoginComposite.java
blob: 7c4f92f4601a7a62fee75f87d65166a7d64412ad (plain) (tree)
1
2
3
4
5
6
                 
 

                      
                               
                           










                                          
                                                      


                                               







                                                                                    
                                 
        
 


                                               
 


                                       
 



                                                 
 

                                                                                       
 

                                       


                                                   

                                                      

                                           
                                      
                                         
 
                                                                    


                                                                
                                          


                                                               
                                                  




                                                                                 
                
                                                       
                                                  
                                                            
                                                            


                                                
                                                                                    


                                                  
                                                                  
                                            


                                                                        

                                                                                  


                                                                               

                                                                                  

                                                                  
                                                                            

                                                                                  
 
                                           








                                                                                     
                                                          
                                        
 


                                                                                         

                                                                         
                                                                             

                                                                                       

                                                                     
                                                                                            



                                                                                       
                                             
                                                                      

                                                                    
         
 
                                  
                     





                                                                                          
                                                                      
                                                                                          
                                                                                 





                                                                
 
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());
		}
	}

}