Blame view

VRGNYMusicLights/Sources/AnimationPlayer.java 2.95 KB
742429d1   pfrison   VRGNYMusicLight b...
1
2
3
4
5
6
7
8
9
10
11
12
  import java.awt.event.ActionEvent;
  import java.awt.event.ActionListener;
  
  import javax.swing.Box;
  import javax.swing.BoxLayout;
  import javax.swing.ImageIcon;
  import javax.swing.JButton;
  import javax.swing.JPanel;
  
  public class AnimationPlayer extends JPanel implements ActionListener {
  	private static final long serialVersionUID = 1L;
  
a89c030d   pfrison   VRGNYMusicLights ...
13
14
15
  	private LightCanvasJPanel lightCanvas;
  	private MusicList musicList;
  	
742429d1   pfrison   VRGNYMusicLight b...
16
17
18
19
20
  	private JButton backward;
  	private JButton stop;
  	private JButton play;
  	private JButton pause;
  	private JButton forward;
a89c030d   pfrison   VRGNYMusicLights ...
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
  	
  	private long tick = 0;
  	private boolean go = false;
  	private boolean stopClock = false;
  	private static final int TICK_JUMP = 20;
  	private Thread tickClock = new Thread(new Runnable() {
  		@Override
  		public void run() {
  			while(!stopClock) {
  				if(!go) { // pause
  					try { Thread.sleep(100); }
  					catch (InterruptedException ignored) {}
  					continue;
  				}
  				
  				long before = System.currentTimeMillis();
  				lightCanvas.paintLights(musicList.render(tick));
  				tick += TICK_JUMP;
  				long after = System.currentTimeMillis();
  				
  				if(after - before < TICK_JUMP) {
  					try { Thread.sleep(10 - after + before);}
  					catch (InterruptedException ignored) {}
  				} else if(after - before > TICK_JUMP) {
  					System.err.println("Animation were slowed down by " + String.valueOf(after - before - 10) + " ticks !");
  				}
  			}
  		}
  	});
  	public void stopTickClock() {stopClock = true;}
742429d1   pfrison   VRGNYMusicLight b...
51
  
a89c030d   pfrison   VRGNYMusicLights ...
52
53
54
55
56
  	public AnimationPlayer(LightCanvasJPanel lightCanvas, MusicList musicList) { this(lightCanvas, musicList, BoxLayout.LINE_AXIS); }
  	public AnimationPlayer(LightCanvasJPanel lightCanvas, MusicList musicList, int direction) {
  		this.lightCanvas = lightCanvas;
  		this.musicList = musicList;
  		
742429d1   pfrison   VRGNYMusicLight b...
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
  		setLayout(new BoxLayout(this, direction));
  
  		add(Box.createHorizontalGlue());
  		
  		// backward button
  		backward = new JButton(new ImageIcon(getClass().getResource("/icons/backward.png")));
  		backward.addActionListener(this);
  		add(backward);
  		
  		// stop button
  		stop = new JButton(new ImageIcon(getClass().getResource("/icons/stop.png")));
  		stop.addActionListener(this);
  		add(stop);
  		
  		// play button
  		play = new JButton(new ImageIcon(getClass().getResource("/icons/play.png")));
  		play.addActionListener(this);
  		add(play);
  		
  		// pause button
  		pause = new JButton(new ImageIcon(getClass().getResource("/icons/pause.png")));
  		pause.addActionListener(this);
  		add(pause);
  		
  		// forward button
  		forward = new JButton(new ImageIcon(getClass().getResource("/icons/forward.png")));
  		forward.addActionListener(this);
  		add(forward);
  
  		add(Box.createHorizontalGlue());
a89c030d   pfrison   VRGNYMusicLights ...
87
88
  		
  		tickClock.start();
742429d1   pfrison   VRGNYMusicLight b...
89
90
91
92
93
94
  	}
  	
  	@Override
  	public void actionPerformed(ActionEvent e) {
  		// TODO player actions
  		if(e.getSource() == backward) {
a89c030d   pfrison   VRGNYMusicLights ...
95
96
97
  			tick -= 500;
  			if(tick < 0)
  				tick = 0;
742429d1   pfrison   VRGNYMusicLight b...
98
  		}else if(e.getSource() == stop) {
a89c030d   pfrison   VRGNYMusicLights ...
99
100
  			go = false;
  			tick = 0;
742429d1   pfrison   VRGNYMusicLight b...
101
  		}else if(e.getSource() == play) {
a89c030d   pfrison   VRGNYMusicLights ...
102
  			go = true;
742429d1   pfrison   VRGNYMusicLight b...
103
  		}else if(e.getSource() == pause) {
a89c030d   pfrison   VRGNYMusicLights ...
104
  			go = false;
742429d1   pfrison   VRGNYMusicLight b...
105
  		}else if(e.getSource() == forward) {
a89c030d   pfrison   VRGNYMusicLights ...
106
  			tick += 500;
742429d1   pfrison   VRGNYMusicLight b...
107
108
109
  		}
  	}
  }