source: trunk/src_apollo/org/apollo/gui/TimeAxisPanel.java@ 315

Last change on this file since 315 was 315, checked in by bjn8, 16 years ago

Apollo spin-off added

File size: 2.5 KB
Line 
1package org.apollo.gui;
2
3import java.awt.Event;
4import java.awt.Graphics;
5import java.awt.event.ComponentEvent;
6import java.awt.event.ComponentListener;
7import java.awt.event.MouseEvent;
8import java.awt.event.MouseListener;
9
10import javax.sound.sampled.AudioFormat;
11import javax.swing.JPanel;
12
13import org.apollo.util.AudioMath;
14
15/**
16 * A time scale along the X axis that can be rendered.
17 *
18 * Observes a SampledTrackGraphView - keeps time axis consistent with
19 * current time scale on the observed SampledTrackGraphView.
20 *
21 * @author Brook Novak
22 *
23 */
24public class TimeAxisPanel extends JPanel implements TimelineChangeListener, MouseListener {
25
26 private static final long serialVersionUID = 1L;
27
28 private SampledTrackGraphView observedSubject;
29
30 private TimeAxis timeAxis = new TimeAxis();
31
32 public TimeAxisPanel(SampledTrackGraphView graph) {
33 assert (graph != null);
34
35 observedSubject = graph;
36 graph.addTimeScaleChangeListener(this); // observe
37
38 // Auto-adjust scale when component resizes.
39 this.addComponentListener(new ComponentListener() {
40
41 public void componentHidden(ComponentEvent e) {
42 }
43
44 public void componentMoved(ComponentEvent e) {
45 }
46
47 public void componentResized(ComponentEvent e) {
48 updateAxis();
49 }
50
51 public void componentShown(ComponentEvent e) {
52 }
53
54 });
55
56 updateAxis();
57 }
58
59
60 public void timelineChanged(Event e) {
61 updateAxis();
62 }
63
64
65 private void updateAxis() {
66
67 // Is track model even set yet?
68 if (observedSubject.getSampledTrackModel() == null ||
69 getWidth() == 0) return;
70
71 AudioFormat format = observedSubject.getSampledTrackModel().getFormat();
72
73 long startTimeMS = AudioMath.framesToMilliseconds(
74 observedSubject.getTimeScaleStart(), format);
75
76 long timeLengthMS = AudioMath.framesToMilliseconds(
77 observedSubject.getTimeScaleLength(), format);
78
79 long totalTrackMSLength = AudioMath.framesToMilliseconds(
80 observedSubject.getSampledTrackModel().getFrameCount(), format);
81
82 timeAxis.setAxis(
83 startTimeMS,
84 timeLengthMS,
85 observedSubject.getTimeScaleLength(),
86 totalTrackMSLength,
87 getWidth());
88
89 repaint();
90
91 }
92
93 @Override
94 public void paint(Graphics g) {
95 timeAxis.paint(g, 0, 0, getHeight(), getBackground());
96 }
97
98 /** BELOW: TRAPS MOUSE EVENTS TO GIVE FOCUS */
99 public void mouseClicked(MouseEvent e) {
100 }
101 public void mouseEntered(MouseEvent e) {
102 }
103 public void mouseExited(MouseEvent e) {
104 }
105 public void mousePressed(MouseEvent e) {
106 }
107 public void mouseReleased(MouseEvent e) {
108 }
109}
Note: See TracBrowser for help on using the repository browser.