+ private void makeRecordDialog() {
+ setTitle("Record");
+
+ JPanel panel = new JPanel();
+ panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
+
+ // Creating track combo box,
+ panel.add(new Label("Track: "));
+ trackListA = new JComboBox();
+ for (int i = 1; i < tracks.length; i++) trackListA.addItem("Track " + i);
+ trackListA.setFont(Moosique.getGUI().FONT);
+ panel.add(trackListA);
+
+ // Creating channel combo box
+ panel.add(new Label("Channel: "));
+ JComboBox channelList = new JComboBox();
+ for (int i = 1; i <= 16; i++) channelList.addItem("Channel " + i);
+ channelList.setFont(Moosique.getGUI().FONT);
+ panel.add(channelList);
+
+ // Creating quantize pane
+ JLayeredPane quantizePane = new JLayeredPane();
+ quantizePane.setBorder(BorderFactory.createTitledBorder("Quantize"));
+ JCheckBox quantizeBox = new JCheckBox("Quantize");
+ quantizePane.add(quantizeBox);
+ JLabel quantizeSizeLabel = new JLabel("Resolution");
+ JComboBox quantizeSize = new JComboBox(noteSizes);
+ quantizeSize.setSelectedIndex(4);
+ quantizeSize.setEnabled(false);
+ quantizeSize.setFont(Moosique.getGUI().FONT);
+ quantizeSizeLabel.setLabelFor(quantizeSize);
+ quantizePane.add(quantizeSizeLabel);
+ quantizePane.add(quantizeSize);
+ JCheckBox quantizeLocationBox = new JCheckBox("Affect location", true);
+ quantizeLocationBox.setEnabled(false);
+ quantizePane.add(quantizeLocationBox);
+ JCheckBox quantizeDurationBox = new JCheckBox("Affect duration", true);
+ quantizeDurationBox.setEnabled(false);
+ quantizePane.add(quantizeDurationBox);
+ panel.add(quantizePane);
+
+ // Creating buttons
+ final String btnString1 = "Record!";
+ final String btnString2 = "Cancel";
+ Object[] options = {btnString1, btnString2};
+
+ // Creating option pane
+ optionPane = new JOptionPane(panel,
+ JOptionPane.QUESTION_MESSAGE,
+ JOptionPane.YES_NO_OPTION,
+ null,
+ options,
+ options[0]);
+ optionPane.addPropertyChangeListener(new PropertyChangeListener() {
+ public void propertyChange(PropertyChangeEvent e) {
+ String prop = e.getPropertyName();
+
+ if (isVisible() && (e.getSource() == optionPane) &&
+ (prop.equals(JOptionPane.VALUE_PROPERTY) || prop.equals(JOptionPane.INPUT_VALUE_PROPERTY))) {
+ Object value = optionPane.getValue();
+ if (value == JOptionPane.UNINITIALIZED_VALUE) return;
+ optionPane.setValue(JOptionPane.UNINITIALIZED_VALUE);
+
+ if (value.equals(btnString1)) {
+ // boolean[] quantizers = {quantize, location, duration};
+ Track track = tracks[trackListA.getSelectedIndex() + 1];
+ int channel = Moosique.getGUI().getView().getTrackView(track).getTitle().getChannel();
+ boolean[] quantizers = {false, false, false};
+ int resolution = Moosique.SIXTEENTH_NOTE;
+ Moosique.record(track, channel, quantizers, resolution);
+ }
+ setVisible(false);
+ }
+ }
+ });
+ setContentPane(optionPane);
+ setDefaultCloseOperation(DISPOSE_ON_CLOSE);
+
+ setResizable(false);
+ pack();
+ setLocationRelativeTo(Moosique.getGUI());
+ setVisible(true);