[Bluemusic-commits] SF.net SVN: bluemusic:[4194] blue/trunk
Brought to you by:
kunstmusik
From: <kun...@us...> - 2010-03-29 00:23:48
|
Revision: 4194 http://bluemusic.svn.sourceforge.net/bluemusic/?rev=4194&view=rev Author: kunstmusik Date: 2010-03-29 00:23:41 +0000 (Mon, 29 Mar 2010) Log Message: ----------- fixed saving/loading of enabled state for midi devices, implemented "MIDI Input" button for blueLive toolbar, implemented rescanning in MIDI input options panel Modified Paths: -------------- blue/trunk/blue-midi/nbproject/genfiles.properties blue/trunk/blue-midi/nbproject/project.xml blue/trunk/blue-midi/src/blue/midi/BlueMidiDevice.java blue/trunk/blue-midi/src/blue/midi/Bundle.properties blue/trunk/blue-midi/src/blue/midi/MidiInputManager.java blue/trunk/blue-midi/src/blue/midi/MidiInputTableModel.java blue/trunk/blue-midi/src/blue/midi/MidiPanel.form blue/trunk/blue-midi/src/blue/midi/MidiPanel.java blue/trunk/blue-ui-core/src/blue/ui/core/blueLive/BlueLiveToolBar.java Modified: blue/trunk/blue-midi/nbproject/genfiles.properties =================================================================== --- blue/trunk/blue-midi/nbproject/genfiles.properties 2010-03-29 00:21:54 UTC (rev 4193) +++ blue/trunk/blue-midi/nbproject/genfiles.properties 2010-03-29 00:23:41 UTC (rev 4194) @@ -1,8 +1,8 @@ -build.xml.data.CRC32=354b3c2b +build.xml.data.CRC32=c1f8240b build.xml.script.CRC32=413025f8 -build.xml.stylesheet.CRC32=79c3b980@1.31.1.7 +build.xml.stylesheet.CRC32=79c3b980@1.31.2.7 # This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml. # Do not edit this file. You may delete it but then the IDE will never regenerate such files for you. -nbproject/build-impl.xml.data.CRC32=354b3c2b +nbproject/build-impl.xml.data.CRC32=c1f8240b nbproject/build-impl.xml.script.CRC32=2465577f -nbproject/build-impl.xml.stylesheet.CRC32=261c4bef@1.31.1.7 +nbproject/build-impl.xml.stylesheet.CRC32=261c4bef@1.31.2.7 Modified: blue/trunk/blue-midi/nbproject/project.xml =================================================================== --- blue/trunk/blue-midi/nbproject/project.xml 2010-03-29 00:21:54 UTC (rev 4193) +++ blue/trunk/blue-midi/nbproject/project.xml 2010-03-29 00:23:41 UTC (rev 4194) @@ -7,6 +7,14 @@ <suite-component/> <module-dependencies> <dependency> + <code-name-base>blue.plaf</code-name-base> + <build-prerequisite/> + <compile-dependency/> + <run-dependency> + <specification-version>1.0</specification-version> + </run-dependency> + </dependency> + <dependency> <code-name-base>org.jdesktop.layout</code-name-base> <build-prerequisite/> <compile-dependency/> Modified: blue/trunk/blue-midi/src/blue/midi/BlueMidiDevice.java =================================================================== --- blue/trunk/blue-midi/src/blue/midi/BlueMidiDevice.java 2010-03-29 00:21:54 UTC (rev 4193) +++ blue/trunk/blue-midi/src/blue/midi/BlueMidiDevice.java 2010-03-29 00:23:41 UTC (rev 4194) @@ -17,7 +17,6 @@ * the Free Software Foundation Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307 USA */ - package blue.midi; import javax.sound.midi.MidiDevice; @@ -82,7 +81,7 @@ } input = null; - if(cl != null) { + if (cl != null) { cl.stateChanged(e); } } @@ -95,7 +94,6 @@ this.enabled = enabled; } - public String toString() { if (info != null) { return info.getName(); @@ -106,5 +104,22 @@ public void setChangeListener(ChangeListener cl) { this.cl = cl; } - + + public final boolean equals(Object obj) { + if (obj instanceof BlueMidiDevice) { + BlueMidiDevice dev2 = (BlueMidiDevice) obj; + MidiDevice.Info info2 = dev2.info; + + return (info.getDescription().equals(info2.getDescription()) + && info.getName().equals(info2.getName()) + && info.getVendor().equals(info2.getVendor()) + && info.getVersion().equals(info2.getVersion())); + } + return false; + } + + public String getSaveName() { + return info.getDescription() + info.getName() + info.getVendor() + info. + getVersion(); + } } Modified: blue/trunk/blue-midi/src/blue/midi/Bundle.properties =================================================================== --- blue/trunk/blue-midi/src/blue/midi/Bundle.properties 2010-03-29 00:21:54 UTC (rev 4193) +++ blue/trunk/blue-midi/src/blue/midi/Bundle.properties 2010-03-29 00:23:41 UTC (rev 4194) @@ -1,3 +1,4 @@ AdvancedOption_DisplayName_Midi=MIDI AdvancedOption_Keywords_Midi=MIDI OpenIDE-Module-Name=blue-midi +MidiPanel.jButton1.text=Rescan Modified: blue/trunk/blue-midi/src/blue/midi/MidiInputManager.java =================================================================== --- blue/trunk/blue-midi/src/blue/midi/MidiInputManager.java 2010-03-29 00:21:54 UTC (rev 4193) +++ blue/trunk/blue-midi/src/blue/midi/MidiInputManager.java 2010-03-29 00:23:41 UTC (rev 4194) @@ -49,17 +49,16 @@ private ChangeEvent changeEvent = null; - private Vector<BlueMidiDevice> items = null; + private Vector<BlueMidiDevice> items = new Vector<BlueMidiDevice>(); private boolean running = false; /** Creates a new instance of MidiInputManager */ private MidiInputManager() { rescan(); - load(); } - public static MidiInputManager getInstance() { + public static synchronized MidiInputManager getInstance() { if (instance == null) { instance = new MidiInputManager(); } @@ -67,36 +66,55 @@ } public void rescan() { - MidiDevice.Info[] info; - info = MidiSystem.getMidiDeviceInfo(); + MidiDevice.Info[] info = MidiSystem.getMidiDeviceInfo(); - Vector<BlueMidiDevice> items = new Vector<BlueMidiDevice>(); + Vector<BlueMidiDevice> newItems = new Vector<BlueMidiDevice>(); for (int i = 0; i < info.length; i++) { try { if (MidiSystem.getMidiDevice(info[i]).getMaxTransmitters() != 0) { - final BlueMidiDevice blueMidiDevice = new BlueMidiDevice(info[i]); - blueMidiDevice.setChangeListener(this); - items.add(blueMidiDevice); + + final BlueMidiDevice blueMidiDevice = new BlueMidiDevice( + info[i]); + BlueMidiDevice old = getDeviceByInfo(blueMidiDevice); + + if (old == null) { + blueMidiDevice.setChangeListener(this); + newItems.add(blueMidiDevice); + } else { + newItems.add(old); + } } - } catch (MidiUnavailableException ex) { ex.printStackTrace(); } } - this.items = items; + this.items = newItems; + + load(); } + private BlueMidiDevice getDeviceByInfo(BlueMidiDevice info) { + for (BlueMidiDevice device : items) { + if (device.equals(info)) { + return device; + } + } + return null; + } + public Vector<BlueMidiDevice> getInputDeviceOptions() { return items; } /* ENGINE METHODS */ - public synchronized void start() { + if (running) { + return; + } for (BlueMidiDevice device : items) { - if(device.isEnabled()) { + if (device.isEnabled()) { try { device.open(); } catch (MidiUnavailableException ex) { @@ -110,6 +128,9 @@ } public synchronized void stop() { + if (!running) { + return; + } for (BlueMidiDevice device : items) { device.close(); } @@ -161,19 +182,19 @@ /* RECEIVER METHODS */ public void send(MidiMessage message, long timeStamp) { broadcastMessage(message, timeStamp); + //System.out.println(timeStamp + " : " + message); } public void close() { } /* SAVE/LOAD METHODS */ - protected void save() { final Preferences prefs = NbPreferences.forModule( MidiInputManager.class); for (BlueMidiDevice device : items) { - prefs.putBoolean(device.toString(), device.isEnabled()); + prefs.putBoolean(device.getSaveName(), device.isEnabled()); } try { @@ -188,7 +209,19 @@ MidiInputManager.class); for (BlueMidiDevice device : items) { - device.setEnabled(prefs.getBoolean(device.toString(), false)); + device.setEnabled(prefs.getBoolean(device.getSaveName(), false)); + + if (running) { + if (device.isEnabled()) { + try { + device.open(); + } catch (MidiUnavailableException ex) { + Exceptions.printStackTrace(ex); + } + } else { + device.close(); + } + } } } } Modified: blue/trunk/blue-midi/src/blue/midi/MidiInputTableModel.java =================================================================== --- blue/trunk/blue-midi/src/blue/midi/MidiInputTableModel.java 2010-03-29 00:21:54 UTC (rev 4193) +++ blue/trunk/blue-midi/src/blue/midi/MidiInputTableModel.java 2010-03-29 00:23:41 UTC (rev 4194) @@ -38,12 +38,20 @@ @Override public int getColumnCount() { - return 2; + return 3; } @Override public String getColumnName(int column) { - return (column == 0) ? "Open" : "Device Name"; + switch (column) { + case 0: + return "Enabled"; + case 1: + return "Device Name"; + case 2: + return "Description"; + } + return ""; } @Override @@ -55,10 +63,15 @@ public Object getValueAt(int row, int column) { BlueMidiDevice device = devices.get(row); - if (column == 0) { - return device.isEnabled(); + switch (column) { + case 0: + return device.isEnabled(); + case 1: + return device.toString(); + case 2: + return device.getDeviceInfo().getDescription(); } - return device.toString(); + return null; } @Override Modified: blue/trunk/blue-midi/src/blue/midi/MidiPanel.form =================================================================== --- blue/trunk/blue-midi/src/blue/midi/MidiPanel.form 2010-03-29 00:21:54 UTC (rev 4193) +++ blue/trunk/blue-midi/src/blue/midi/MidiPanel.form 2010-03-29 00:23:41 UTC (rev 4194) @@ -16,18 +16,23 @@ <Layout> <DimensionLayout dim="0"> <Group type="103" groupAlignment="0" attributes="0"> - <Group type="102" alignment="0" attributes="0"> + <Group type="102" attributes="0"> <EmptySpace max="-2" attributes="0"/> - <Component id="jScrollPane1" pref="256" max="32767" attributes="0"/> + <Group type="103" groupAlignment="0" attributes="0"> + <Component id="jScrollPane1" alignment="1" pref="244" max="32767" attributes="0"/> + <Component id="jButton1" alignment="1" 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"> + <Group type="102" alignment="1" attributes="0"> <EmptySpace max="-2" attributes="0"/> - <Component id="jScrollPane1" pref="100" max="32767" attributes="0"/> + <Component id="jScrollPane1" pref="93" max="32767" attributes="0"/> + <EmptySpace min="-2" pref="11" max="-2" attributes="0"/> + <Component id="jButton1" min="-2" max="-2" attributes="0"/> <EmptySpace max="-2" attributes="0"/> </Group> </Group> @@ -55,5 +60,15 @@ </Component> </SubComponents> </Container> + <Component class="javax.swing.JButton" name="jButton1"> + <Properties> + <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="blue/midi/Bundle.properties" key="MidiPanel.jButton1.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButton1ActionPerformed"/> + </Events> + </Component> </SubComponents> </Form> Modified: blue/trunk/blue-midi/src/blue/midi/MidiPanel.java =================================================================== --- blue/trunk/blue-midi/src/blue/midi/MidiPanel.java 2010-03-29 00:21:54 UTC (rev 4193) +++ blue/trunk/blue-midi/src/blue/midi/MidiPanel.java 2010-03-29 00:23:41 UTC (rev 4194) @@ -26,7 +26,10 @@ MidiPanel(MidiOptionsPanelController controller) { this.controller = controller; initComponents(); + resetModel(); + } + public void resetModel() { jTable1.setModel(new MidiInputTableModel()); jTable1.getTableHeader().setReorderingAllowed(false); jTable1.getColumnModel().getColumn(0).setMaxWidth(60); @@ -43,6 +46,7 @@ jScrollPane1 = new javax.swing.JScrollPane(); jTable1 = new javax.swing.JTable(); + jButton1 = new javax.swing.JButton(); jTable1.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { @@ -57,24 +61,40 @@ )); jScrollPane1.setViewportView(jTable1); + org.openide.awt.Mnemonics.setLocalizedText(jButton1, org.openide.util.NbBundle.getMessage(MidiPanel.class, "MidiPanel.jButton1.text")); // NOI18N + jButton1.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButton1ActionPerformed(evt); + } + }); + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() - .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 256, Short.MAX_VALUE) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 244, Short.MAX_VALUE) + .addComponent(jButton1, javax.swing.GroupLayout.Alignment.TRAILING)) .addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addContainerGap() - .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 100, Short.MAX_VALUE) + .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 93, Short.MAX_VALUE) + .addGap(11, 11, 11) + .addComponent(jButton1) .addContainerGap()) ); }// </editor-fold>//GEN-END:initComponents + private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed + MidiInputManager.getInstance().rescan(); + resetModel(); + }//GEN-LAST:event_jButton1ActionPerformed + void load() { // TODO read settings and initialize GUI // Example: @@ -100,6 +120,7 @@ return true; } // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JButton jButton1; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JTable jTable1; // End of variables declaration//GEN-END:variables Modified: blue/trunk/blue-ui-core/src/blue/ui/core/blueLive/BlueLiveToolBar.java =================================================================== --- blue/trunk/blue-ui-core/src/blue/ui/core/blueLive/BlueLiveToolBar.java 2010-03-29 00:21:54 UTC (rev 4193) +++ blue/trunk/blue-ui-core/src/blue/ui/core/blueLive/BlueLiveToolBar.java 2010-03-29 00:23:41 UTC (rev 4194) @@ -22,6 +22,7 @@ import blue.BlueData; import blue.event.PlayModeListener; import blue.gui.ExceptionDialog; +import blue.midi.MidiInputManager; import blue.projects.BlueProject; import blue.projects.BlueProjectManager; import blue.settings.GeneralSettings; @@ -59,6 +60,8 @@ JButton allNotesOffButton = new JButton("All Notes Off"); + JToggleButton midiButton = new JToggleButton("MIDI Input"); + private static BlueLiveToolBar instance = null; public static BlueLiveToolBar getInstance() { @@ -105,9 +108,18 @@ } }); + midiButton.addActionListener(new ActionListener() { + + public void actionPerformed(ActionEvent e) { + midiButtonActionPerformed(); + } + + }); + this.add(runButton); this.add(refreshButton); this.add(allNotesOffButton); + this.add(midiButton); BlueProjectManager.getInstance().addPropertyChangeListener(new PropertyChangeListener() { @@ -172,6 +184,16 @@ } } + public void midiButtonActionPerformed() { + boolean selected = midiButton.isSelected(); + + if(selected) { + MidiInputManager.getInstance().start(); + } else { + MidiInputManager.getInstance().stop(); + } + } + private void allNotesOffButtonActionPerformed(java.awt.event.ActionEvent evt) { sendEvents("i \"blueAllNotesOff\" 0 1"); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |