Subversion Repositories eFlore/Archives.cel-v1

Rev

Rev 26 | Go to most recent revision | Blame | Last modification | View Log | RSS feed

/**
 David Delon david.delon@clapas.net 2007
 
 */

/*
 * TopPanel.java  : affichage information portant sur le statut de la connexion utilisateur
 * 
 * 
 * 1: Le programme affiche le statut connecte si l'utilisateur s'est connecte precedemment, sinon s'affiche le statut deconnecte
 * 2: Le programme arme les actions liees a la connection ou a la deconnection
 *    - Connection : affichage de la boite de connexion
 *    - Deconnexion : appel du service de deconnexion, et appel de la re-initialisation de l'affichage pour le nouvel identifiant utilisateur obtenu (identifiant  de session)
 */
package org.tela_botanica.client;

import com.google.gwt.json.client.JSONArray;
import com.google.gwt.json.client.JSONBoolean;
import com.google.gwt.json.client.JSONParser;
import com.google.gwt.json.client.JSONString;
import com.google.gwt.json.client.JSONValue;
import com.google.gwt.user.client.HTTPRequest;
import com.google.gwt.user.client.ResponseTextHandler;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Widget;


public class TopPanel extends Composite {

        
  private Mediator mediator=null;
          
  private String user =null;    
  private Label signLabel = new Label() ;
  
  private String serviceBaseUrl = null;
        
  public TopPanel(final Mediator med) {

        mediator=med;
          
        mediator.registerTopPanel(this);
          
        user=mediator.getUser();
        
        signLabel.setStyleName("selection_label");
        
    serviceBaseUrl = mediator.getServiceBaseUrl();

    if (!mediator.getConnected()) {
        signLabel.setText("Connexion");
    }
    else {
        signLabel.setText(user+ " (deconnexion)");
    }

        HorizontalPanel outer = new HorizontalPanel();
        HorizontalPanel inner = new HorizontalPanel();
   
    
        outer.setHorizontalAlignment(HorizontalPanel.ALIGN_RIGHT);

         inner.add(signLabel);
         inner.add(new HTML("<b>Carnet en ligne</b>"));
         
         inner.setSpacing(3);
         outer.add(inner);

         
         
         signLabel.addClickListener(
                        new ClickListener() {
                                public void onClick(Widget sender) {
                    
                                        // Non connecte ? Lien vers boite de connection
                                        
                                        if (!mediator.getConnected()) {
                                                LoginDialog loginDialog = new LoginDialog(med);

                                                // Position it roughly in the middle of the screen.
                                                int left = (Window.getClientWidth() - 512) / 2;
                                                int top = (Window.getClientHeight() - 256) / 2;
                                                loginDialog.setPopupPosition(left, top);
                                                loginDialog.show();
                                        }
                                        
                                        else {
                                        
                                                // Deja Connecte : lancement deconnexion sur selection de l'action
                                                HTTPRequest.asyncGet(serviceBaseUrl + "/User/" + user    ,
                                                                new ResponseTextHandler() {

                                                                        public void onCompletion(String str) {
                                                                                
                                                                                        JSONValue jsonValue = JSONParser.parse(str);
                                                                                        JSONArray jsonArray;
                                                                                        if ((jsonArray = jsonValue.isArray()) != null) {
                                                                                                user = Util.toCelString(((JSONString) jsonArray.get(0)).toString()); // Identifiant utilisateur : identifant de session
                                                                                                mediator.setConnected(((JSONBoolean) jsonArray.get(1)).booleanValue());
                                                                                        }

                                                                                        if (!mediator.getConnected()) { // La deconnexion a ete accepte :
                                                                                                mediator.onLogoff(user);
                                                                                        }
                                                                        }
                                                });

                                                
                                        }
        
                                }
                        }
        );              

    initWidget(outer);
    
  }

public Label getSignLabel() {
        return signLabel;
}

  

  
}


/* +--Fin du code ---------------------------------------------------------------------------------------+
* $Log$
* Revision 1.5  2007-09-17 19:25:34  ddelon
* Documentation
*
* 
*/