Subversion Repositories eFlore/Applications.cel

Rev

Rev 2 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2 Rev 5
Line 10... Line 10...
10
import com.gwtext.client.widgets.Panel;
10
import com.gwtext.client.widgets.Panel;
Line 11... Line 11...
11
 
11
 
12
/**
12
/**
13
 * Une barre de notation avec des étoiles, tout ce qu'il ya de plus classique,
13
 * Une barre de notation avec des étoiles, tout ce qu'il ya de plus classique,
-
 
14
 * utilisant Ajax (et pas CSS)
14
 * utilisant Ajax (et pas CSS)
15
 * 
15
 * @author aurelien
16
 * @author aurelien
16
 *
17
 * 
17
 */
18
 */
Line 18... Line 19...
18
public class BarreNotationVue extends Panel implements Rafraichissable {
19
public class BarreNotationVue extends Panel implements Rafraichissable {
19
 
20
 
20
	/**
21
	/**
21
	 * Le médiateur associé
22
	 * Le médiateur associé
22
	 */
23
	 */
23
	@SuppressWarnings("unused")
24
	@SuppressWarnings("unused")
24
	private ImageMediateur iMediateur = null ;
25
	private ImageMediateur iMediateur = null;
25
	/**
26
	/**
26
	 * La note actuellement affichée
27
	 * La note actuellement affichée
27
	 */
28
	 */
28
	private int noteEnCours = 0 ;
29
	private int noteEnCours = 0;
29
	/**
30
	/**
30
	 * La note maximum
31
	 * La note maximum
31
	 */
32
	 */
32
	private int noteMax = 0 ;
33
	private int noteMax = 0;
33
	/**
34
	/**
34
	 * Booléen indiquant si une note est affectée à la barre en ce moment
35
	 * Booléen indiquant si une note est affectée à la barre en ce moment
35
	 */
36
	 */
36
	private boolean estNote = false ;
37
	private boolean estNote = false;
37
	/**
38
	/**
38
	 * Tablmeau d'images contenant les étoiles affichées
39
	 * Tablmeau d'images contenant les étoiles affichées
39
	 */
40
	 */
40
	private Image[] etoiles = null ;
41
	private Image[] etoiles = null;
41
	
42
 
42
	/**
43
	/**
43
	 * Constructeur sans argument (privé car ne doit pas être utilisé)
44
	 * Constructeur sans argument (privé car ne doit pas être utilisé)
44
	 */
45
	 */
45
	@SuppressWarnings("unused")
-
 
46
	private BarreNotationVue()
46
	@SuppressWarnings("unused")
47
	{
47
	private BarreNotationVue() {
48
		super() ;
48
		super();
49
	}
49
	}
50
	
50
 
-
 
51
	/**
-
 
52
	 * Constructeur avec arguments
51
	/**
53
	 * 
-
 
54
	 * @param im
52
	 * Constructeur avec arguments
55
	 *            le médiateur à associer à la vue
53
	 * @param im le médiateur à associer à la vue
56
	 * @param noteMax
54
	 * @param noteMax la note maximale
57
	 *            la note maximale
55
	 */
-
 
56
	public BarreNotationVue(ImageMediateur im, int noteMax)
58
	 */
57
	{
59
	public BarreNotationVue(ImageMediateur im, int noteMax) {
58
		iMediateur = im ;
60
		iMediateur = im;
59
		setNoteMax(noteMax) ;
61
		setNoteMax(noteMax);
60
		this.setSize(200, 100) ;
62
		this.setSize(200, 100);
61
		this.setBodyBorder(false) ;
63
		this.setBodyBorder(false);
62
		this.setBorder(false) ;
64
		this.setBorder(false);
63
		this.setCls("x-view-notation") ;
65
		this.setCls("x-view-notation");
64
		
66
 
65
		ajouterListeners() ;
67
		ajouterListeners();
66
		
68
 
67
	}
69
	}
68
	
-
 
69
	public void ajouterListeners()
70
 
70
	{
-
 
71
		for (int i = 0; i < etoiles.length; i++) {
-
 
Line -... Line 71...
-
 
71
	public void ajouterListeners() {
Line 72... Line 72...
72
			
72
		for (int i = 0; i < etoiles.length; i++) {
73
			etoiles[i].addMouseListener(new MouseListenerAdapter() {
73
 
74
 
74
			etoiles[i].addMouseListener(new MouseListenerAdapter() {
75
 
75
 
76
				// si la souris passe sur la barre
76
				// si la souris passe sur la barre
77
				public void onMouseEnter(Widget sender) {
77
				public void onMouseEnter(Widget sender) {
-
 
78
 
78
					
79
					Image enCours = (Image) sender;
79
					Image enCours = (Image)sender ;
80
 
80
					
-
 
81
					// on met en surbrillance toutes les étoiles allant de la première jusqu'à 
81
					// on met en surbrillance toutes les étoiles allant de la
82
					// celle sous le curseur
82
					// première jusqu'à
83
					for(int i = 0 ; etoiles[i] != enCours ; i++)
83
					// celle sous le curseur
84
					{
84
					for (int i = 0; etoiles[i] != enCours; i++) {
85
						etoiles[i].setUrl("note-hover.gif") ;
85
						etoiles[i].setUrl("note-hover.gif");
Line 86... Line 86...
86
					}
86
					}
87
						enCours.setUrl("note-hover.gif") ;
87
					enCours.setUrl("note-hover.gif");
88
					
88
 
89
				}
89
				}
90
 
90
 
91
				// si la souris sort de la barre
91
				// si la souris sort de la barre
Line 92... Line -...
92
				public void onMouseLeave(Widget sender) {
-
 
93
				
92
				public void onMouseLeave(Widget sender) {
94
					// on affiche la véritable note
93
 
95
					afficherNote() ;
94
					// on affiche la véritable note
96
				}
95
					afficherNote();
97
 
96
				}
98
				
97
 
99
			}) ;
98
			});
100
			
99
 
101
			etoiles[i].addClickListener(new ClickListener() {
100
			etoiles[i].addClickListener(new ClickListener() {
-
 
101
				// si on clique sur une étoiles
102
				// si on clique sur une étoiles
102
				public void onClick(Widget sender) {
103
				public void onClick(Widget sender) {
-
 
104
					
103
 
105
					int i = 0 ;
104
					int i = 0;
106
					
105
 
107
					// on récupère le numéro de l'étoile sur laquelle on a cliqué
106
					// on récupère le numéro de l'étoile sur laquelle on a
108
					while(etoiles[i] != (Image)sender)
107
					// cliqué
109
					{
108
					while (etoiles[i] != (Image) sender) {
110
						i++ ;
-
 
111
					}			
109
						i++;
112
					// et on affecte la note
110
					}
113
					noter(i) ;
111
					// et on affecte la note
114
					
112
					noter(i);
115
				}
113
 
116
				
114
				}
117
				
115
 
118
			}) ;
116
			});
119
		}
117
		}
120
		
118
 
121
	}
119
	}
122
	
120
 
123
	/**
121
	/**
124
	 * Fonction héritée de l'interface rafraichissable
122
	 * Fonction héritée de l'interface rafraichissable
125
	 */
-
 
126
	public void rafraichir(Object nouvelleDonnees,
123
	 */
127
			boolean repandreRaffraichissement) {
124
	public void rafraichir(Object nouvelleDonnees,
128
		
125
			boolean repandreRaffraichissement) {
129
		// si on recoit un tableau de string
126
 
130
		if(nouvelleDonnees instanceof String[])
127
		// si on recoit un tableau de string
131
		{	
128
		if (nouvelleDonnees instanceof String[]) {
132
			// on récupère le premier élément (un entier, qui contient la note)
-
 
133
			String[] note = (String[])nouvelleDonnees ;
129
			// on récupère le premier élément (un entier, qui contient la note)
134
			int noteInt = Integer.parseInt(note[0]) ;
130
			String[] note = (String[]) nouvelleDonnees;
135
			
131
			int noteInt = Integer.parseInt(note[0]);
136
			// si l'entier est une note valide
132
 
137
			if(noteInt != -1 && noteInt >= 0)
133
			// si l'entier est une note valide
138
			{
-
 
139
				
134
			if (noteInt != -1 && noteInt >= 0) {
140
				noter(noteInt) ;
135
 
-
 
136
				noter(noteInt);
141
			}
137
			}
142
			// sinon si l'entier vaut -1
138
			// sinon si l'entier vaut -1
143
			else
139
			else {
144
			{
140
				// alors on note avec 0
145
				// alors on note avec 0 
141
				// et on met le booleen de notation a false (qui signifie que
146
				// et on met le booleen de notation a false (qui signifie que l'image n'est pas encore notée)
142
				// l'image n'est pas encore notée)
147
				estNote = false ;
143
				estNote = false;
148
				noteEnCours = 0 ;
144
				noteEnCours = 0;
149
				// et demande l'affichage
145
				// et demande l'affichage
150
				afficherNote() ;
146
				afficherNote();
151
			}
147
			}
152
			
148
 
-
 
149
		}
-
 
150
 
153
		}
151
	}
154
		
152
 
155
	}
153
	/**
156
	
-
 
157
	/**
154
	 * Affecte une note à la barre et rafraichit l'affichage
158
	 * Affecte une note à la barre et rafraichit l'affichage
155
	 * 
159
	 * @param note la nouvelle note
156
	 * @param note
160
	 */
157
	 *            la nouvelle note
161
	public void noter(int note)
158
	 */
162
	{
159
	public void noter(int note) {
163
		// on affecte la note
160
		// on affecte la note
164
		noteEnCours = note ;
161
		noteEnCours = note;
165
		// on met le boolean de notation à true (l'image est notée)
162
		// on met le boolean de notation à true (l'image est notée)
166
		estNote = true ;
163
		estNote = true;
-
 
164
		// et on demande l'affichage
-
 
165
		afficherNote();
167
		// et on demande l'affichage
166
	}
168
		afficherNote() ;
167
 
169
	}
168
	/**
170
	
-
 
171
	/**
169
	 * Setteur pour la note maximale
172
	 * Setteur pour la note maximale
170
	 * 
173
	 * @param nMax la nouvelle note maximale
171
	 * @param nMax
174
	 */
172
	 *            la nouvelle note maximale
175
	public void setNoteMax(int nMax)
173
	 */
176
	{
174
	public void setNoteMax(int nMax) {
177
		// on affecte la note
175
		// on affecte la note
178
		noteMax = nMax ;
-
 
179
		// on prépare le tableau d'image
176
		noteMax = nMax;
180
		etoiles = new Image[noteMax] ;
177
		// on prépare le tableau d'image
181
		
178
		etoiles = new Image[noteMax];
182
		// qu'on remplit par defaut avec des images d'étoiles vides
179
 
183
		for(int i = 0 ; i < noteMax ; i++)
180
		// qu'on remplit par defaut avec des images d'étoiles vides
184
		{
181
		for (int i = 0; i < noteMax; i++) {
185
			etoiles[i] = new Image("etoile_vide.jpg") ;
182
			etoiles[i] = new Image("etoile_vide.jpg");
186
			etoiles[i].setStylePrimaryName("x-view-notation-bar") ;			
183
			etoiles[i].setStylePrimaryName("x-view-notation-bar");
187
			this.add(etoiles[i]) ;
184
			this.add(etoiles[i]);
188
		}
185
		}
189
	}
-
 
190
	
186
	}
191
	/**
187
 
192
	 * Affiche la note d'une image sous la forme d'étoiles
-
 
193
	 */
188
	/**
194
	public void afficherNote()
189
	 * Affiche la note d'une image sous la forme d'étoiles
195
	{	
-
 
196
		// si l'image est notée
190
	 */
197
		if(estNote)
191
	public void afficherNote() {
198
		{
192
		// si l'image est notée
-
 
193
		if (estNote) {
199
			// on affiche autant d'étoiles que le chiffre de la note
194
			// on affiche autant d'étoiles que le chiffre de la note
200
			for(int i = 0 ; i <= noteEnCours ; i++)
-
 
201
			{
195
			for (int i = 0; i <= noteEnCours; i++) {
202
				etoiles[i].setUrl("note-on.gif") ;
196
				etoiles[i].setUrl("note-on.gif");
203
			}
197
			}
204
			// et si elle est inférieure à la note maximale, on remplit le reste par des étoiles vides
198
			// et si elle est inférieure à la note maximale, on remplit le reste
205
			for (int j = noteEnCours + 1 ; j < noteMax ; j++) 
199
			// par des étoiles vides
206
			{						
-
 
207
				etoiles[j].setUrl("note-off.gif") ;						
200
			for (int j = noteEnCours + 1; j < noteMax; j++) {
208
			}
201
				etoiles[j].setUrl("note-off.gif");
209
		}
-
 
210
		// sinon
202
			}
211
		else
203
		}
212
		{
204
		// sinon
213
			// on remplit toute la barre avec des étoiles vides
-
 
214
			for(int i = 0 ; i < noteMax ; i++)
205
		else {
215
			{
206
			// on remplit toute la barre avec des étoiles vides
216
				etoiles[i].setUrl("note-off.gif") ;
207
			for (int i = 0; i < noteMax; i++) {
217
			}
208
				etoiles[i].setUrl("note-off.gif");
218
		}
209
			}
-
 
210
		}
219
		
211
 
220
		
212
	}
221
	}
213
 
222
	
-
 
223
	/**
214
	/**
224
	 * Accesseur pour la note en cours sous forme de string
215
	 * Accesseur pour la note en cours sous forme de string
Line 225... Line 216...
225
	 * @return
216
	 *