Added Initial UI code.
No comments in code yet / needs cleaning.
This commit is contained in:
parent
ff335bbc81
commit
e7b18aa8ef
172
Java/MoppyDesk/src/moppydesk/MoppyMainWindow.form
Normal file
172
Java/MoppyDesk/src/moppydesk/MoppyMainWindow.form
Normal file
|
@ -0,0 +1,172 @@
|
||||||
|
<?xml version="1.1" encoding="UTF-8" ?>
|
||||||
|
|
||||||
|
<Form version="1.3" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JFrameFormInfo">
|
||||||
|
<Properties>
|
||||||
|
<Property name="defaultCloseOperation" type="int" value="3"/>
|
||||||
|
</Properties>
|
||||||
|
<SyntheticProperties>
|
||||||
|
<SyntheticProperty name="formSizePolicy" type="int" value="1"/>
|
||||||
|
</SyntheticProperties>
|
||||||
|
<Events>
|
||||||
|
<EventHandler event="windowClosing" listener="java.awt.event.WindowListener" parameters="java.awt.event.WindowEvent" handler="windowClosing"/>
|
||||||
|
</Events>
|
||||||
|
<AuxValues>
|
||||||
|
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
|
||||||
|
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="true"/>
|
||||||
|
<AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
|
||||||
|
<AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
|
||||||
|
<AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
|
||||||
|
<AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
|
||||||
|
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
|
||||||
|
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
|
||||||
|
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
|
||||||
|
</AuxValues>
|
||||||
|
|
||||||
|
<Layout>
|
||||||
|
<DimensionLayout dim="0">
|
||||||
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
|
<Group type="102" attributes="0">
|
||||||
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
|
<Component id="comSelectionMenu" min="-2" pref="79" max="-2" attributes="0"/>
|
||||||
|
<Component id="statusLabel" alignment="0" min="-2" max="-2" attributes="0"/>
|
||||||
|
<Component id="jSeparator1" alignment="1" pref="380" max="32767" attributes="0"/>
|
||||||
|
<Group type="102" alignment="1" attributes="0">
|
||||||
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
|
<Component id="sequenceNameLabel" min="-2" max="-2" attributes="0"/>
|
||||||
|
<Component id="jSlider1" alignment="0" min="-2" max="-2" attributes="0"/>
|
||||||
|
<Component id="bpmLabel" alignment="1" min="-2" max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
<EmptySpace pref="30" max="32767" attributes="0"/>
|
||||||
|
<Group type="103" groupAlignment="1" attributes="0">
|
||||||
|
<Group type="102" attributes="0">
|
||||||
|
<Component id="startButton" min="-2" max="-2" attributes="0"/>
|
||||||
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
<Component id="stopButton" min="-2" max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
<Component id="loadButton" alignment="1" min="-2" max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
</Group>
|
||||||
|
<Component id="jLabel1" alignment="0" min="-2" max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
</Group>
|
||||||
|
</DimensionLayout>
|
||||||
|
<DimensionLayout dim="1">
|
||||||
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
|
<Group type="102" alignment="0" attributes="0">
|
||||||
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
<Component id="comSelectionMenu" min="-2" max="-2" attributes="0"/>
|
||||||
|
<EmptySpace pref="107" max="32767" attributes="0"/>
|
||||||
|
<Component id="jLabel1" min="-2" max="-2" attributes="0"/>
|
||||||
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
<Group type="103" groupAlignment="3" attributes="0">
|
||||||
|
<Component id="sequenceNameLabel" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
|
<Component id="loadButton" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
<EmptySpace min="-2" pref="18" max="-2" attributes="0"/>
|
||||||
|
<Component id="bpmLabel" min="-2" max="-2" attributes="0"/>
|
||||||
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
<Group type="103" groupAlignment="1" attributes="0">
|
||||||
|
<Group type="103" groupAlignment="3" attributes="0">
|
||||||
|
<Component id="startButton" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
|
<Component id="stopButton" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
<Component id="jSlider1" min="-2" max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
<EmptySpace min="-2" pref="11" max="-2" attributes="0"/>
|
||||||
|
<Component id="jSeparator1" min="-2" pref="8" max="-2" attributes="0"/>
|
||||||
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
<Component id="statusLabel" min="-2" max="-2" attributes="0"/>
|
||||||
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
</Group>
|
||||||
|
</DimensionLayout>
|
||||||
|
</Layout>
|
||||||
|
<SubComponents>
|
||||||
|
<Component class="javax.swing.JButton" name="startButton">
|
||||||
|
<Properties>
|
||||||
|
<Property name="text" type="java.lang.String" value="Start"/>
|
||||||
|
<Property name="enabled" type="boolean" value="false"/>
|
||||||
|
<Property name="name" type="java.lang.String" value="startButton" noResource="true"/>
|
||||||
|
</Properties>
|
||||||
|
<Events>
|
||||||
|
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="startButtonClicked"/>
|
||||||
|
</Events>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JButton" name="stopButton">
|
||||||
|
<Properties>
|
||||||
|
<Property name="text" type="java.lang.String" value="Stop/Reset"/>
|
||||||
|
<Property name="name" type="java.lang.String" value="stopButton" noResource="true"/>
|
||||||
|
</Properties>
|
||||||
|
<Events>
|
||||||
|
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="stopResetClicked"/>
|
||||||
|
</Events>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JComboBox" name="comSelectionMenu">
|
||||||
|
<Properties>
|
||||||
|
<Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor">
|
||||||
|
<StringArray count="0"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="name" type="java.lang.String" value="comSelectionMenu" noResource="true"/>
|
||||||
|
</Properties>
|
||||||
|
<Events>
|
||||||
|
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="comPortSelected"/>
|
||||||
|
</Events>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JLabel" name="statusLabel">
|
||||||
|
<Properties>
|
||||||
|
<Property name="text" type="java.lang.String" value="Loading application..."/>
|
||||||
|
<Property name="name" type="java.lang.String" value="statusLabel" noResource="true"/>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JSeparator" name="jSeparator1">
|
||||||
|
<Properties>
|
||||||
|
<Property name="name" type="java.lang.String" value="jSeparator1" noResource="true"/>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JButton" name="loadButton">
|
||||||
|
<Properties>
|
||||||
|
<Property name="text" type="java.lang.String" value="Load Sequence"/>
|
||||||
|
<Property name="name" type="java.lang.String" value="loadButton" noResource="true"/>
|
||||||
|
</Properties>
|
||||||
|
<Events>
|
||||||
|
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="loadSequence"/>
|
||||||
|
</Events>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JLabel" name="sequenceNameLabel">
|
||||||
|
<Properties>
|
||||||
|
<Property name="text" type="java.lang.String" value="<None loaded>"/>
|
||||||
|
<Property name="name" type="java.lang.String" value="sequenceNameLabel" noResource="true"/>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JLabel" name="jLabel1">
|
||||||
|
<Properties>
|
||||||
|
<Property name="text" type="java.lang.String" value="Current Sequence:"/>
|
||||||
|
<Property name="name" type="java.lang.String" value="jLabel1" noResource="true"/>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JSlider" name="jSlider1">
|
||||||
|
<Properties>
|
||||||
|
<Property name="majorTickSpacing" type="int" value="10"/>
|
||||||
|
<Property name="maximum" type="int" value="210"/>
|
||||||
|
<Property name="minimum" type="int" value="20"/>
|
||||||
|
<Property name="paintTicks" type="boolean" value="true"/>
|
||||||
|
<Property name="value" type="int" value="120"/>
|
||||||
|
<Property name="name" type="java.lang.String" value="jSlider1" noResource="true"/>
|
||||||
|
</Properties>
|
||||||
|
<Events>
|
||||||
|
<EventHandler event="mouseDragged" listener="java.awt.event.MouseMotionListener" parameters="java.awt.event.MouseEvent" handler="tempoSliderChanged"/>
|
||||||
|
</Events>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JLabel" name="bpmLabel">
|
||||||
|
<Properties>
|
||||||
|
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.form.RADConnectionPropertyEditor">
|
||||||
|
<Connection code="jSlider1.getValue() + " bpm"" type="code"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="name" type="java.lang.String" value="bpmLabel" noResource="true"/>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
</SubComponents>
|
||||||
|
</Form>
|
296
Java/MoppyDesk/src/moppydesk/MoppyMainWindow.java
Normal file
296
Java/MoppyDesk/src/moppydesk/MoppyMainWindow.java
Normal file
|
@ -0,0 +1,296 @@
|
||||||
|
/*
|
||||||
|
* To change this template, choose Tools | Templates
|
||||||
|
* and open the template in the editor.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* MoppyMainWindow.java
|
||||||
|
*
|
||||||
|
* Created on Oct 8, 2011, 8:34:57 PM
|
||||||
|
*/
|
||||||
|
package moppydesk;
|
||||||
|
|
||||||
|
import gnu.io.CommPortIdentifier;
|
||||||
|
import java.io.File;
|
||||||
|
import java.util.Enumeration;
|
||||||
|
import java.util.logging.Level;
|
||||||
|
import java.util.logging.Logger;
|
||||||
|
import java.util.prefs.Preferences;
|
||||||
|
import javax.swing.JComboBox;
|
||||||
|
import javax.swing.JFileChooser;
|
||||||
|
import javax.swing.JOptionPane;
|
||||||
|
import javax.swing.JSlider;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Sam
|
||||||
|
*/
|
||||||
|
public class MoppyMainWindow extends javax.swing.JFrame implements MoppyStatusConsumer{
|
||||||
|
|
||||||
|
static String PREF_COM_PORT = "comPort";
|
||||||
|
static String PREF_LOADED_SEQ = "loadedSequencePath";
|
||||||
|
|
||||||
|
MoppyUI app;
|
||||||
|
Preferences prefs = Preferences.userNodeForPackage(MoppyUI.class);
|
||||||
|
final JFileChooser sequenceChooser = new JFileChooser();
|
||||||
|
boolean comboBoxReady = false;
|
||||||
|
|
||||||
|
/** Creates new form MoppyMainWindow */
|
||||||
|
public MoppyMainWindow(MoppyUI app) {
|
||||||
|
this.app = app;
|
||||||
|
initComponents();
|
||||||
|
|
||||||
|
updateComSelectionMenu();
|
||||||
|
|
||||||
|
initializeSequencer((String) comSelectionMenu.getSelectedItem());
|
||||||
|
|
||||||
|
String previouslyLoadedFile = prefs.get(PREF_LOADED_SEQ, null);
|
||||||
|
if (previouslyLoadedFile != null){
|
||||||
|
loadSequenceFile(new File(previouslyLoadedFile));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updateComSelectionMenu() {
|
||||||
|
comboBoxReady = false;
|
||||||
|
comSelectionMenu.removeAllItems();
|
||||||
|
Enumeration<CommPortIdentifier> e = CommPortIdentifier.getPortIdentifiers();
|
||||||
|
while (e.hasMoreElements()) {
|
||||||
|
comSelectionMenu.addItem(e.nextElement().getName());
|
||||||
|
}
|
||||||
|
comSelectionMenu.setSelectedItem(prefs.get(PREF_COM_PORT, ""));
|
||||||
|
comboBoxReady = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initializeSequencer(String comPort) {
|
||||||
|
statusLabel.setText("Initializing sequencer...");
|
||||||
|
if (app.ms != null) {
|
||||||
|
app.ms.closeSequencer();
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
app.ms = new MoppySequencer(comPort);
|
||||||
|
app.ms.addListener(this);
|
||||||
|
} catch (Exception ex) {
|
||||||
|
Logger.getLogger(MoppyMainWindow.class.getName()).log(Level.SEVERE, null, ex);
|
||||||
|
statusLabel.setText("Sequencer initialization error!");
|
||||||
|
JOptionPane.showMessageDialog(rootPane, ex);
|
||||||
|
}
|
||||||
|
statusLabel.setText("Sequencer connected to " + comPort);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** This method is called from within the constructor to
|
||||||
|
* initialize the form.
|
||||||
|
* WARNING: Do NOT modify this code. The content of this method is
|
||||||
|
* always regenerated by the Form Editor.
|
||||||
|
*/
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
|
||||||
|
private void initComponents() {
|
||||||
|
|
||||||
|
startButton = new javax.swing.JButton();
|
||||||
|
stopButton = new javax.swing.JButton();
|
||||||
|
comSelectionMenu = new javax.swing.JComboBox();
|
||||||
|
statusLabel = new javax.swing.JLabel();
|
||||||
|
jSeparator1 = new javax.swing.JSeparator();
|
||||||
|
loadButton = new javax.swing.JButton();
|
||||||
|
sequenceNameLabel = new javax.swing.JLabel();
|
||||||
|
jLabel1 = new javax.swing.JLabel();
|
||||||
|
jSlider1 = new javax.swing.JSlider();
|
||||||
|
bpmLabel = new javax.swing.JLabel();
|
||||||
|
|
||||||
|
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
|
||||||
|
addWindowListener(new java.awt.event.WindowAdapter() {
|
||||||
|
public void windowClosing(java.awt.event.WindowEvent evt) {
|
||||||
|
MoppyMainWindow.this.windowClosing(evt);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
startButton.setText("Start");
|
||||||
|
startButton.setEnabled(false);
|
||||||
|
startButton.setName("startButton"); // NOI18N
|
||||||
|
startButton.addActionListener(new java.awt.event.ActionListener() {
|
||||||
|
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
||||||
|
startButtonClicked(evt);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
stopButton.setText("Stop/Reset");
|
||||||
|
stopButton.setName("stopButton"); // NOI18N
|
||||||
|
stopButton.addActionListener(new java.awt.event.ActionListener() {
|
||||||
|
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
||||||
|
stopResetClicked(evt);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
comSelectionMenu.setName("comSelectionMenu"); // NOI18N
|
||||||
|
comSelectionMenu.addActionListener(new java.awt.event.ActionListener() {
|
||||||
|
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
||||||
|
comPortSelected(evt);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
statusLabel.setText("Loading application...");
|
||||||
|
statusLabel.setName("statusLabel"); // NOI18N
|
||||||
|
|
||||||
|
jSeparator1.setName("jSeparator1"); // NOI18N
|
||||||
|
|
||||||
|
loadButton.setText("Load Sequence");
|
||||||
|
loadButton.setName("loadButton"); // NOI18N
|
||||||
|
loadButton.addActionListener(new java.awt.event.ActionListener() {
|
||||||
|
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
||||||
|
loadSequence(evt);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
sequenceNameLabel.setText("<None loaded>");
|
||||||
|
sequenceNameLabel.setName("sequenceNameLabel"); // NOI18N
|
||||||
|
|
||||||
|
jLabel1.setText("Current Sequence:");
|
||||||
|
jLabel1.setName("jLabel1"); // NOI18N
|
||||||
|
|
||||||
|
jSlider1.setMajorTickSpacing(10);
|
||||||
|
jSlider1.setMaximum(210);
|
||||||
|
jSlider1.setMinimum(20);
|
||||||
|
jSlider1.setPaintTicks(true);
|
||||||
|
jSlider1.setValue(120);
|
||||||
|
jSlider1.setName("jSlider1"); // NOI18N
|
||||||
|
jSlider1.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
|
||||||
|
public void mouseDragged(java.awt.event.MouseEvent evt) {
|
||||||
|
tempoSliderChanged(evt);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
bpmLabel.setText(jSlider1.getValue() + " bpm");
|
||||||
|
bpmLabel.setName("bpmLabel"); // NOI18N
|
||||||
|
|
||||||
|
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
|
||||||
|
getContentPane().setLayout(layout);
|
||||||
|
layout.setHorizontalGroup(
|
||||||
|
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addGroup(layout.createSequentialGroup()
|
||||||
|
.addContainerGap()
|
||||||
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addComponent(comSelectionMenu, javax.swing.GroupLayout.PREFERRED_SIZE, 79, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
|
.addComponent(statusLabel)
|
||||||
|
.addComponent(jSeparator1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 380, Short.MAX_VALUE)
|
||||||
|
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
|
||||||
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addComponent(sequenceNameLabel)
|
||||||
|
.addComponent(jSlider1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
|
.addComponent(bpmLabel, javax.swing.GroupLayout.Alignment.TRAILING))
|
||||||
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 30, Short.MAX_VALUE)
|
||||||
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
|
||||||
|
.addGroup(layout.createSequentialGroup()
|
||||||
|
.addComponent(startButton)
|
||||||
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
|
.addComponent(stopButton))
|
||||||
|
.addComponent(loadButton)))
|
||||||
|
.addComponent(jLabel1))
|
||||||
|
.addContainerGap())
|
||||||
|
);
|
||||||
|
layout.setVerticalGroup(
|
||||||
|
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addGroup(layout.createSequentialGroup()
|
||||||
|
.addContainerGap()
|
||||||
|
.addComponent(comSelectionMenu, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 107, Short.MAX_VALUE)
|
||||||
|
.addComponent(jLabel1)
|
||||||
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||||
|
.addComponent(sequenceNameLabel)
|
||||||
|
.addComponent(loadButton))
|
||||||
|
.addGap(18, 18, 18)
|
||||||
|
.addComponent(bpmLabel)
|
||||||
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
|
||||||
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||||
|
.addComponent(startButton)
|
||||||
|
.addComponent(stopButton))
|
||||||
|
.addComponent(jSlider1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
|
||||||
|
.addGap(11, 11, 11)
|
||||||
|
.addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 8, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
|
.addComponent(statusLabel)
|
||||||
|
.addContainerGap())
|
||||||
|
);
|
||||||
|
|
||||||
|
pack();
|
||||||
|
}// </editor-fold>//GEN-END:initComponents
|
||||||
|
|
||||||
|
private void stopResetClicked(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_stopResetClicked
|
||||||
|
statusLabel.setText("Stopping...");
|
||||||
|
app.ms.stopSequencer();
|
||||||
|
startButton.setEnabled(true);
|
||||||
|
statusLabel.setText("Stopped");
|
||||||
|
}//GEN-LAST:event_stopResetClicked
|
||||||
|
|
||||||
|
private void startButtonClicked(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_startButtonClicked
|
||||||
|
startButton.setEnabled(false);
|
||||||
|
app.ms.startSequencer();
|
||||||
|
}//GEN-LAST:event_startButtonClicked
|
||||||
|
|
||||||
|
private void loadSequence(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_loadSequence
|
||||||
|
String previouslyLoaded = prefs.get(PREF_LOADED_SEQ, null);
|
||||||
|
if (previouslyLoaded != null){
|
||||||
|
sequenceChooser.setCurrentDirectory(new File(previouslyLoaded));
|
||||||
|
}
|
||||||
|
int returnVal = sequenceChooser.showOpenDialog(this);
|
||||||
|
|
||||||
|
if (returnVal == JFileChooser.APPROVE_OPTION) {
|
||||||
|
loadSequenceFile(sequenceChooser.getSelectedFile());
|
||||||
|
} else {
|
||||||
|
//Cancelled
|
||||||
|
}
|
||||||
|
}//GEN-LAST:event_loadSequence
|
||||||
|
|
||||||
|
private void loadSequenceFile(File sequenceFile){
|
||||||
|
try {
|
||||||
|
statusLabel.setText("Loading file...");
|
||||||
|
app.ms.loadFile(sequenceFile.getPath());
|
||||||
|
sequenceNameLabel.setText(sequenceFile.getName());
|
||||||
|
prefs.put(PREF_LOADED_SEQ, sequenceFile.getPath());
|
||||||
|
statusLabel.setText("Loaded " + sequenceFile.getName());
|
||||||
|
startButton.setEnabled(true);
|
||||||
|
} catch (Exception ex) {
|
||||||
|
Logger.getLogger(MoppyMainWindow.class.getName()).log(Level.SEVERE, null, ex);
|
||||||
|
statusLabel.setText("File loading error!");
|
||||||
|
JOptionPane.showMessageDialog(rootPane, ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void tempoSliderChanged(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_tempoSliderChanged
|
||||||
|
JSlider s = (JSlider) evt.getSource();
|
||||||
|
app.ms.setTempo(s.getValue());
|
||||||
|
bpmLabel.setText(s.getValue() + " bpm");
|
||||||
|
}//GEN-LAST:event_tempoSliderChanged
|
||||||
|
|
||||||
|
private void comPortSelected(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_comPortSelected
|
||||||
|
JComboBox cb = (JComboBox) evt.getSource();
|
||||||
|
if (comboBoxReady) {
|
||||||
|
String comPort = (String) cb.getSelectedItem();
|
||||||
|
initializeSequencer(comPort);
|
||||||
|
prefs.put(PREF_COM_PORT, comPort);
|
||||||
|
}
|
||||||
|
}//GEN-LAST:event_comPortSelected
|
||||||
|
|
||||||
|
private void windowClosing(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_windowClosing
|
||||||
|
app.ms.closeSequencer();
|
||||||
|
}//GEN-LAST:event_windowClosing
|
||||||
|
|
||||||
|
public void tempoChanged(int newTempo) {
|
||||||
|
jSlider1.setValue(newTempo);
|
||||||
|
bpmLabel.setText(newTempo + " bpm");
|
||||||
|
}
|
||||||
|
// Variables declaration - do not modify//GEN-BEGIN:variables
|
||||||
|
private javax.swing.JLabel bpmLabel;
|
||||||
|
private javax.swing.JComboBox comSelectionMenu;
|
||||||
|
private javax.swing.JLabel jLabel1;
|
||||||
|
private javax.swing.JSeparator jSeparator1;
|
||||||
|
private javax.swing.JSlider jSlider1;
|
||||||
|
private javax.swing.JButton loadButton;
|
||||||
|
private javax.swing.JLabel sequenceNameLabel;
|
||||||
|
private javax.swing.JButton startButton;
|
||||||
|
private javax.swing.JLabel statusLabel;
|
||||||
|
private javax.swing.JButton stopButton;
|
||||||
|
// End of variables declaration//GEN-END:variables
|
||||||
|
|
||||||
|
}
|
13
Java/MoppyDesk/src/moppydesk/MoppyStatusConsumer.java
Normal file
13
Java/MoppyDesk/src/moppydesk/MoppyStatusConsumer.java
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
/*
|
||||||
|
* To change this template, choose Tools | Templates
|
||||||
|
* and open the template in the editor.
|
||||||
|
*/
|
||||||
|
package moppydesk;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Sam
|
||||||
|
*/
|
||||||
|
public interface MoppyStatusConsumer {
|
||||||
|
public void tempoChanged(int newTempo);
|
||||||
|
}
|
29
Java/MoppyDesk/src/moppydesk/MoppyUI.java
Normal file
29
Java/MoppyDesk/src/moppydesk/MoppyUI.java
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
/*
|
||||||
|
* To change this template, choose Tools | Templates
|
||||||
|
* and open the template in the editor.
|
||||||
|
*/
|
||||||
|
package moppydesk;
|
||||||
|
|
||||||
|
import org.jdesktop.application.SingleFrameApplication;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Sam
|
||||||
|
*/
|
||||||
|
public class MoppyUI extends SingleFrameApplication{
|
||||||
|
|
||||||
|
MoppySequencer ms = null;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void startup() {
|
||||||
|
show(new MoppyMainWindow(this));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Main method launching the application.
|
||||||
|
*/
|
||||||
|
public static void main(String[] args) {
|
||||||
|
launch(MoppyUI.class, args);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user