Subversion Repositories eFlore/Applications.cel

Rev

Rev 307 | Blame | Compare with Previous | Last modification | View Log | RSS feed

package org.tela_botanica.client.vues;

import org.tela_botanica.client.CarnetEnLigneMediateur;
import org.tela_botanica.client.interfaces.Rafraichissable;

import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.Widget;
import com.gwtext.client.core.EventCallback;
import com.gwtext.client.core.EventObject;
import com.gwtext.client.core.RegionPosition;
import com.gwtext.client.data.ArrayReader;
import com.gwtext.client.data.FieldDef;
import com.gwtext.client.data.MemoryProxy;
import com.gwtext.client.data.Record;
import com.gwtext.client.data.RecordDef;
import com.gwtext.client.data.Store;
import com.gwtext.client.data.StringFieldDef;
import com.gwtext.client.widgets.BoxComponent;
import com.gwtext.client.widgets.Component;
import com.gwtext.client.widgets.Panel;
import com.gwtext.client.widgets.Window;
import com.gwtext.client.widgets.event.ButtonListener;
import com.gwtext.client.widgets.event.ButtonListenerAdapter;
import com.gwtext.client.widgets.form.ComboBox;
import com.gwtext.client.widgets.form.Field;
import com.gwtext.client.widgets.form.event.ComboBoxCallback;
import com.gwtext.client.widgets.form.event.ComboBoxListener;
import com.gwtext.client.widgets.form.event.ComboBoxListenerAdapter;
import com.gwtext.client.widgets.layout.BorderLayout;
import com.gwtext.client.widgets.layout.BorderLayoutData;
import com.gwtext.client.widgets.layout.HorizontalLayout;
import com.gwtext.client.widgets.layout.RowLayout;
import com.gwtext.client.widgets.menu.Menu;

public class ListeUtilisateurAdminVue extends Window implements Rafraichissable {

        private CarnetEnLigneMediateur cMediateur = null ;
        private ComboBox listeUtil = null ;
        private Store storeUtil = null ;
        private com.gwtext.client.widgets.Button OK = null;
        private com.gwtext.client.widgets.Button annuler = null;
        private boolean selectionUtilisateur =false;
        public String utilisateur = null;
        
        private final int KEY_ALT = 18;
        private final int KEY_BACKSPACE = 8;
        private final int KEY_CTRL = 17;
        private final int KEY_DELETE = 46;
        private final int KEY_DOWN = 40;
        private final int KEY_END = 35;
        private final int KEY_ENTER = 13;
        private final int KEY_ESCAPE = 27;
        private final int KEY_HOME = 36;
        private final int KEY_LEFT = 37;
        private final int KEY_PAGEDOWN = 34;
        private final int KEY_PAGEUP = 33;
        private final int KEY_RIGHT = 39;
        private final int KEY_SHIFT = 16;
        private final int KEY_TAB = 9;
        private final int KEY_UP = 38;
        
        public ListeUtilisateurAdminVue(CarnetEnLigneMediateur cMed) {
                super("Choisir un utilisateur") ;
                
                this.cMediateur = cMed;
                
                listeUtil=new ComboBox("Utilisateurs","utilisateur",280);  
                
                this.setLayout(new RowLayout());
                
                final String resultTplUtil = "<div class=\"search-item-utilisateur\">{utilisateur}</div>";  
                
                utilisateur = cMediateur.getUtilisateur().getIdentite();

                
                listeUtil.setTpl(resultTplUtil);
                listeUtil.setMode(ComboBox.REMOTE);
                // commune.setPageSize(10); // Ne fonctionne pas 
                listeUtil.setItemSelector("div.search-item-utilisateur");
                listeUtil.setTypeAhead(true);  
                listeUtil.setHideTrigger(true);
                
                listeUtil.setDisplayField("utilisateur");
                
                listeUtil.setLoadingText("Recherche..."); 
                listeUtil.setValue(utilisateur);
                
                OK= new com.gwtext.client.widgets.Button("OK");
                annuler = new com.gwtext.client.widgets.Button("Annuler");
                
                Panel boutonPanel = new Panel();
                boutonPanel.setLayout(new HorizontalLayout(0));
                        
                add(listeUtil);
                
                boutonPanel.add(OK);
                boutonPanel.add(annuler);
                
                add(boutonPanel);
                
                this.setSize(300, 75);
                
                OK.addListener(new ButtonListenerAdapter() {

                        public void onClick(com.gwtext.client.widgets.Button button,
                                        EventObject e) {
                        if(valider()) {
                                cMediateur.changerIdentite(listeUtil.getValue());
                                close();
                        }
                        }
                });
                
                annuler.addListener(new ButtonListenerAdapter() {

                        public void onClick(com.gwtext.client.widgets.Button button,
                                        EventObject e) {
                                close();
                        }
                });
                
                final ListeUtilisateurAdminVue l = this ;
                
                listeUtil.addKeyPressListener(new EventCallback() {

                        public void execute(EventObject e) {
                                
                                switch(e.getKey()) {
                      
                                        case KEY_ALT:
                        case KEY_CTRL:
                        case KEY_DOWN:
                        case KEY_END:
                        case KEY_ESCAPE:
                        case KEY_HOME:
                        case KEY_LEFT:
                        case KEY_PAGEDOWN:
                        case KEY_PAGEUP:
                        case KEY_RIGHT:
                        case KEY_SHIFT:
                        case KEY_TAB:
                        case KEY_UP:
                        
                        break;
                        
                        case KEY_ENTER:
                          
                                 if(selectionUtilisateur) {
                                         utilisateur = listeUtil.getValue();
                                         selectionUtilisateur=false;
                                 }
                                else {
                                        if(valider()) {
                                                cMediateur.changerIdentite(utilisateur);
                                        } else {
                                                cMediateur.changerIdentite(utilisateur);
                                        }
                                        close();
                                 }
                            break;  
                            
                            default:
                                obtenirListeUtilisateur();
                            break;
                                }
                        }
                });
                
                listeUtil.addListener(new ComboBoxListenerAdapter() {

                        public void onSelect(ComboBox comboBox, Record record, int index) {
                                
                                utilisateur = record.getAsString("utilisateur");
                                listeUtil.setValue(utilisateur);
                                
                        }
                });
        }
        
        public void rafraichir(Object nouvelleDonnees,
                        boolean repandreRaffraichissement) {
                
                if(nouvelleDonnees instanceof String[][]) {
                
                        Object[][] utilData = (Object[][])nouvelleDonnees ;
                        
                        FieldDef defUtil = new StringFieldDef("utilisateur");
                        FieldDef[] defTab = {defUtil};
                        
                        RecordDef rd = new RecordDef(defTab);
                        
                        final MemoryProxy dataProxy = new MemoryProxy(utilData);
                        final ArrayReader reader = new ArrayReader(rd);         
                        
                        storeUtil =new Store(dataProxy,reader);
                        storeUtil.load() ;
        
                        listeUtil.setStore(storeUtil);
                        listeUtil.expand();
                
                }
                
        }
        
        private boolean valider() {
                if(listeUtil.getValue() != null) {
                        return true;
                }
                return false;
        }
        
        public void obtenirListeUtilisateur() {
                
                String valeur = listeUtil.getRawValue();
        cMediateur.obtenirListeUtilisateurs(valeur,this) ;
        }

        public void focusChampUtilisateur() {
                listeUtil.focus();
        }

}