summaryrefslogblamecommitdiffstats
path: root/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/LoginWindowLayout.java
blob: 544e84bbef9f169e78e9e382a5bb949643e708d4 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
                                             

                           










                                          
                                  
 
                                                           
 
                                                      
                                          


                                  
 
                                    
 
                                                  
                                     
                 
         
 

                                                          
 
                                 
 


                                               
 


                                       
 



                                                 
 
                                                              
                                                                                       
 

                                       
           
                           
                                                     
           
                                                         

                                           
                                      
                                         
 
                                                                    


                                                                
                                          


                                                               
                                                  




                                                                                 
                                                       
                                                  
                                                            
                                                            


                                                
                                                                                    


                                                  
                                                                  
                                            

                                                                                        
                                                                                  
                                                                       
 

                                                                                                        
                                                                                  
                                                                                
 

                                                                                                       
                                                                                  
                                                                                  
 
                                           








                                                                                     
                                                          
                                        
 
                                                                                
                                                                                                  

                                                                         
                                                                             
                                                                                                      

                                                                     
                                                                                            
                                                                                                      

                                                               
                                             
                                                                      

                                                                    
         
 
                                  
                     



                                                                             
                                                                                                                        
                                                                      
                                                                                          
                                                                     




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