Rev 682 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
682 | adamjking | 1 | import java.awt.event.ActionEvent; |
2 | import java.awt.event.ActionListener; |
||
3 | import java.awt.event.KeyEvent; |
||
4 | import java.awt.event.WindowAdapter; |
||
5 | import java.awt.event.WindowEvent; |
||
6 | import java.util.prefs.Preferences; |
||
7 | |||
8 | import javax.swing.JApplet; |
||
9 | import javax.swing.JFrame; |
||
10 | import javax.swing.JMenu; |
||
11 | import javax.swing.JMenuItem; |
||
12 | import javax.swing.JOptionPane; |
||
13 | |||
684 | adamjking | 14 | import org.midibox.apps.sidv2editor.gui.SIDV2EditorGUI; |
682 | adamjking | 15 | import org.midibox.utils.gui.DialogOwner; |
16 | import org.midibox.utils.gui.ImageLoader; |
||
17 | |||
18 | public class SIDV2Editor extends JApplet implements ActionListener { |
||
19 | |||
684 | adamjking | 20 | private org.midibox.apps.sidv2editor.SIDV2Editor sidv2librarian; |
682 | adamjking | 21 | |
684 | adamjking | 22 | private SIDV2EditorGUI sidv2librarianGUI; |
682 | adamjking | 23 | |
24 | private Preferences prefs = Preferences.userRoot().node( |
||
25 | "org/midibox/apps/SIDV2librarian"); |
||
26 | |||
27 | public SIDV2Editor() { |
||
28 | |||
684 | adamjking | 29 | sidv2librarian = new org.midibox.apps.sidv2editor.SIDV2Editor(); |
682 | adamjking | 30 | |
684 | adamjking | 31 | sidv2librarianGUI = new SIDV2EditorGUI(sidv2librarian); |
682 | adamjking | 32 | |
33 | setContentPane(sidv2librarianGUI); |
||
34 | |||
35 | setJMenuBar(sidv2librarianGUI.createMenu()); |
||
36 | |||
37 | JMenu fileMenu = sidv2librarianGUI.getFileMenu(); |
||
38 | |||
39 | JMenu editMenu = sidv2librarianGUI.getEditMenu(); |
||
40 | |||
41 | fileMenu.addSeparator(); |
||
42 | |||
43 | JMenuItem menuItem = new JMenuItem("Exit", KeyEvent.VK_X); |
||
44 | menuItem.setActionCommand("Exit"); |
||
45 | menuItem.addActionListener(this); |
||
46 | fileMenu.add(menuItem); |
||
47 | |||
48 | editMenu.addSeparator(); |
||
49 | |||
50 | menuItem = new JMenuItem("Preferences", KeyEvent.VK_R); |
||
51 | menuItem.setActionCommand("Preferences"); |
||
52 | menuItem.addActionListener(this); |
||
53 | editMenu.add(menuItem); |
||
54 | } |
||
55 | |||
56 | public void destroy() { |
||
57 | super.destroy(); |
||
58 | |||
59 | tryExit(); |
||
60 | } |
||
61 | |||
62 | public void init() { |
||
63 | super.init(); |
||
64 | |||
65 | if (sidv2librarian.getMidiDeviceRouting().getMidiReadDevices().size() < 1) { |
||
66 | JOptionPane |
||
67 | .showMessageDialog( |
||
68 | null, |
||
69 | "Your system does not appear to have any MIDI-devices connected (please close program)!.", |
||
70 | "Error", JOptionPane.OK_OPTION); |
||
71 | } else { |
||
72 | sidv2librarian.setInputDeviceIndex(0); |
||
73 | sidv2librarian.setOutputDeviceIndex(0); |
||
74 | sidv2librarian.getMidiDeviceRouting().connectDevices( |
||
75 | sidv2librarian.getInputMidiDevice(), |
||
76 | sidv2librarian.getLocalMidiDevice()); |
||
77 | sidv2librarian.getMidiDeviceRouting().connectDevices( |
||
78 | sidv2librarian.getLocalMidiDevice(), |
||
79 | sidv2librarian.getOutputMidiDevice()); |
||
80 | } |
||
81 | |||
82 | recallConnections(); |
||
83 | } |
||
84 | |||
85 | public static void main(String[] args) { |
||
86 | |||
87 | final JFrame frame = new JFrame("MidiBox SID V2 Editor"); |
||
88 | |||
89 | DialogOwner.setFrame(frame); |
||
90 | |||
91 | final SIDV2Editor sidV2Editor = new SIDV2Editor(); |
||
92 | |||
93 | frame.setContentPane(sidV2Editor); |
||
94 | |||
95 | frame.setIconImage(ImageLoader.getImageIcon("sid.png").getImage()); |
||
96 | frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); |
||
97 | frame.addWindowListener(new WindowAdapter() { |
||
98 | public void windowClosing(WindowEvent ev) { |
||
99 | sidV2Editor.tryExit(); |
||
100 | } |
||
101 | }); |
||
102 | |||
103 | frame.setResizable(false); |
||
104 | |||
105 | frame.pack(); |
||
106 | |||
107 | frame.setVisible(true); |
||
108 | |||
109 | sidV2Editor.init(); |
||
110 | } |
||
111 | |||
112 | private void tryExit() { |
||
113 | int n = JOptionPane.showConfirmDialog(null, |
||
114 | "Are you sure you want to exit?", "Exit?", |
||
115 | JOptionPane.YES_NO_OPTION); |
||
116 | if (n == JOptionPane.YES_OPTION) { |
||
117 | |||
118 | storeConnections(); |
||
119 | sidv2librarian.closeMidi(); |
||
120 | |||
121 | System.exit(0); |
||
122 | } |
||
123 | } |
||
124 | |||
125 | private void recallConnections() { |
||
126 | int input = prefs.getInt("INPUT_DEVICE", 0); |
||
127 | int output = prefs.getInt("OUTPUT_DEVICE", 0); |
||
128 | int in = sidv2librarian.findInputDeviceHash(input); |
||
129 | int out = sidv2librarian.findOuputDeviceHash(output); |
||
130 | |||
131 | if (in != -1 && out != -1) { |
||
132 | sidv2librarian.setInputDeviceIndex(in); |
||
133 | sidv2librarian.setOutputDeviceIndex(out); |
||
134 | } else { |
||
135 | JOptionPane |
||
136 | .showMessageDialog( |
||
137 | null, |
||
138 | "Your MIDI configuration has changed, please check connections!", |
||
139 | "MIDI configuration changed!", |
||
140 | JOptionPane.OK_OPTION); |
||
141 | |||
142 | sidv2librarianGUI.showMidiDeviceRoutingDialog(); |
||
143 | } |
||
144 | } |
||
145 | |||
146 | private void storeConnections() { |
||
147 | int input = sidv2librarian.getInputDeviceHash(); |
||
148 | int output = sidv2librarian.getOutputDeviceHash(); |
||
149 | prefs.putInt("INPUT_DEVICE", input); |
||
150 | prefs.putInt("OUTPUT_DEVICE", output); |
||
151 | } |
||
152 | |||
153 | public void actionPerformed(ActionEvent ae) { |
||
154 | if (ae.getActionCommand().equals("Preferences")) { |
||
155 | sidv2librarianGUI.showMidiDeviceRoutingDialog(); |
||
156 | } else if (ae.getActionCommand().equals("Exit")) { |
||
157 | tryExit(); |
||
158 | } |
||
159 | } |
||
160 | } |