Subversion Repositories eFlore/Applications.cel

Rev

Rev 3 | Rev 61 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3 Rev 5
1
package org.tela_botanica.client.vues;
1
package org.tela_botanica.client.vues;
2
 
2
 
3
import org.tela_botanica.client.image.ImageMediateur;
3
import org.tela_botanica.client.image.ImageMediateur;
4
import org.tela_botanica.client.interfaces.Rafraichissable;
4
import org.tela_botanica.client.interfaces.Rafraichissable;
5
 
5
 
6
import com.gwtext.client.data.SimpleStore;
6
import com.gwtext.client.data.SimpleStore;
7
import com.gwtext.client.data.Store;
7
import com.gwtext.client.data.Store;
8
import com.gwtext.client.dd.DragSource;
8
import com.gwtext.client.dd.DragSource;
9
import com.gwtext.client.dd.DropTarget;
9
import com.gwtext.client.dd.DropTarget;
10
import com.gwtext.client.dd.DropTargetConfig;
10
import com.gwtext.client.dd.DropTargetConfig;
11
import com.gwtext.client.widgets.Component;
11
import com.gwtext.client.widgets.Component;
12
import com.gwtext.client.widgets.event.ContainerListenerAdapter;
12
import com.gwtext.client.widgets.event.ContainerListenerAdapter;
13
import com.gwtext.client.widgets.grid.ColumnConfig;
13
import com.gwtext.client.widgets.grid.ColumnConfig;
14
import com.gwtext.client.widgets.grid.ColumnModel;
14
import com.gwtext.client.widgets.grid.ColumnModel;
15
import com.gwtext.client.widgets.grid.GridDragData;
15
import com.gwtext.client.widgets.grid.GridDragData;
16
import com.gwtext.client.widgets.grid.GridPanel;
16
import com.gwtext.client.widgets.grid.GridPanel;
17
import com.gwtext.client.core.EventObject;
17
import com.gwtext.client.core.EventObject;
18
import com.gwtext.client.dd.DragData;
18
import com.gwtext.client.dd.DragData;
-
 
19
 
-
 
20
/**
-
 
21
 * Fausse liste d'observation pour tester le drag n' drop et l'insertion
-
 
22
 * Est vouée à devenir une véritable liste avec de vraie données
-
 
23
 * @author aurelien
-
 
24
 *
19
 
25
 */
-
 
