1   /*
2    * Copyright 2007-2008 Volker Fritzsch
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *     http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License. 
15   */
16  package motej.demos.nunchuk;
17  
18  import java.awt.FlowLayout;
19  import java.util.Dictionary;
20  import java.util.Hashtable;
21  
22  import javax.swing.BorderFactory;
23  import javax.swing.JComponent;
24  import javax.swing.JLabel;
25  import javax.swing.JPanel;
26  import javax.swing.JSlider;
27  
28  /**
29   * 
30   * <p>
31   * @author <a href="mailto:vfritzsch@users.sourceforge.net">Volker Fritzsch</a>
32   */
33  @SuppressWarnings("serial")
34  public class AccelerometerPanel extends JPanel {
35  
36  	private JSlider sliderX = new JSlider(JSlider.VERTICAL, 0, 10, 5);
37  	
38  	private JSlider sliderY = new JSlider(JSlider.VERTICAL, 0, 10, 5);
39  	
40  	private JSlider sliderZ = new JSlider(JSlider.VERTICAL, 0, 10, 5);
41  	
42  	public AccelerometerPanel() {
43  		super();
44  		
45  		setLayout(new FlowLayout());
46  	}
47  	
48  	public void accelerometerValueChanged(int x, int y, int z) {
49  		sliderX.setValue(x);
50  		sliderY.setValue(y);
51  		sliderZ.setValue(z);
52  	}
53  
54  	public void setCalibrationDataX(int zeroForce, int earthGravityForce) {
55  		sliderX.setMinimum(0);
56  		sliderX.setMaximum(earthGravityForce * 2);
57  		
58  		Dictionary<Integer, JComponent> labels = new Hashtable<Integer, JComponent>();
59  		labels.put(zeroForce, new JLabel("0 G"));
60  		labels.put(earthGravityForce, new JLabel("1 G"));
61  		sliderX.setLabelTable(labels);
62  		sliderX.setPaintTrack(true);
63  		sliderX.setPaintTicks(true);
64  		sliderX.setPaintLabels(true);
65  		
66  		sliderX.setBorder(BorderFactory.createTitledBorder("X"));
67  		add(sliderX);
68  		
69  		repaint();
70  	}
71  
72  	public void setCalibrationDataY(int zeroForce, int earthGravityForce) {
73  		sliderY.setMinimum(0);
74  		sliderY.setMaximum(earthGravityForce * 2);
75  
76  		Dictionary<Integer, JComponent> labels = new Hashtable<Integer, JComponent>();
77  		labels.put(zeroForce, new JLabel("0 G"));
78  		labels.put(earthGravityForce, new JLabel("1 G"));
79  		sliderY.setLabelTable(labels);
80  		sliderY.setPaintTrack(true);
81  		sliderY.setPaintTicks(true);
82  		sliderY.setPaintLabels(true);
83  
84  		sliderY.setBorder(BorderFactory.createTitledBorder("Y"));
85  		add(sliderY);
86  		
87  		repaint();
88  	}
89  
90  	public void setCalibrationDataZ(int zeroForce, int earthGravityForce) {
91  		sliderZ.setMinimum(0);
92  		sliderZ.setMaximum(earthGravityForce * 2);	
93  
94  		Dictionary<Integer, JComponent> labels = new Hashtable<Integer, JComponent>();
95  		labels.put(zeroForce, new JLabel("0 G"));
96  		labels.put(earthGravityForce, new JLabel("1 G"));
97  		sliderZ.setLabelTable(labels);
98  		sliderZ.setPaintTrack(true);
99  		sliderZ.setPaintTicks(true);
100 		sliderZ.setPaintLabels(true);
101 
102 		sliderZ.setBorder(BorderFactory.createTitledBorder("Z"));
103 		add(sliderZ);
104 		
105 		repaint();
106 	}
107 }