Subversion Repositories eFlore/Applications.cel

Rev

Rev 3 | Rev 61 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
3 aperonnet 1
package org.tela_botanica.client.vues;
2
 
3
import org.tela_botanica.client.image.ImageMediateur;
4
import org.tela_botanica.client.interfaces.Rafraichissable;
5
 
6
import com.gwtext.client.data.SimpleStore;
7
import com.gwtext.client.data.Store;
8
import com.gwtext.client.dd.DragSource;
9
import com.gwtext.client.dd.DropTarget;
10
import com.gwtext.client.dd.DropTargetConfig;
11
import com.gwtext.client.widgets.Component;
12
import com.gwtext.client.widgets.event.ContainerListenerAdapter;
13
import com.gwtext.client.widgets.grid.ColumnConfig;
14
import com.gwtext.client.widgets.grid.ColumnModel;
15
import com.gwtext.client.widgets.grid.GridDragData;
16
import com.gwtext.client.widgets.grid.GridPanel;
17
import com.gwtext.client.core.EventObject;
18
import com.gwtext.client.dd.DragData;
19
 
5 aperonnet 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
 *
25
 */
3 aperonnet 26
public class MiniListeObservationVue extends GridPanel implements Rafraichissable {
27
 
5 aperonnet 28
	/**
29
	 * Le médiateur associé à la vue
30
	 */
3 aperonnet 31
	private ImageMediateur iMediateur = null ;
32
 
5 aperonnet 33
	/**
34
	 * Booléen d'instanciation
35
	 */
3 aperonnet 36
	private boolean estInstancie = false ;
37
 
5 aperonnet 38
	/**
39
	 * Le modèle de colonnes
40
	 */
41
	private ColumnModel colModel = null ;
42
 
43
	/**
44
	 * Constructeur avec arguments
45
	 * @param im le médiateur à associer à la vue
46
	 */
3 aperonnet 47
	public MiniListeObservationVue(ImageMediateur im)
48
	{
49
		iMediateur = im ;
50
 
51
		this.setId("x-view-mini-obs") ;
5 aperonnet 52
 
53
		// on crée un store simple contenant un petit set de données et deux colonnes
54
		final Store store = new SimpleStore(new String[]{"id_obs","plante"}, getObs());
3 aperonnet 55
		ColumnConfig[] columns = {
5 aperonnet 56
		new ColumnConfig("Numero", "id_obs", 65, true),
57
		new ColumnConfig("Taxon", "plante", 150, true) } ;
3 aperonnet 58
 
5 aperonnet 59
        ColumnModel columnModel = new ColumnModel(columns);
60
 
61
        colModel = columnModel ;
62
 
63
        setTitle("Observations");
64
        // on associe le modèle de colonnes
65
        setColumnModel(columnModel);
66
        setHeight(390);
67
        setWidth(200);
68
        // on autorise le drag 'n drop pour un certain groupe
3 aperonnet 69
 		this.setEnableDragDrop(true);
70
 		this.setDdGroup("DragGroupName");
5 aperonnet 71
        store.load();
72
		setStore(store) ;
73
 
74
		// on configure le drag 'n drop
75
		configDragAndDrop() ;
3 aperonnet 76
 
77
	}
78
 
5 aperonnet 79
	/**
80
	 * Configure le drag 'n drop pour la liste
81
	 */
82
	private void configDragAndDrop()
3 aperonnet 83
	{
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") ;
86
 
87
		//On active le drag 'n drop
88
		this.setEnableDragDrop(true);
89
 
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
92
		this.setDdGroup("DragGroupName");
93
		DropTargetConfig dtc = new DropTargetConfig();
94
		dtc.setdDdGroup("DragGroupName");
95
 
96
		//La drop target permet de gérer l'évenement onDrop sur l'élement courant
97
		@SuppressWarnings("unused")
98
		DropTarget tg = new DropTarget(this, dtc)
99
		{
100
			public boolean notifyDrop(DragSource source, EventObject e, DragData data){
101
 
102
				// si on reçoit des données provenant d'une grille
103
				if(data instanceof GridDragData)
104
		    	  {
105
					// on la convertit
106
		    		  	GridDragData gdd = (GridDragData)data ;
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"))
109
		    		  	{
110
		    		  		return false ;
111
		    		  	}
112
		    		  	else
113
		    		  	{
114
		    		  		// on appelle le médiateur
115
		    		  		return iMediateur.lierImagesDD(source, e, data) ;
116
		    		  	}
117
		    	  }
118
				return false ;
119
			}
120
 
121
			public String notifyOver(DragSource source, EventObject e, DragData data){
122
			    return "x-dd-drop-ok";
123
			}
124
		};
125
 
126
	}
127
 
5 aperonnet 128
	/**
129
	 * Méthode héritée de l'interface rafraichissable
130
	 */
3 aperonnet 131
	public void rafraichir(Object nouvelleDonnees,
132
			boolean repandreRaffraichissement) {
133
		// TODO Auto-generated method stub
134
 
135
	}
136
 
5 aperonnet 137
	/**
138
	 * Renvoie le faux set de données pour le store
139
	 * @return un tableau à deux colonnes int - String
140
	 */
141
	private Object[][] getObs() {
3 aperonnet 142
	         return new Object[][]{
5 aperonnet 143
		                 new Object[]{"1","Plantum bizarrum"},
144
		                 new Object[]{"2","Feuillum etrangum"},
145
		                 new Object[]{"3","Spirus cotapilis"},
146
		                 new Object[]{"4","Birita raborum"},
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"},
152
		                 new Object[]{"10","Rosae epania"},
153
		                 new Object[]{"11","Rosea rougea"},
154
		                 new Object[]{"12","Liciea rosa"},
155
		                 new Object[]{"13","Liciea bella"}
156
 
3 aperonnet 157
	         } ;
158
	 }
159
 
160
}