26
public class MiniListeObservationVue extends GridPanel implements Rafraichissable {
-
 
27
 
-
 
28
	/**
20
public class MiniListeObservationVue extends GridPanel implements Rafraichissable {
29
	 * Le médiateur associé à la vue
-
 
30
	 */
-
 
31
	private ImageMediateur iMediateur = null ;
-
 
32
	
21
 
33
	/**
-
 
34
	 * Booléen d'instanciation
-
 
35
	 */
-
 
36
	private boolean estInstancie = false ;
-
 
37
	
-
 
38
	/**
-
 
39
	 * Le modèle de colonnes
-
 
40
	 */
-
 
41
	private ColumnModel colModel = null ;
-
 
42
	
22
	private ImageMediateur iMediateur = null ;
43
	/**
23
	
44
	 * Constructeur avec arguments
24
	private boolean estInstancie = false ;
45
	 * @param im le médiateur à associer à la vue
25
	
46
	 */
26
	public MiniListeObservationVue(ImageMediateur im)
47
	public MiniListeObservationVue(ImageMediateur im)
27
	{
48
	{
28
		iMediateur = im ;
49
		iMediateur = im ;
29
		
50
		
30
		this.setId("x-view-mini-obs") ;
51
		this.setId("x-view-mini-obs") ;
-
 
52
		
-
 
53
		// on crée un store simple contenant un petit set de données et deux colonnes
31
		final Store store = new SimpleStore(new String[]{"plante"}, getObs());  
54
		final Store store = new SimpleStore(new String[]{"id_obs","plante"}, getObs());  
32
		ColumnConfig[] columns = {  
55
		ColumnConfig[] columns = {  
33
		//new ColumnConfig("Numero", "num_obs", 45, true),   
56
		new ColumnConfig("Numero", "id_obs", 65, true),   
34
		new ColumnConfig("Taxon", "plante", 45, true) } ;
57
		new ColumnConfig("Taxon", "plante", 150, true) } ;
35
		   
58
		   
-
 
59
        ColumnModel columnModel = new ColumnModel(columns);
-
 
60
         
-
 
61
        colModel = columnModel ;
36
         ColumnModel columnModel = new ColumnModel(columns);   
62
         
-
 
63
        setTitle("Observations");  
37
         setTitle("Observations");   
64
        // on associe le modèle de colonnes
38
         setColumnModel(columnModel);  
65
        setColumnModel(columnModel);  
39
         setHeight(390);  
66
        setHeight(390);  
40
         setWidth(200);  
67
        setWidth(200);  
41
 		//Enable drag and drop
68
        // on autorise le drag 'n drop pour un certain groupe
42
 		this.setEnableDragDrop(true);
-
 
43
 		//You need to set the same group for both grids
69
 		this.setEnableDragDrop(true);
44
 		this.setDdGroup("DragGroupName");
70
 		this.setDdGroup("DragGroupName");
45
         store.load();       
71
        store.load();       
46
		 setStore(store) ;
-
 
47
		 
-
 
48
		 configDragAndDrop() ;
-
 
49
		                  
-
 
50
	}
-
 
51
	
-
 
52
	
-
 
53
	public void ajouterListeners()
-
 
54
	{
-
 
55
		
-
 
56
		this.addListener(new ContainerListenerAdapter() {
72
		setStore(store) ;
57
 
-
 
58
			public void onHide(Component component) {
-
 
59
 
-
 
60
			}
-
 
61
 
-
 
62
			// lors du premier rendu on demande les données qui sont déjà
-
 
63
			// contenues dans la galerie qui est le premier élément affiché
-
 
64
 
-
 
65
			public void onRender(Component component) {
-
 
66
 
-
 
67
				if (!estInstancie) {
73
		
68
					
-
 
69
					//configDragAndDrop() ; 
-
 
70
			         //estInstancie = true ;
-
 
71
					
-
 
72
				}
-
 
73
			}
-
 
74
 
-
 
75
			public void onShow(Component component) {
-
 
76
 
74
		// on configure le drag 'n drop
77
			}
-
 
78
 
75
		configDragAndDrop() ;
-
 
76
		                  
-
 
77
	}
-
 
78
	
79
		});
79
	/**
80
	}
80
	 * Configure le drag 'n drop pour la liste
81
	
81
	 */
82
	public void configDragAndDrop()
82
	private void configDragAndDrop()
83
	{
83
	{
84
		// on choisit le texte qui sera affiché lors d'un drag 'n drop
84
		// on choisit le texte qui sera affiché lors d'un drag 'n drop
85
		setDragDropText("Faites glisser la selection d'observations sur une image pour les lier") ;
85
		setDragDropText("Faites glisser la selection d'observations sur une image pour les lier") ;
86
		
86
		
87
		//On active le drag 'n drop
87
		//On active le drag 'n drop
88
		this.setEnableDragDrop(true);
88
		this.setEnableDragDrop(true);
89
 
89
 
90
		// on fabrique la nouvelle configuration
90
		// on fabrique la nouvelle configuration
91
		// les éléments sur lesquels on fait du drag 'n drop doivent tous avoir le même ddGroup
91
		// les éléments sur lesquels on fait du drag 'n drop doivent tous avoir le même ddGroup
92
		this.setDdGroup("DragGroupName");
92
		this.setDdGroup("DragGroupName");
93
		DropTargetConfig dtc = new DropTargetConfig();
93
		DropTargetConfig dtc = new DropTargetConfig();
94
		dtc.setdDdGroup("DragGroupName");
94
		dtc.setdDdGroup("DragGroupName");
95
 
95
 
96
		//La drop target permet de gérer l'évenement onDrop sur l'élement courant
96
		//La drop target permet de gérer l'évenement onDrop sur l'élement courant
97
		@SuppressWarnings("unused")
97
		@SuppressWarnings("unused")
98
		DropTarget tg = new DropTarget(this, dtc)
98
		DropTarget tg = new DropTarget(this, dtc)
99
		{
99
		{
100
			public boolean notifyDrop(DragSource source, EventObject e, DragData data){		
100
			public boolean notifyDrop(DragSource source, EventObject e, DragData data){		
101
				
101
				
102
				// si on reçoit des données provenant d'une grille
102
				// si on reçoit des données provenant d'une grille
103
				if(data instanceof GridDragData)
103
				if(data instanceof GridDragData)
104
		    	  {
104
		    	  {
105
					// on la convertit 
105
					// on la convertit 
106
		    		  	GridDragData gdd = (GridDragData)data ;
106
		    		  	GridDragData gdd = (GridDragData)data ;
107
		    		  	// et on vérifie que les données ne viennent pas de l'élément courant
107
		    		  	// et on vérifie que les données ne viennent pas de l'élément courant
108
		    		  	if(gdd.getGrid().getId().equals("x-view-mini-obs"))
108
		    		  	if(gdd.getGrid().getId().equals("x-view-mini-obs"))
109
		    		  	{
109
		    		  	{
110
		    		  		return false ;
110
		    		  		return false ;
111
		    		  	}
111
		    		  	}
112
		    		  	else
112
		    		  	else
113
		    		  	{
113
		    		  	{
114
		    		  		// on appelle le médiateur
114
		    		  		// on appelle le médiateur
115
		    		  		return iMediateur.lierImagesDD(source, e, data) ;   
115
		    		  		return iMediateur.lierImagesDD(source, e, data) ;   
116
		    		  	}
116
		    		  	}
117
		    	  }
117
		    	  }
118
				return false ;
118
				return false ;
119
			}
119
			}
120
			
120
			
121
			public String notifyOver(DragSource source, EventObject e, DragData data){
121
			public String notifyOver(DragSource source, EventObject e, DragData data){
122
			    return "x-dd-drop-ok";
122
			    return "x-dd-drop-ok";
123
			}
123
			}
124
		};
124
		};
125
        
125
        
126
	}
126
	}
-
 
127
	
-
 
128
	/**
-
 
129
	 * Méthode héritée de l'interface rafraichissable
127
	
130
	 */
128
	public void rafraichir(Object nouvelleDonnees,
131
	public void rafraichir(Object nouvelleDonnees,
129
			boolean repandreRaffraichissement) {
132
			boolean repandreRaffraichissement) {
130
		// TODO Auto-generated method stub
133
		// TODO Auto-generated method stub
131
		
134
		
132
	}
135
	}
-
 
136
	
-
 
137
	/**
-
 
138
	 * Renvoie le faux set de données pour le store
-
 
139
	 * @return un tableau à deux colonnes int - String
133
	
140
	 */
134
	 private Object[][] getObs() {  
141
	private Object[][] getObs() {  
135
	         return new Object[][]{  
142
	         return new Object[][]{  
-
 
143
		                 new Object[]{"1","Plantum bizarrum"},
-
 
144
		                 new Object[]{"2","Feuillum etrangum"},
-
 
145
		                 new Object[]{"3","Spirus cotapilis"},
136
		                 new Object[]{"Plante1"} ,
146
		                 new Object[]{"4","Birita raborum"},
137
		                 new Object[]{"Plante2"},
147
		                 new Object[]{"5","Spacea sinea"},
-
 
148
		                 new Object[]{"6","Spacea subtea"},
-
 
149
		                 new Object[]{"7","Buissnum petitum"},
-
 
150
		                 new Object[]{"8","Acer monspessulanum"},
-
 
151
		                 new Object[]{"9","Geranium prouticorum"},
138
		                 new Object[]{"Plante3"},
152
		                 new Object[]{"10","Rosae epania"},
-
 
153
		                 new Object[]{"11","Rosea rougea"},
139
		                 new Object[]{"Plante4"},
154
		                 new Object[]{"12","Liciea rosa"},
-
 
155
		                 new Object[]{"13","Liciea bella"}
140
		                 new Object[]{"Plante5"}
156
		        
141
	         } ;
157
	         } ;
142
	 }
158
	 }
143
 
159
 
144
}
160
}