Subversion Repositories eFlore/Archives.cel-v2

Rev

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

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