annotate StimulusPanel.java @ 52:76e99859bdb4 tip

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