Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
Clear All
new posts

    Simple login form

    I try to do a simple login form :

    I have made this :

    MasterDetail.java :
    Code:
    package org.gwtbook.client;
    
    import com.google.gwt.core.client.EntryPoint;
    import com.google.gwt.user.client.ui.RootPanel;
    
    /**
     * Entry point classes define <code>onModuleLoad()</code>.
     */
    public class MasterDetail implements EntryPoint {
    
      /**
       * This is the entry point method.
       */
      public void onModuleLoad() {
       
    	  LoginComposant login = new LoginComposant();
    	  RootPanel.get().add(login);
    	  
      }
    }
    LoginDS.java
    Code:
    package org.gwtbook.client;
    
    import com.smartgwt.client.data.DataSource;
    import com.smartgwt.client.data.fields.DataSourceTextField;
    
    public class LoginDS extends DataSource {
    
    	private static LoginDS instance = null;
    	private DataSourceTextField login;
    	
    	public static LoginDS getInstance(){
    		
    		if (instance == null) {
    			instance = new LoginDS();			
    		}
    		return instance;
    	}
    	
    	public LoginDS(){
    		login = new DataSourceTextField("login","Login",50,true);
    			
    		setFields(login);
    		
    	}
    
    	public DataSourceTextField getLogin() {
    		return login;
    	}
    
    	public void setLogin(DataSourceTextField login) {
    		this.login = login;
    	}
    	
    }
    LoginComposant.java

    Code:
    package org.gwtbook.client;
    
    import com.google.gwt.user.client.ui.Composite;
    import com.smartgwt.client.data.DataSource;
    import com.smartgwt.client.widgets.form.DynamicForm;
    import com.smartgwt.client.widgets.form.fields.ButtonItem;
    import com.smartgwt.client.widgets.form.fields.HeaderItem;
    import com.smartgwt.client.widgets.form.fields.PasswordItem;
    import com.smartgwt.client.widgets.form.fields.TextItem;
    import com.smartgwt.client.widgets.form.fields.events.ClickEvent;
    import com.smartgwt.client.widgets.form.fields.events.ClickHandler;
    import com.smartgwt.client.widgets.layout.VLayout;
    
    public class LoginComposant extends Composite {
    
    	private VLayout layout = new VLayout(15);
    	private DynamicForm formLogin = new DynamicForm();
    	
    	public LoginComposant(){
    		
    		DataSource dataSource = LoginDS.getInstance();
    		
    		//Initialisation du widget
    		initWidget(layout);
    		
    		//Création du formulaire
    		formLogin.setDataSource(dataSource);
    		formLogin.setUseAllDataSourceFields(true);
    		
    		//Titre
    		HeaderItem header = new HeaderItem();
    		header.setDefaultValue("Connexion");
    		
    		//Login
    		TextItem login = new TextItem();
    		login.setName("login");
    		
    		//Mot de passe
    		PasswordItem mdp = new PasswordItem();
    		mdp.setName("mdp");
    		mdp.setTitle("Mot de passe");
    		mdp.setRequired(true);
    		mdp.setLength(20);
    		
    		//Bouton de validation
    		ButtonItem validateItem = new ButtonItem();   
            validateItem.setTitle("Validate");   
            validateItem.addClickHandler(new ClickHandler() {   
                public void onClick(ClickEvent event) {   
                    if (formLogin.validate(false)){
                    	//Validation réussie
                    	
                    }else{
                    	//Validation échouée
                    }
                }   
            });
    		
    		formLogin.setFields(header,login,mdp,validateItem);
    		
    		//Ajout du formulaire
    		layout.addMember(formLogin);
    		
    		//Affichage du Widget
    		layout.draw();
    		
    	}
    	
    }
    I don't know if it is the best thing to do and I need your help because I don't know what to do after "Validation réussie". What I want is to go to an other page and put the login in a session or something like that to know in each page who is connected.

    How exactly can I do that?

    #2
    "Going to another page" in SmartGWT just means hiding some components and showing others.

    You can stick the valid username anywhere - "global" state like this is typically stored on whatever you think of as your "application object" - it could be instance state of "MasterDetail", for example.

    Comment


      #3
      Thank you Isomorphic that's very clear.

      But how can I get the value that the user put in the field "login"?

      Is it loginDS.getInstance().getLogin().[Unknown method] ?

      If yes what is that method, i don't have any "getValue" method for datasourcetextfield.

      Thank you a lot.

      Comment


        #4
        Read the docs for DynamicForm - getValue(), getItem(), etc.

        Comment

        Working...
        X