comparison ExperimentController.java @ 26:c5db34797ff3

Visual feedback for responses: consistent for mouse and keyboard input; disable buttons when not inactive. Improved debugging messages.
author Jeremy Gow <jeremy.gow@gmail.com>
date Mon, 12 Nov 2012 22:48:39 +0000
parents 9fc8683b8fed
children 84d943797cf2
comparison
equal deleted inserted replaced
25:cd11981476ec 26:c5db34797ff3
152 exp.runExperiment(); 152 exp.runExperiment();
153 153
154 } 154 }
155 } 155 }
156 } else { 156 } else {
157 if (exp.getDebug())
158 System.out.println("Button response, getAcceptingResponses: " + gui.getAcceptingResponses() + " " + e.getActionCommand());
159
157 JButton[] rButtons = sp.getResponseButtons(); 160 JButton[] rButtons = sp.getResponseButtons();
158 for (int i = 0; i < rButtons.length; i++) { 161 for (int i = 0; i < rButtons.length; i++) {
159 System.out.println("getAcceptingResponses: " + gui.getAcceptingResponses());
160 if (source == rButtons[i] && (exp.isRunning() || exp.hasRun()) && gui.getAcceptingResponses()) { 162 if (source == rButtons[i] && (exp.isRunning() || exp.hasRun()) && gui.getAcceptingResponses()) {
163 ratingResponse(i, time);
164 /*
161 block.addResponse(i+1, time); 165 block.addResponse(i+1, time);
162 gui.setAcceptingResponses(false); 166 gui.setAcceptingResponses(false);
163 rButtons[i].setBackground(Color.red); 167 rButtons[i].setBackground(Color.red);
164 } 168 rButtons[i].setOpaque(true);
165 } 169 */
166 } 170 }
167 } 171 }
172 }
173 }
174
168 175
169 public void keyPressed(KeyEvent e) { 176 public void keyPressed(KeyEvent e) {
170 //System.out.println("Key pressed: " + e.getKeyChar()); 177 if (exp.getDebug())
178 System.out.println("Key pressed: " + e.getKeyChar());
171 long time = System.nanoTime(); 179 long time = System.nanoTime();
172 180
173 Block block = exp.getCurrentBlock(); 181 Block block = exp.getCurrentBlock();
174 sp = gui.getStimulusPanel(); 182 sp = gui.getStimulusPanel();
175 JButton[] rButtons = sp.getResponseButtons(); 183 JButton[] rButtons = sp.getResponseButtons();
184 } 192 }
185 } else { 193 } else {
186 for (int i = 0; i < rButtons.length; i++) { 194 for (int i = 0; i < rButtons.length; i++) {
187 //System.out.println("Char = " + Character.forDigit(i+1, 10)); 195 //System.out.println("Char = " + Character.forDigit(i+1, 10));
188 if (e.getKeyChar() == Character.forDigit(i+1, 10)) { 196 if (e.getKeyChar() == Character.forDigit(i+1, 10)) {
197 ratingResponse(i, time);
198 /*
189 if (exp.getDebug()) 199 if (exp.getDebug())
190 System.out.println("Got rating: " + (i + 1)); 200 System.out.println("Got rating: " + (i + 1));
191 block.addResponse(i+1, time); 201 block.addResponse(i+1, time);
192 gui.setAcceptingResponses(false); 202 gui.setAcceptingResponses(false);
203 */
193 } 204 }
194 //else 205 //else
195 // block.addResponse(0, time); 206 // block.addResponse(0, time);
196 } 207 }
197 } 208 }
202 // System.out.println("Key released: " + e.getKeyChar()); 213 // System.out.println("Key released: " + e.getKeyChar());
203 } 214 }
204 public void keyTyped(KeyEvent e) { 215 public void keyTyped(KeyEvent e) {
205 //System.out.println("Key typed: " + e.getKeyChar()); 216 //System.out.println("Key typed: " + e.getKeyChar());
206 } 217 }
218
219 protected void ratingResponse(int buttonIndex, long time) {
220
221 int rating = buttonIndex + 1;
222
223 if (exp.getDebug())
224 System.out.println("Rating: " + rating);
225 exp.getCurrentBlock().addResponse(rating, time);
226 sp.highlightResponse(buttonIndex);
227 gui.setAcceptingResponses(false);
228 }
207 } 229 }