source: trunk/src_apollo/org/apollo/widgets/MasterVolume.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.8 KB
Line 
1package org.apollo.widgets;
2
3import javax.swing.event.ChangeEvent;
4import javax.swing.event.ChangeListener;
5
6import org.apollo.audio.ApolloPlaybackMixer;
7import org.apollo.audio.ApolloSubjectChangedEvent;
8import org.apollo.gui.VolumeControlButton;
9import org.apollo.mvc.Observer;
10import org.apollo.mvc.Subject;
11import org.apollo.mvc.SubjectChangedEvent;
12import org.expeditee.items.ItemParentStateChangedEvent;
13import org.expeditee.items.Text;
14import org.expeditee.items.widgets.InteractiveWidget;
15
16/**
17 * Provides master volume control
18 *
19 * @author Brook Novak
20 *
21 */
22public class MasterVolume extends InteractiveWidget implements Observer {
23
24 private VolumeControlButton vcButton;
25
26 public MasterVolume(Text source, String[] args) {
27 super(source, new VolumeControlButton("Master Volume"), 40, 40, 40, 40);
28 vcButton = (VolumeControlButton)super._swingComponent;
29
30 vcButton.addVolumeChangeListener(new ChangeListener() {
31 public void stateChanged(ChangeEvent e) {
32 float f = (float)vcButton.getVolumeValue();
33 f /= 100.0f;
34 ApolloPlaybackMixer.getInstance().setMasterVolume(f);
35 if (f == 0.0f) { // auto-mute
36 ApolloPlaybackMixer.getInstance().setMasterMute(true);
37 // this will raise a mute event and thus will change the button to muted state
38 } else { // auto-un-mute
39 ApolloPlaybackMixer.getInstance().setMasterMute(false);
40 }
41 }
42 });
43
44
45 vcButton.setVolumeValue(
46 (int)(ApolloPlaybackMixer.getInstance().getMasterVolume() * 100.0f)
47 );
48 vcButton.setMuted(ApolloPlaybackMixer.getInstance().isMasterMuteOn());
49
50 }
51
52 @Override
53 protected String[] getArgs() {
54 return null;
55 }
56
57 public Subject getObservedSubject() {
58 return ApolloPlaybackMixer.getInstance();
59 }
60
61
62 @Override
63 protected void onParentStateChanged(int eventType) {
64 super.onParentStateChanged(eventType);
65
66 switch (eventType) {
67
68 case ItemParentStateChangedEvent.EVENT_TYPE_REMOVED:
69 case ItemParentStateChangedEvent.EVENT_TYPE_REMOVED_VIA_OVERLAY:
70 case ItemParentStateChangedEvent.EVENT_TYPE_HIDDEN:
71 ApolloPlaybackMixer.getInstance().removeObserver(this);
72 break;
73
74 case ItemParentStateChangedEvent.EVENT_TYPE_ADDED:
75 case ItemParentStateChangedEvent.EVENT_TYPE_ADDED_VIA_OVERLAY:
76 case ItemParentStateChangedEvent.EVENT_TYPE_SHOWN:
77 case ItemParentStateChangedEvent.EVENT_TYPE_SHOWN_VIA_OVERLAY:
78 ApolloPlaybackMixer.getInstance().addObserver(this);
79 break;
80
81 }
82 }
83
84 public void modelChanged(Subject source, SubjectChangedEvent event) {
85
86 if (event.getID() == ApolloSubjectChangedEvent.VOLUME) {
87
88 vcButton.setVolumeValue(
89 (int)(ApolloPlaybackMixer.getInstance().getMasterVolume() * 100.0f)
90 );
91
92 } else if (event.getID() == ApolloSubjectChangedEvent.MUTE) {
93
94 vcButton.setMuted(ApolloPlaybackMixer.getInstance().isMasterMuteOn());
95
96 }
97
98 }
99
100 public void setObservedSubject(Subject parent) {
101 }
102
103}
Note: See TracBrowser for help on using the repository browser.