annotate StimulusPanel.java @ 35:c860b5b4428d

Remove Block.class
author Jeremy Gow <jeremy.gow@gmail.com>
date Wed, 14 Nov 2012 12:15:51 +0000
parents f23acab50cd3
children d3977e825d91
rev   line source
m@0 1 /*=============================================================================
m@0 2 * File: StimulusPanel.java
m@0 3 * Author: Marcus Pearce <m.pearce@gold.ac.uk>
m@0 4 * Created: <2007-12-05 11:24:00 marcusp>
marcus@21 5 * Time-stamp: <2012-03-27 16:39:33 marcusp>
m@0 6 *=============================================================================
m@0 7 */
m@0 8
m@0 9 import java.awt.*;
m@0 10 import java.awt.event.*;
m@0 11 import javax.swing.*;
m@0 12
m@0 13 public class StimulusPanel extends JPanel {
m@0 14
m@0 15 /* the Experiment */
m@0 16 private Experiment exp;
m@0 17 private ExperimentGui gui;
m@0 18
m@0 19 /* navigation buttons */
m@0 20 private JButton playButton, nextButton;
m@0 21
m@0 22 /* The response buttons */
m@0 23 private JButton[] responseButton;
m@0 24
m@0 25 /* The song number label */
m@0 26 private JLabel songNumberLabel;
m@0 27
m@0 28 /* The questions about each melody */
m@0 29 private JComboBox q1Box;
m@0 30 private JComboBox q2Box;
m@0 31
m@0 32 /* accessors */
m@0 33 public JButton getPlayButton() { return playButton; }
m@0 34 public JButton getNextButton() { return nextButton; }
m@0 35 public JButton[] getResponseButtons() { return responseButton; }
m@0 36 public JComboBox getQ1Box() { return q1Box; }
m@0 37 public JComboBox getQ2Box() { return q2Box; }
m@0 38
m@0 39 /* constructor */
m@0 40 public StimulusPanel(ExperimentGui egui, Clock clock) {
m@0 41
m@0 42 gui = egui;
m@0 43 exp = gui.getExperiment();
m@0 44 responseButton = new JButton[exp.getScaleLength()];
m@0 45
m@0 46 // The display panel (Clock)
m@0 47 JPanel displayPanel = new JPanel();
m@0 48 displayPanel.setBackground(Color.black);
m@0 49 displayPanel.setBorder(BorderFactory.createRaisedBevelBorder());
m@0 50 displayPanel.setLayout(new GridBagLayout());
m@0 51 GridBagConstraints c = new GridBagConstraints();
m@0 52 c.fill = GridBagConstraints.HORIZONTAL;
m@0 53 c.gridx = 2;
m@0 54 c.gridy = 2;
m@0 55 displayPanel.add(clock, c);
m@0 56
m@0 57 // Add the response buttons
jeremy@31 58 /*
m@0 59 JPanel responsePanel = new JPanel();
m@0 60 responsePanel.setLayout (new BorderLayout());
m@0 61 responsePanel.setBorder(BorderFactory.createRaisedBevelBorder());
m@0 62
m@0 63 JPanel anchorsPanel = new JPanel();
m@0 64 anchorsPanel.add(new JLabel(exp.getLowAnchor()), BorderLayout.WEST);
m@0 65 anchorsPanel.add(new JLabel(" "),
m@0 66 BorderLayout.CENTER);
m@0 67 anchorsPanel.add(new JLabel(exp.getHighAnchor()), BorderLayout.EAST);
jeremy@31 68
m@0 69 JPanel ratingsPanel = new JPanel();
m@0 70 for (int i = 0; i < responseButton.length; i++) {
m@0 71 responseButton[i] = new JButton(Integer.toString(i+1));
m@0 72 responseButton[i].setFocusPainted(false);
m@0 73 ratingsPanel.add(responseButton[i]);
m@0 74 }
m@0 75 responsePanel.add(ratingsPanel, BorderLayout.NORTH);
m@0 76 responsePanel.add(anchorsPanel, BorderLayout.SOUTH);
jeremy@31 77 */
jeremy@31 78
jeremy@31 79 JPanel responsePanel = new JPanel();
jeremy@31 80 responsePanel.setLayout(new FlowLayout());
jeremy@31 81 responsePanel.setBorder(BorderFactory.createRaisedBevelBorder());
jeremy@31 82
jeremy@31 83 responsePanel.add(new JLabel(exp.getLowAnchor()));
jeremy@31 84 for (int i = 0; i < responseButton.length; i++) {
jeremy@31 85 responseButton[i] = new JButton(Integer.toString(i+1));
jeremy@31 86 responseButton[i].setFocusPainted(false);
jeremy@31 87 responsePanel.add(responseButton[i]);
jeremy@31 88 }
jeremy@31 89 responsePanel.add(new JLabel(exp.getHighAnchor()));
m@0 90
m@0 91 // Questions Panel
m@0 92 JPanel questionsPanel = new JPanel();
m@0 93 GridLayout gl = new GridLayout(2,2);
m@0 94 gl.setHgap(50);
m@8 95 questionsPanel.setLayout(gl);
m@0 96
m@8 97 if (exp.getAskFamiliarity()) {
m@8 98 String[] q1BoxOptions = { "", "Yes", "No" };
m@8 99 q1Box = new JComboBox(q1BoxOptions);
m@8 100 q1Box.setSelectedIndex(0);
m@8 101 questionsPanel.add(new JLabel("Are you familiar with this melody?"));
m@8 102 questionsPanel.add(q1Box);
m@8 103 }
m@0 104
m@8 105 if (exp.getAskLiking()) {
m@8 106 String[] q2BoxOptions = { "", "1", "2", "3", "4", "5"};
m@8 107 q2Box = new JComboBox(q2BoxOptions);
m@8 108 q2Box.setSelectedIndex(0);
jeremy@34 109 questionsPanel.add(new JLabel("How much do you like this melody as a whole? (1 = not at all; 5 = very much)"));
m@8 110 questionsPanel.add(q2Box);
m@8 111 }
m@0 112
m@0 113 JPanel questionsPanel2 = new JPanel();
m@0 114 questionsPanel2.setBorder(BorderFactory.createRaisedBevelBorder());
m@0 115 questionsPanel2.add(questionsPanel, BorderLayout.CENTER);
m@0 116
m@0 117 // Navigation Panel
m@0 118 JPanel navPanel = new JPanel();
m@0 119 playButton = new JButton(new ImageIcon("Icons/Play24.gif"));
m@0 120 playButton.setText("Play");
m@0 121
m@0 122 nextButton = new JButton(new ImageIcon("Icons/StepForward24.gif"));
marcus@21 123 nextButton.setText("Next");
m@0 124
m@0 125 songNumberLabel = new JLabel("");
m@0 126 setSongNumberText();
m@0 127 navPanel.add(songNumberLabel);
m@0 128 //navPanel.add(playButton);
m@0 129 navPanel.add(nextButton);
m@0 130 navPanel.setBorder(BorderFactory.createRaisedBevelBorder());
m@0 131
m@0 132 // Add it all
m@0 133 JPanel southPanel = new JPanel();
m@0 134 southPanel.setLayout (new BorderLayout());
m@0 135 southPanel.add(responsePanel, BorderLayout.NORTH);
m@0 136 southPanel.add(questionsPanel2, BorderLayout.CENTER);
m@0 137
m@0 138 this.setLayout (new BorderLayout());
m@0 139 this.add(navPanel, BorderLayout.NORTH);
m@0 140 this.add(displayPanel, BorderLayout.CENTER);
m@0 141 this.add(southPanel, BorderLayout.SOUTH);
m@0 142 }
m@0 143
JShulver@23 144
JShulver@23 145 //resets the background colour of the buttons
JShulver@23 146 public void resetButtonBackgrounds() {
JShulver@23 147 for(JButton button : responseButton) {
JShulver@23 148 button.setBackground(UIManager.getColor( "Button.background" ));
JShulver@23 149 }
JShulver@23 150 }
JShulver@23 151
JShulver@23 152
m@0 153 public void setSongNumberText() {
m@0 154 String m =
m@0 155 "Block " +
m@0 156 exp.getCurrentBlockID() +
m@0 157 ", Melody " +
m@0 158 Integer.toString(exp.getCurrentBlock().getMelodyNumber()) +
m@0 159 ": ";
m@0 160 songNumberLabel.setText(m);
m@0 161 }
m@0 162
m@0 163 public void defaultAnswers() {
m@8 164 if (exp.getAskFamiliarity())
m@8 165 q1Box.setSelectedIndex(0);
m@8 166 if (exp.getAskLiking())
m@8 167 q2Box.setSelectedIndex(0);
m@0 168 }
m@0 169
m@0 170 public boolean unansweredQuestions() {
m@8 171 if ((exp.getAskFamiliarity() && q1Box.getSelectedItem().equals("")) ||
m@8 172 (exp.getAskLiking() && q2Box.getSelectedItem().equals("")))
m@0 173 return true;
m@0 174 else
m@0 175 return false;
m@0 176 }
m@0 177
m@0 178 public void addAllListeners(ActionListener al) {
m@0 179 playButton.addActionListener(al);
m@0 180 nextButton.addActionListener(al);
m@0 181
m@0 182 for (int i = 0; i < responseButton.length; i++) {
m@0 183 responseButton[i].addActionListener(al);
m@0 184 }
m@0 185 }
m@0 186
m@0 187 public void addAllKeyListeners(KeyListener al) {
m@0 188 playButton.addKeyListener(al);
m@0 189 nextButton.addKeyListener(al);
m@0 190
m@0 191 for (int i = 0; i < responseButton.length; i++) {
m@0 192 responseButton[i].addKeyListener(al);
m@0 193 }
m@0 194 }
jeremy@26 195
jeremy@26 196 public void setResponseEnabled(boolean set) {
jeremy@26 197 for (int i = 0; i < responseButton.length; i++) {
jeremy@26 198 responseButton[i].setEnabled(set);
jeremy@26 199 }
jeremy@26 200 }
jeremy@26 201
jeremy@26 202 public void highlightResponse(int buttonIndex) {
jeremy@26 203 responseButton[buttonIndex].setBackground(Color.blue);
jeremy@26 204 responseButton[buttonIndex].setOpaque(true);
jeremy@28 205 responseButton[buttonIndex].revalidate();
jeremy@26 206 }
jeremy@26 207
m@0 208 }