Thread: [Bluemusic-commits] SF.net SVN: bluemusic:[4136] blue/trunk
Brought to you by:
kunstmusik
From: <kun...@us...> - 2010-02-15 18:17:36
|
Revision: 4136 http://bluemusic.svn.sourceforge.net/bluemusic/?rev=4136&view=rev Author: kunstmusik Date: 2010-02-15 18:17:24 +0000 (Mon, 15 Feb 2010) Log Message: ----------- fixed "process on load" of python objects as well as setting mixer enabled by default Modified Paths: -------------- blue/trunk/ChangeLog blue/trunk/blue-projects/src/blue/projects/BlueProjectManager.java Modified: blue/trunk/ChangeLog =================================================================== --- blue/trunk/ChangeLog 2010-02-15 18:16:57 UTC (rev 4135) +++ blue/trunk/ChangeLog 2010-02-15 18:17:24 UTC (rev 4136) @@ -12,6 +12,22 @@ [CHANGE LOG] +>Notes for 2.0.x< +[released 2010.xx.xx] + +Steven Yi----------------------------------------------------------------------- + +blue + + [fix] - removed pre-initialization of python interpreter when application + started as it was causing issues + + [fix] - setting of mixer enabled by default according to user-defined + setting in program options was not working + + [fix] - "process on load" for pythonObjects was not working + + >Notes for 2.0.5< [released 2010.02.11] Modified: blue/trunk/blue-projects/src/blue/projects/BlueProjectManager.java =================================================================== --- blue/trunk/blue-projects/src/blue/projects/BlueProjectManager.java 2010-02-15 18:16:57 UTC (rev 4135) +++ blue/trunk/blue-projects/src/blue/projects/BlueProjectManager.java 2010-02-15 18:17:24 UTC (rev 4136) @@ -23,6 +23,8 @@ import blue.BlueSystem; import blue.projects.recentProjects.RecentProjectsList; import blue.settings.GeneralSettings; +import blue.settings.ProjectDefaultsSettings; +import blue.soundObject.SoundObjectException; import blue.ui.utilities.FileChooserManager; import blue.undo.BlueUndoManager; import blue.utility.GenericFileFilter; @@ -38,6 +40,7 @@ import org.openide.DialogDisplayer; import org.openide.NotifyDescriptor; import org.openide.awt.StatusDisplayer; +import org.openide.util.Exceptions; import org.openide.windows.WindowManager; /** @@ -86,11 +89,8 @@ final BlueData blueData = new BlueData(); BlueProject project = new BlueProject(blueData, null); - // TODO - initialize project to defaults from options -// enabled = ProgramOptions.isMixerEnabled(); -// blueData.getMixer().setEnabled(); + blueData.getMixer().setEnabled(ProjectDefaultsSettings.getInstance().mixerEnabled); - return project; } @@ -112,9 +112,15 @@ } else { BlueSystem.setCurrentProjectDirectory(null); } + try { + project.getData().getPolyObject().processOnLoad(); + } catch (SoundObjectException ex) { + Exceptions.printStackTrace(ex); + } } fireUpdatedCurrentProject(); + } public void addProject(BlueProject project) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <kun...@us...> - 2010-02-15 20:43:21
|
Revision: 4137 http://bluemusic.svn.sourceforge.net/bluemusic/?rev=4137&view=rev Author: kunstmusik Date: 2010-02-15 20:43:15 +0000 (Mon, 15 Feb 2010) Log Message: ----------- re-enabled python init on startup as it was not the cause of the problem Modified Paths: -------------- blue/trunk/ChangeLog blue/trunk/blue-ui-core/src/blue/ui/core/Installer.java Modified: blue/trunk/ChangeLog =================================================================== --- blue/trunk/ChangeLog 2010-02-15 18:17:24 UTC (rev 4136) +++ blue/trunk/ChangeLog 2010-02-15 20:43:15 UTC (rev 4137) @@ -19,9 +19,6 @@ blue - [fix] - removed pre-initialization of python interpreter when application - started as it was causing issues - [fix] - setting of mixer enabled by default according to user-defined setting in program options was not working Modified: blue/trunk/blue-ui-core/src/blue/ui/core/Installer.java =================================================================== --- blue/trunk/blue-ui-core/src/blue/ui/core/Installer.java 2010-02-15 18:17:24 UTC (rev 4136) +++ blue/trunk/blue-ui-core/src/blue/ui/core/Installer.java 2010-02-15 20:43:15 UTC (rev 4137) @@ -119,31 +119,31 @@ }); -// WindowManager.getDefault().invokeWhenUIReady(new Runnable() { -// -// public void run() { -// -// new Thread() { -// -// public void run() { -// -// ProgressHandle handle = ProgressHandleFactory.createHandle("Initializing Python Interpreter..."); -// handle.start(); -// handle.progress("Initializing..."); -// -// try { -// PythonProxy.reinitialize(); -// PythonProxy.processScript("import random"); -// } catch (Exception e) { -// -// } -// -// handle.finish(); -// } -// -// }.start(); -// } -// }); + WindowManager.getDefault().invokeWhenUIReady(new Runnable() { + + public void run() { + + new Thread() { + + public void run() { + + ProgressHandle handle = ProgressHandleFactory.createHandle("Initializing Python Interpreter..."); + handle.start(); + handle.progress("Initializing..."); + + try { + PythonProxy.reinitialize(); + PythonProxy.processScript("import random"); + } catch (Exception e) { + + } + + handle.finish(); + } + + }.start(); + } + }); } private void setWindowTitle() { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <kun...@us...> - 2010-02-15 22:04:39
|
Revision: 4139 http://bluemusic.svn.sourceforge.net/bluemusic/?rev=4139&view=rev Author: kunstmusik Date: 2010-02-15 22:04:33 +0000 (Mon, 15 Feb 2010) Log Message: ----------- re-disabled python initialization as it did cause problems Modified Paths: -------------- blue/trunk/ChangeLog blue/trunk/blue-ui-core/src/blue/ui/core/Installer.java Modified: blue/trunk/ChangeLog =================================================================== --- blue/trunk/ChangeLog 2010-02-15 21:13:06 UTC (rev 4138) +++ blue/trunk/ChangeLog 2010-02-15 22:04:33 UTC (rev 4139) @@ -19,6 +19,9 @@ blue + [fix] - removed pre-initialization of python interpreter when application + started as it was causing issues + [fix] - setting of mixer enabled by default according to user-defined setting in program options was not working Modified: blue/trunk/blue-ui-core/src/blue/ui/core/Installer.java =================================================================== --- blue/trunk/blue-ui-core/src/blue/ui/core/Installer.java 2010-02-15 21:13:06 UTC (rev 4138) +++ blue/trunk/blue-ui-core/src/blue/ui/core/Installer.java 2010-02-15 22:04:33 UTC (rev 4139) @@ -119,31 +119,31 @@ }); - WindowManager.getDefault().invokeWhenUIReady(new Runnable() { - - public void run() { - - new Thread() { - - public void run() { - - ProgressHandle handle = ProgressHandleFactory.createHandle("Initializing Python Interpreter..."); - handle.start(); - handle.progress("Initializing..."); - - try { - PythonProxy.reinitialize(); - PythonProxy.processScript("import random"); - } catch (Exception e) { - - } - - handle.finish(); - } - - }.start(); - } - }); +// WindowManager.getDefault().invokeWhenUIReady(new Runnable() { +// +// public void run() { +// +// new Thread() { +// +// public void run() { +// +// ProgressHandle handle = ProgressHandleFactory.createHandle("Initializing Python Interpreter..."); +// handle.start(); +// handle.progress("Initializing..."); +// +// try { +// PythonProxy.reinitialize(); +// PythonProxy.processScript("import random"); +// } catch (Exception e) { +// +// } +// +// handle.finish(); +// } +// +// }.start(); +// } +// }); } private void setWindowTitle() { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <kun...@us...> - 2010-02-16 00:07:58
|
Revision: 4140 http://bluemusic.svn.sourceforge.net/bluemusic/?rev=4140&view=rev Author: kunstmusik Date: 2010-02-16 00:07:51 +0000 (Tue, 16 Feb 2010) Log Message: ----------- modified CSD generation to note remove empty lines in instruments Modified Paths: -------------- blue/trunk/ChangeLog blue/trunk/blue-core/src/blue/Arrangement.java Modified: blue/trunk/ChangeLog =================================================================== --- blue/trunk/ChangeLog 2010-02-15 22:04:33 UTC (rev 4139) +++ blue/trunk/ChangeLog 2010-02-16 00:07:51 UTC (rev 4140) @@ -19,6 +19,9 @@ blue + [updated] - modified CSD generation to note remove empty lines in + instruments + [fix] - removed pre-initialization of python interpreter when application started as it was causing issues Modified: blue/trunk/blue-core/src/blue/Arrangement.java =================================================================== --- blue/trunk/blue-core/src/blue/Arrangement.java 2010-02-15 22:04:33 UTC (rev 4139) +++ blue/trunk/blue-core/src/blue/Arrangement.java 2010-02-16 00:07:51 UTC (rev 4140) @@ -517,11 +517,10 @@ } StrBuilder buffer = new StrBuilder(); - StringTokenizer st = new StringTokenizer(input, "\n"); - - while (st.hasMoreTokens()) { - String line = st.nextToken(); - + String[] lines = input.split("\\n"); +Pattern + for(String line : lines) { + if (line.trim().startsWith("blueMixerOut")) { String argText = line.trim().substring(12); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <kun...@us...> - 2010-02-16 19:12:40
|
Revision: 4142 http://bluemusic.svn.sourceforge.net/bluemusic/?rev=4142&view=rev Author: kunstmusik Date: 2010-02-16 19:12:33 +0000 (Tue, 16 Feb 2010) Log Message: ----------- work on command-line processing Modified Paths: -------------- blue/trunk/blue-projects/nbproject/project.xml blue/trunk/blue-ui-core/nbproject/project.xml Added Paths: ----------- blue/trunk/blue-ui-core/src/blue/ui/core/CompileProcessor.java Modified: blue/trunk/blue-projects/nbproject/project.xml =================================================================== --- blue/trunk/blue-projects/nbproject/project.xml 2010-02-16 03:33:06 UTC (rev 4141) +++ blue/trunk/blue-projects/nbproject/project.xml 2010-02-16 19:12:33 UTC (rev 4142) @@ -148,6 +148,7 @@ </test-dependencies> <public-packages> <package>blue.projects</package> + <package>blue.projects.actions</package> </public-packages> </data> </configuration> Modified: blue/trunk/blue-ui-core/nbproject/project.xml =================================================================== --- blue/trunk/blue-ui-core/nbproject/project.xml 2010-02-16 03:33:06 UTC (rev 4141) +++ blue/trunk/blue-ui-core/nbproject/project.xml 2010-02-16 19:12:33 UTC (rev 4142) @@ -122,6 +122,15 @@ </run-dependency> </dependency> <dependency> + <code-name-base>org.netbeans.modules.sendopts</code-name-base> + <build-prerequisite/> + <compile-dependency/> + <run-dependency> + <release-version>2</release-version> + <specification-version>2.7.1</specification-version> + </run-dependency> + </dependency> + <dependency> <code-name-base>org.netbeans.modules.settings</code-name-base> <build-prerequisite/> <compile-dependency/> Added: blue/trunk/blue-ui-core/src/blue/ui/core/CompileProcessor.java =================================================================== --- blue/trunk/blue-ui-core/src/blue/ui/core/CompileProcessor.java (rev 0) +++ blue/trunk/blue-ui-core/src/blue/ui/core/CompileProcessor.java 2010-02-16 19:12:33 UTC (rev 4142) @@ -0,0 +1,123 @@ +/* + * blue - object composition environment for csound Copyright (c) 2000-2009 + * Steven Yi (ste...@gm...) + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2 of the License or (at your option) any + * later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING.LIB. If not, write to the Free + * Software Foundation Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 + * USA + */ + +package blue.ui.core; + +import blue.BlueData; +import blue.BlueSystem; +import blue.projects.BlueProjectManager; +import blue.projects.actions.OpenProjectAction; +import blue.ui.core.render.CSDRender; +import blue.ui.core.render.CsdRenderResult; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.PrintWriter; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; +import org.netbeans.api.sendopts.CommandException; +import org.netbeans.spi.sendopts.Env; +import org.netbeans.spi.sendopts.Option; +import org.netbeans.spi.sendopts.OptionProcessor; +import org.openide.util.lookup.ServiceProvider; + +/** + * + * @author syi + */ + +@ServiceProvider(service=OptionProcessor.class) +public class CompileProcessor extends OptionProcessor { + private Option c = Option.requiredArgument('c', "compile"); + private Option o = Option.requiredArgument('o', "output"); + + @Override + protected Set<Option> getOptions() { + Set<Option> options = new HashSet<Option>(); + options.add(c); + options.add(o); + return options; + } + + @Override + protected void process(Env env, + Map<Option, String[]> optionValues) throws CommandException { + + String compileFileName = null; + String outFileName = null; + + if(optionValues.containsKey(c)) { + compileFileName = optionValues.get(c)[0]; + } + + if(optionValues.containsKey(o)) { + outFileName = optionValues.get(o)[0]; + } + + if(compileFileName == null && outFileName == null) { + return; + } + + if(compileFileName == null && outFileName != null) { + throw new CommandException(1, ".blue project not given as argument"); + } + + File in = new File(compileFileName); + + if (!in.exists() || !in.isFile()) { + throw new CommandException(1, "Could not open .blue file: " + in.getAbsolutePath()); + } + + if (outFileName == null) { + outFileName = compileFileName.substring(0, compileFileName + .indexOf(".blue")) + + ".csd"; + } + + OpenProjectAction.open(in); + + PrintWriter out = null; + + try { + + BlueData tempData = BlueProjectManager.getInstance().getCurrentBlueData(); + + out = new PrintWriter(new BufferedWriter( + new FileWriter(outFileName))); + CsdRenderResult renderResult = + CSDRender.generateCSD(tempData, 0.0F, -1.0F, false); + out.print(renderResult.getCsdText()); + out.close(); + + throw new CommandException(0, compileFileName + " " + + BlueSystem.getString("blue.compiledTo") + " " + + outFileName); + + } catch (Exception e) { + if (out != null) { + out.close(); + } + throw new CommandException(1, BlueSystem.getString("message.errorLabel") + " " + + BlueSystem.getString("blue.csdCompileError") + e.getMessage()); + } + } + +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <kun...@us...> - 2010-02-23 01:08:57
|
Revision: 4145 http://bluemusic.svn.sourceforge.net/bluemusic/?rev=4145&view=rev Author: kunstmusik Date: 2010-02-23 00:18:31 +0000 (Tue, 23 Feb 2010) Log Message: ----------- fixed loading of note processors for JMask Modified Paths: -------------- blue/trunk/ChangeLog blue/trunk/blue-core/src/blue/soundObject/JMask.java Modified: blue/trunk/ChangeLog =================================================================== --- blue/trunk/ChangeLog 2010-02-17 06:14:39 UTC (rev 4144) +++ blue/trunk/ChangeLog 2010-02-23 00:18:31 UTC (rev 4145) @@ -12,8 +12,8 @@ [CHANGE LOG] ->Notes for 2.0.x< -[released 2010.xx.xx] +>Notes for 2.0.6< +[released 2010.02.22] Steven Yi----------------------------------------------------------------------- @@ -30,7 +30,10 @@ [fix] - "process on load" for pythonObjects was not working + [fix] - JMask - NoteProcessors were being saved to disk but not loading + correctly + >Notes for 2.0.5< [released 2010.02.11] Modified: blue/trunk/blue-core/src/blue/soundObject/JMask.java =================================================================== --- blue/trunk/blue-core/src/blue/soundObject/JMask.java 2010-02-17 06:14:39 UTC (rev 4144) +++ blue/trunk/blue-core/src/blue/soundObject/JMask.java 2010-02-23 00:18:31 UTC (rev 4145) @@ -138,8 +138,7 @@ } public void setNoteProcessorChain(NoteProcessorChain chain) { - // TODO Auto-generated method stub - + this.npc = chain; } public void setRepeatPoint(float repeatPoint) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <kun...@us...> - 2010-02-23 02:36:58
|
Revision: 4147 http://bluemusic.svn.sourceforge.net/bluemusic/?rev=4147&view=rev Author: kunstmusik Date: 2010-02-23 02:36:52 +0000 (Tue, 23 Feb 2010) Log Message: ----------- fix for parameter automation "Clear All" functionality Modified Paths: -------------- blue/trunk/ChangeLog blue/trunk/blue-core/src/blue/automation/ParameterIdList.java blue/trunk/blue-core/src/blue/blueConstants.properties blue/trunk/blue-ui-core/src/blue/automation/AutomationManager.java Modified: blue/trunk/ChangeLog =================================================================== --- blue/trunk/ChangeLog 2010-02-23 00:19:49 UTC (rev 4146) +++ blue/trunk/ChangeLog 2010-02-23 02:36:52 UTC (rev 4147) @@ -12,6 +12,16 @@ [CHANGE LOG] +>Notes for 2.0.7< +[released 2010.02.22] + +Steven Yi----------------------------------------------------------------------- + +blue + + [fix] - Using Clear All for Automations on a SoundLayer did not work + + >Notes for 2.0.6< [released 2010.02.22] Modified: blue/trunk/blue-core/src/blue/automation/ParameterIdList.java =================================================================== --- blue/trunk/blue-core/src/blue/automation/ParameterIdList.java 2010-02-23 00:19:49 UTC (rev 4146) +++ blue/trunk/blue-core/src/blue/automation/ParameterIdList.java 2010-02-23 02:36:52 UTC (rev 4147) @@ -47,7 +47,7 @@ } }; - ArrayList parameters = new ArrayList(); + private ArrayList parameters = new ArrayList(); private int selectedIndex = -1; @@ -115,6 +115,10 @@ fireRemoveDataEvent(lde); } + public ArrayList getParameters() { + return parameters; + } + public Iterator iterator() { return parameters.iterator(); } Modified: blue/trunk/blue-core/src/blue/blueConstants.properties =================================================================== --- blue/trunk/blue-core/src/blue/blueConstants.properties 2010-02-23 00:19:49 UTC (rev 4146) +++ blue/trunk/blue-core/src/blue/blueConstants.properties 2010-02-23 02:36:52 UTC (rev 4147) @@ -1,2 +1,2 @@ blueReleaseDate=2010.02.22 -blueVersion=2.0.6 +blueVersion=2.0.7 Modified: blue/trunk/blue-ui-core/src/blue/automation/AutomationManager.java =================================================================== --- blue/trunk/blue-ui-core/src/blue/automation/AutomationManager.java 2010-02-23 00:19:49 UTC (rev 4146) +++ blue/trunk/blue-ui-core/src/blue/automation/AutomationManager.java 2010-02-23 02:36:52 UTC (rev 4147) @@ -410,7 +410,7 @@ ParameterIdList idList = selectedSoundLayer .getAutomationParameters(); - Iterator iter = new ArrayList(idList.parameters).iterator(); + Iterator iter = new ArrayList(idList.getParameters()).iterator(); while (iter.hasNext()) { String paramId = (String) iter.next(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <kun...@us...> - 2010-03-03 03:37:23
|
Revision: 4150 http://bluemusic.svn.sourceforge.net/bluemusic/?rev=4150&view=rev Author: kunstmusik Date: 2010-03-03 03:37:17 +0000 (Wed, 03 Mar 2010) Log Message: ----------- fixed setting of defaults for new projects (Author, Disk and Realtime Render settings) Modified Paths: -------------- blue/trunk/ChangeLog blue/trunk/blue-projects/src/blue/projects/BlueProjectManager.java Modified: blue/trunk/ChangeLog =================================================================== --- blue/trunk/ChangeLog 2010-03-02 18:29:40 UTC (rev 4149) +++ blue/trunk/ChangeLog 2010-03-03 03:37:17 UTC (rev 4150) @@ -12,6 +12,17 @@ [CHANGE LOG] +>Notes for 2.0.8< +[released 2010.xx.xx] + +Steven Yi----------------------------------------------------------------------- + +blue + + [fix] - Project defaults were not being set correctly (Author, Realtime and + Disk render settings) + + >Notes for 2.0.7< [released 2010.02.22] Modified: blue/trunk/blue-projects/src/blue/projects/BlueProjectManager.java =================================================================== --- blue/trunk/blue-projects/src/blue/projects/BlueProjectManager.java 2010-03-02 18:29:40 UTC (rev 4149) +++ blue/trunk/blue-projects/src/blue/projects/BlueProjectManager.java 2010-03-03 03:37:17 UTC (rev 4150) @@ -21,9 +21,12 @@ import blue.BlueData; import blue.BlueSystem; +import blue.ProjectProperties; import blue.projects.recentProjects.RecentProjectsList; +import blue.settings.DiskRenderSettings; import blue.settings.GeneralSettings; import blue.settings.ProjectDefaultsSettings; +import blue.settings.RealtimeRenderSettings; import blue.soundObject.SoundObjectException; import blue.ui.utilities.FileChooserManager; import blue.undo.BlueUndoManager; @@ -91,6 +94,43 @@ blueData.getMixer().setEnabled(ProjectDefaultsSettings.getInstance().mixerEnabled); + ProjectProperties proj = blueData.getProjectProperties(); + proj.author = ProjectDefaultsSettings.getInstance().defaultAuthor; + + RealtimeRenderSettings rtSettings = RealtimeRenderSettings. + getInstance(); + + proj.sampleRate = rtSettings.defaultSr; + proj.ksmps = rtSettings.defaultKsmps; + proj.channels = rtSettings.defaultNchnls; + + proj.useAudioOut = rtSettings.audioOutEnabled; + proj.useAudioIn = rtSettings.audioInEnabled; + proj.useMidiIn = rtSettings.midiInEnabled; + proj.useMidiOut = rtSettings.midiOutEnabled; + + proj.noteAmpsEnabled = rtSettings.noteAmpsEnabled; + proj.outOfRangeEnabled = rtSettings.outOfRangeEnabled; + proj.warningsEnabled = rtSettings.warningsEnabled; + proj.benchmarkEnabled = rtSettings.benchmarkEnabled; + + proj.advancedSettings = rtSettings.advancedSettings; + + // proj.commandLine = ProgramOptions.getDefaultCommandline(); + + DiskRenderSettings diskSettings = DiskRenderSettings.getInstance(); + + proj.diskSampleRate = diskSettings.defaultSr; + proj.diskKsmps = diskSettings.defaultKsmps; + proj.diskChannels = diskSettings.defaultNchnls; + + proj.diskNoteAmpsEnabled = diskSettings.noteAmpsEnabled; + proj.diskOutOfRangeEnabled = diskSettings.outOfRangeEnabled; + proj.diskWarningsEnabled = diskSettings.warningsEnabled; + proj.diskBenchmarkEnabled = diskSettings.benchmarkEnabled; + + proj.diskAdvancedSettings = diskSettings.advancedSettings; + return project; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <kun...@us...> - 2010-03-14 01:15:01
|
Revision: 4152 http://bluemusic.svn.sourceforge.net/bluemusic/?rev=4152&view=rev Author: kunstmusik Date: 2010-03-14 01:14:55 +0000 (Sun, 14 Mar 2010) Log Message: ----------- fixed issues with adding/editing Effects and Sends when the Mixer is undocked Modified Paths: -------------- blue/trunk/ChangeLog blue/trunk/blue-ui-core/src/blue/ui/core/mixer/AddEffectEditorDialog.java blue/trunk/blue-ui-core/src/blue/ui/core/mixer/ChannelPanel.java blue/trunk/blue-ui-core/src/blue/ui/core/mixer/EffectEditorManager.java blue/trunk/blue-ui-core/src/blue/ui/core/mixer/EffectsPopup.java blue/trunk/blue-ui-core/src/blue/ui/core/mixer/SendEditorManager.java Modified: blue/trunk/ChangeLog =================================================================== --- blue/trunk/ChangeLog 2010-03-13 22:50:01 UTC (rev 4151) +++ blue/trunk/ChangeLog 2010-03-14 01:14:55 UTC (rev 4152) @@ -22,7 +22,10 @@ [fix] - Project defaults were not being set correctly (Author, Realtime and Disk render settings) + [fix] - Fixed issues with Adding/Editing Effects and Sends on the Mixer when + the Mixer is undocked + >Notes for 2.0.7< [released 2010.02.22] Modified: blue/trunk/blue-ui-core/src/blue/ui/core/mixer/AddEffectEditorDialog.java =================================================================== --- blue/trunk/blue-ui-core/src/blue/ui/core/mixer/AddEffectEditorDialog.java 2010-03-13 22:50:01 UTC (rev 4151) +++ blue/trunk/blue-ui-core/src/blue/ui/core/mixer/AddEffectEditorDialog.java 2010-03-14 01:14:55 UTC (rev 4152) @@ -23,7 +23,6 @@ import java.awt.BorderLayout; import java.awt.Component; import java.awt.Container; -import java.awt.Dialog; import javax.swing.JDialog; import javax.swing.JLabel; @@ -42,6 +41,7 @@ import com.l2fprod.common.swing.BaseDialog; import electric.xml.Element; +import java.awt.Frame; public class AddEffectEditorDialog extends BaseDialog implements WindowSettingsSavable { @@ -54,7 +54,7 @@ EffectEditor effectEditor = new EffectEditor(); - public AddEffectEditorDialog(Dialog parent) { + public AddEffectEditorDialog(Frame parent) { super(parent, "Edit Effect", true); this.getBanner().setVisible(false); @@ -142,19 +142,19 @@ return this.effect; } - /** - * @param args - */ - public static void main(String[] args) { - GUI.setBlueLookAndFeel(); +// /** +// * @param args +// */ +// public static void main(String[] args) { +// GUI.setBlueLookAndFeel(); +// +// AddEffectEditorDialog dialog = new AddEffectEditorDialog(new JDialog()); +// dialog.setEffect(null); +// System.out.println(dialog.ask()); +// System.exit(0); +// +// } - AddEffectEditorDialog dialog = new AddEffectEditorDialog(new JDialog()); - dialog.setEffect(null); - System.out.println(dialog.ask()); - System.exit(0); - - } - public void loadWindowSettings(Element settings) { WindowSettingManager.setBasicSettings(settings, this); } Modified: blue/trunk/blue-ui-core/src/blue/ui/core/mixer/ChannelPanel.java =================================================================== --- blue/trunk/blue-ui-core/src/blue/ui/core/mixer/ChannelPanel.java 2010-03-13 22:50:01 UTC (rev 4151) +++ blue/trunk/blue-ui-core/src/blue/ui/core/mixer/ChannelPanel.java 2010-03-14 01:14:55 UTC (rev 4152) @@ -24,7 +24,6 @@ import java.awt.CardLayout; import java.awt.Color; import java.awt.Component; -import java.awt.Dialog; import java.awt.Dimension; import java.awt.Font; import java.awt.event.ActionEvent; @@ -48,7 +47,9 @@ import javax.swing.event.ChangeListener; import blue.BlueSystem; +import java.awt.Frame; import javax.swing.JFrame; +import org.openide.windows.WindowManager; /** * @@ -474,7 +475,7 @@ Object obj = postList.getSelectedValue(); - JFrame root = (JFrame) SwingUtilities.getRoot(this); + Frame root = WindowManager.getDefault().getMainWindow(); if (obj instanceof Effect) { Effect effect = (Effect) obj; @@ -518,7 +519,7 @@ Object obj = preList.getSelectedValue(); - JFrame root = (JFrame) SwingUtilities.getRoot(this); + Frame root = WindowManager.getDefault().getMainWindow(); if (obj instanceof Effect) { Effect effect = (Effect) obj; Modified: blue/trunk/blue-ui-core/src/blue/ui/core/mixer/EffectEditorManager.java =================================================================== --- blue/trunk/blue-ui-core/src/blue/ui/core/mixer/EffectEditorManager.java 2010-03-13 22:50:01 UTC (rev 4151) +++ blue/trunk/blue-ui-core/src/blue/ui/core/mixer/EffectEditorManager.java 2010-03-14 01:14:55 UTC (rev 4152) @@ -28,7 +28,7 @@ import blue.gui.DialogUtil; import blue.orchestra.blueSynthBuilder.BSBObjectRegistry; import blue.orchestra.editor.blueSynthBuilder.BSBEditPanel; -import javax.swing.JFrame; +import java.awt.Frame; public class EffectEditorManager { @@ -63,13 +63,12 @@ } } - public void openEffectEditor(JFrame root, Effect effect) { + public void openEffectEditor(Frame root, Effect effect) { Object val = map.get(effect); if (val == null) { JDialog dialog = new JDialog(root); - BSBEditPanel editPanel = new BSBEditPanel(BSBObjectRegistry .getBSBObjects()); editPanel.editBSBGraphicInterface(effect.getGraphicInterface()); Modified: blue/trunk/blue-ui-core/src/blue/ui/core/mixer/EffectsPopup.java =================================================================== --- blue/trunk/blue-ui-core/src/blue/ui/core/mixer/EffectsPopup.java 2010-03-13 22:50:01 UTC (rev 4151) +++ blue/trunk/blue-ui-core/src/blue/ui/core/mixer/EffectsPopup.java 2010-03-14 01:14:55 UTC (rev 4152) @@ -21,7 +21,6 @@ package blue.ui.core.mixer; import blue.mixer.*; -import java.awt.Dialog; import java.awt.Frame; import java.awt.event.ActionEvent; import java.util.ArrayList; @@ -31,7 +30,6 @@ import javax.swing.ComboBoxModel; import javax.swing.JMenu; import javax.swing.JPopupMenu; -import javax.swing.SwingUtilities; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import javax.swing.event.PopupMenuEvent; @@ -39,7 +37,6 @@ import blue.BlueSystem; import blue.utility.ObjectUtilities; -import javax.swing.JFrame; import org.openide.windows.WindowManager; public class EffectsPopup extends JPopupMenu implements ChangeListener { @@ -429,8 +426,7 @@ if (chain != null && selectedIndex >= 0) { Object obj = chain.getElementAt(selectedIndex); - JFrame root = (JFrame) SwingUtilities.getRoot(EffectsPopup.this - .getInvoker()); + Frame root = WindowManager.getDefault().getMainWindow(); if (obj instanceof Effect) { Effect effect = (Effect) obj; @@ -517,8 +513,7 @@ public void actionPerformed(ActionEvent e) { if (chain != null) { if (addEffectDialog == null) { - Dialog root = (Dialog) SwingUtilities - .getRoot(EffectsPopup.this.getInvoker()); + Frame root = WindowManager.getDefault().getMainWindow(); addEffectDialog = new AddEffectEditorDialog(root); } @@ -555,8 +550,7 @@ temp = ((SubChannelOutComboBoxModel) model).getCopy(); } - JFrame root = (JFrame) SwingUtilities.getRoot(EffectsPopup.this - .getInvoker()); + Frame root = WindowManager.getDefault().getMainWindow(); SendEditorManager.getInstance() .openSendEditor(root, send, temp); Modified: blue/trunk/blue-ui-core/src/blue/ui/core/mixer/SendEditorManager.java =================================================================== --- blue/trunk/blue-ui-core/src/blue/ui/core/mixer/SendEditorManager.java 2010-03-13 22:50:01 UTC (rev 4151) +++ blue/trunk/blue-ui-core/src/blue/ui/core/mixer/SendEditorManager.java 2010-03-14 01:14:55 UTC (rev 4152) @@ -20,7 +20,6 @@ package blue.ui.core.mixer; import blue.mixer.*; -import java.awt.Dialog; import java.util.HashMap; import java.util.Iterator; @@ -28,7 +27,7 @@ import javax.swing.JDialog; import blue.gui.DialogUtil; -import javax.swing.JFrame; +import java.awt.Frame; public class SendEditorManager { @@ -63,7 +62,7 @@ } } - public void openSendEditor(JFrame root, Send send, + public void openSendEditor(Frame root, Send send, ComboBoxModel comboBoxModel) { Object val = map.get(send); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <kun...@us...> - 2010-03-14 14:55:15
|
Revision: 4153 http://bluemusic.svn.sourceforge.net/bluemusic/?rev=4153&view=rev Author: kunstmusik Date: 2010-03-14 14:55:09 +0000 (Sun, 14 Mar 2010) Log Message: ----------- added Backspace as an alternate way to delete SoundObjects to Delete key Modified Paths: -------------- blue/trunk/blue-ui-core/src/blue/ui/core/score/ScoreTimeCanvas.java blue/trunk/build.xml Modified: blue/trunk/blue-ui-core/src/blue/ui/core/score/ScoreTimeCanvas.java =================================================================== --- blue/trunk/blue-ui-core/src/blue/ui/core/score/ScoreTimeCanvas.java 2010-03-14 01:14:55 UTC (rev 4152) +++ blue/trunk/blue-ui-core/src/blue/ui/core/score/ScoreTimeCanvas.java 2010-03-14 14:55:09 UTC (rev 4153) @@ -256,6 +256,8 @@ inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, 0), "deleteSoundObjects"); + inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_BACK_SPACE, 0), + "deleteSoundObjects"); inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_T, BlueSystem.getMenuShortcutKey()), "showQuickTimeDialog"); Modified: blue/trunk/build.xml =================================================================== --- blue/trunk/build.xml 2010-03-14 01:14:55 UTC (rev 4152) +++ blue/trunk/build.xml 2010-03-14 14:55:09 UTC (rev 4153) @@ -15,6 +15,7 @@ <target name="build-zip" depends="suite.build-zip,blue-manual"> + <!-- <target name="build-zip" depends="suite.build-zip"> --> <echo message="Building blue version ${blueVersion}" /> <copy file="ChangeLog" tofile="build/ChangeLog" overwrite="true"> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <kun...@us...> - 2010-03-14 15:15:49
|
Revision: 4154 http://bluemusic.svn.sourceforge.net/bluemusic/?rev=4154&view=rev Author: kunstmusik Date: 2010-03-14 15:15:41 +0000 (Sun, 14 Mar 2010) Log Message: ----------- fixed Command key shortcuts for pasting and duplicating soundObjects as well as PianoRoll notes on OSX Modified Paths: -------------- blue/trunk/ChangeLog blue/trunk/blue-ui-core/src/blue/soundObject/editor/pianoRoll/NoteCanvasMouseListener.java blue/trunk/blue-ui-core/src/blue/soundObject/editor/pianoRoll/PianoRollCanvas.java blue/trunk/blue-ui-core/src/blue/ui/core/score/ScoreMouseProcessor.java blue/trunk/blue-ui-core/src/blue/ui/core/score/ScoreTimeCanvas.java Modified: blue/trunk/ChangeLog =================================================================== --- blue/trunk/ChangeLog 2010-03-14 14:55:09 UTC (rev 4153) +++ blue/trunk/ChangeLog 2010-03-14 15:15:41 UTC (rev 4154) @@ -19,6 +19,13 @@ blue + [new] - Added Backspace key as alternate way to delete soundObjects to + Delete key + + [fix] - OSX: Fixed paste and duplicate actions with mouse to use Command Key + (Command-Click to paste, Command-Click-Drag to duplicate + soundObjects) and also fixed to use command key in PianoRoll + [fix] - Project defaults were not being set correctly (Author, Realtime and Disk render settings) Modified: blue/trunk/blue-ui-core/src/blue/soundObject/editor/pianoRoll/NoteCanvasMouseListener.java =================================================================== --- blue/trunk/blue-ui-core/src/blue/soundObject/editor/pianoRoll/NoteCanvasMouseListener.java 2010-03-14 14:55:09 UTC (rev 4153) +++ blue/trunk/blue-ui-core/src/blue/soundObject/editor/pianoRoll/NoteCanvasMouseListener.java 2010-03-14 15:15:41 UTC (rev 4154) @@ -19,6 +19,7 @@ */ package blue.soundObject.editor.pianoRoll; +import blue.BlueSystem; import java.awt.Component; import java.awt.Cursor; import java.awt.Point; @@ -46,6 +47,8 @@ private static final int EDGE = 5; + private static final int OS_CTRL_KEY = BlueSystem.getMenuShortcutKey(); + private final Cursor RESIZE_CURSOR = Cursor .getPredefinedCursor(Cursor.E_RESIZE_CURSOR); @@ -112,7 +115,7 @@ fireSelectionEvent(selEvt); } - } else if (e.isControlDown() && !e.isShiftDown()) { + } else if (((e.getModifiers() & OS_CTRL_KEY) == OS_CTRL_KEY) && !e.isShiftDown()) { if (canvas.bufferedNote == null) { return; } @@ -134,7 +137,7 @@ start = null; canvas.addNote(note, x, y); - } else if (e.isShiftDown() && !e.isControlDown()) { + } else if (e.isShiftDown() && ((e.getModifiers() & OS_CTRL_KEY) != OS_CTRL_KEY)) { fireSelectionEvent(new SelectionEvent(null, SelectionEvent.SELECTION_CLEAR)); // start = null; Modified: blue/trunk/blue-ui-core/src/blue/soundObject/editor/pianoRoll/PianoRollCanvas.java =================================================================== --- blue/trunk/blue-ui-core/src/blue/soundObject/editor/pianoRoll/PianoRollCanvas.java 2010-03-14 14:55:09 UTC (rev 4153) +++ blue/trunk/blue-ui-core/src/blue/soundObject/editor/pianoRoll/PianoRollCanvas.java 2010-03-14 15:15:41 UTC (rev 4154) @@ -126,31 +126,23 @@ inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, 0), "deleteNotes"); - inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_X, BlueSystem - .getMenuShortcutKey()), "cut"); - inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_C, BlueSystem - .getMenuShortcutKey()), "copy"); + final int osCtrlKey = BlueSystem.getMenuShortcutKey(); + + inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_X, osCtrlKey), "cut"); + inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_C, osCtrlKey), "copy"); - inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT, BlueSystem - .getMenuShortcutKey()), "raisePixelSecond"); - inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_LEFT, BlueSystem - .getMenuShortcutKey()), "lowerPixelSecond"); - inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, BlueSystem - .getMenuShortcutKey()), "raiseHeight"); - inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_UP, BlueSystem - .getMenuShortcutKey()), "lowerHeight"); + inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT, osCtrlKey), "raisePixelSecond"); + inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_LEFT, osCtrlKey), "lowerPixelSecond"); + inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, osCtrlKey), "raiseHeight"); + inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_UP, osCtrlKey), "lowerHeight"); // Extra set of shortcuts in case the others interfere with window // manager - inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_EQUALS, BlueSystem - .getMenuShortcutKey()), "raisePixelSecond"); - inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_MINUS, BlueSystem - .getMenuShortcutKey()), "lowerPixelSecond"); - inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_EQUALS, BlueSystem - .getMenuShortcutKey() + inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_EQUALS, osCtrlKey), "raisePixelSecond"); + inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_MINUS, osCtrlKey), "lowerPixelSecond"); + inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_EQUALS, osCtrlKey | InputEvent.SHIFT_DOWN_MASK), "raiseHeight"); - inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_MINUS, BlueSystem - .getMenuShortcutKey() + inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_MINUS, osCtrlKey | InputEvent.SHIFT_DOWN_MASK), "lowerHeight"); Action deleteNotes = new AbstractAction(BlueSystem Modified: blue/trunk/blue-ui-core/src/blue/ui/core/score/ScoreMouseProcessor.java =================================================================== --- blue/trunk/blue-ui-core/src/blue/ui/core/score/ScoreMouseProcessor.java 2010-03-14 14:55:09 UTC (rev 4153) +++ blue/trunk/blue-ui-core/src/blue/ui/core/score/ScoreMouseProcessor.java 2010-03-14 15:15:41 UTC (rev 4154) @@ -4,6 +4,7 @@ */ package blue.ui.core.score; +import blue.BlueSystem; import java.awt.Component; import java.awt.Cursor; import java.awt.Point; @@ -43,6 +44,8 @@ private static final int EDGE = 5; + private static final int OS_CTRL_KEY = BlueSystem.getMenuShortcutKey(); + private final Cursor LEFT_RESIZE_CURSOR = Cursor .getPredefinedCursor(Cursor.W_RESIZE_CURSOR); @@ -164,7 +167,7 @@ pasteSoundObject(soundLayerIndex, start); this.justSelected = true; - } else if (e.isControlDown()) { + } else if ((e.getModifiers() & OS_CTRL_KEY) == OS_CTRL_KEY){ int soundLayerIndex = getSoundLayerIndex(e.getY()); int start = e.getX(); @@ -236,7 +239,7 @@ if (sCanvas.mBuffer.size() != 0 && !isPopupOpen && !justSelected) { if (dragMode == MOVE) { if (dragStart && SwingUtilities.isLeftMouseButton(e)) { - if(e.isControlDown()) { + if((e.getModifiers() & OS_CTRL_KEY) == OS_CTRL_KEY) { duplicateSoundObjectsInPlace(); } else { setSelectionDragRegions(); Modified: blue/trunk/blue-ui-core/src/blue/ui/core/score/ScoreTimeCanvas.java =================================================================== --- blue/trunk/blue-ui-core/src/blue/ui/core/score/ScoreTimeCanvas.java 2010-03-14 14:55:09 UTC (rev 4153) +++ blue/trunk/blue-ui-core/src/blue/ui/core/score/ScoreTimeCanvas.java 2010-03-14 15:15:41 UTC (rev 4154) @@ -249,20 +249,22 @@ private void initActions() { InputMap inputMap = this.getInputMap(WHEN_FOCUSED); ActionMap actionMap = this.getActionMap(); + + final int osCtrlKey = BlueSystem.getMenuShortcutKey(); - inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_X, BlueSystem.getMenuShortcutKey()), "cutSoundObjects"); + inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_X, osCtrlKey), "cutSoundObjects"); - inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_C, BlueSystem.getMenuShortcutKey()), "copySoundObjects"); + inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_C, osCtrlKey), "copySoundObjects"); inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, 0), "deleteSoundObjects"); inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_BACK_SPACE, 0), "deleteSoundObjects"); - inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_T, BlueSystem.getMenuShortcutKey()), "showQuickTimeDialog"); + inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_T, osCtrlKey), "showQuickTimeDialog"); - inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_D, BlueSystem.getMenuShortcutKey()), "duplicateSoundObjects"); - inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_R, BlueSystem.getMenuShortcutKey()), "repeatSoundObjects"); + inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_D, osCtrlKey), "duplicateSoundObjects"); + inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_R, osCtrlKey), "repeatSoundObjects"); inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_UP, 0), "nudgeUp"); inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, 0), "nudgeDown"); @@ -278,13 +280,13 @@ inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT, KeyEvent.SHIFT_DOWN_MASK), "nudgeRight10"); - inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT, BlueSystem.getMenuShortcutKey()), "raisePixelSecond"); - inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_LEFT, BlueSystem.getMenuShortcutKey()), "lowerPixelSecond"); + inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT, osCtrlKey), "raisePixelSecond"); + inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_LEFT, osCtrlKey), "lowerPixelSecond"); // Extra set of shortcuts in case the others interfere with window // manager - inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_EQUALS, BlueSystem.getMenuShortcutKey()), "raisePixelSecond"); - inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_MINUS, BlueSystem.getMenuShortcutKey()), "lowerPixelSecond"); + inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_EQUALS, osCtrlKey), "raisePixelSecond"); + inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_MINUS, osCtrlKey), "lowerPixelSecond"); actionMap.put("cutSoundObjects", new AbstractAction() { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <kun...@us...> - 2010-03-14 22:27:40
|
Revision: 4156 http://bluemusic.svn.sourceforge.net/bluemusic/?rev=4156&view=rev Author: kunstmusik Date: 2010-03-14 22:27:33 +0000 (Sun, 14 Mar 2010) Log Message: ----------- added -m1024 when parsing audio devices for Coreaudio Modified Paths: -------------- blue/trunk/ChangeLog blue/trunk/blue-settings/src/blue/settings/DriverUtils.java Modified: blue/trunk/ChangeLog =================================================================== --- blue/trunk/ChangeLog 2010-03-14 17:05:45 UTC (rev 4155) +++ blue/trunk/ChangeLog 2010-03-14 22:27:33 UTC (rev 4156) @@ -32,7 +32,9 @@ [fix] - Fixed issues with Adding/Editing Effects and Sends on the Mixer when the Mixer is undocked + [fix] - Fixed audio device parsing for Coreaudio + >Notes for 2.0.7< [released 2010.02.22] Modified: blue/trunk/blue-settings/src/blue/settings/DriverUtils.java =================================================================== --- blue/trunk/blue-settings/src/blue/settings/DriverUtils.java 2010-03-14 17:05:45 UTC (rev 4155) +++ blue/trunk/blue-settings/src/blue/settings/DriverUtils.java 2010-03-14 22:27:33 UTC (rev 4156) @@ -191,6 +191,7 @@ buffer.append(csoundCommand); buffer.append(" -+msg_color=false "); + buffer.append(" -m1024 "); if (driver != null) { buffer.append(" -+rtaudio=").append(driver); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <kun...@us...> - 2010-03-15 01:56:30
|
Revision: 4157 http://bluemusic.svn.sourceforge.net/bluemusic/?rev=4157&view=rev Author: kunstmusik Date: 2010-03-15 01:56:24 +0000 (Mon, 15 Mar 2010) Log Message: ----------- Bug 2961116 - updated library saving code to prevent issue with clearing library when error occurs when saving to disk Modified Paths: -------------- blue/trunk/ChangeLog blue/trunk/blue-core/src/blue/BlueSystem.java Modified: blue/trunk/ChangeLog =================================================================== --- blue/trunk/ChangeLog 2010-03-14 22:27:33 UTC (rev 4156) +++ blue/trunk/ChangeLog 2010-03-15 01:56:24 UTC (rev 4157) @@ -13,7 +13,7 @@ [CHANGE LOG] >Notes for 2.0.8< -[released 2010.xx.xx] +[released 2010.03.14] Steven Yi----------------------------------------------------------------------- Modified: blue/trunk/blue-core/src/blue/BlueSystem.java =================================================================== --- blue/trunk/blue-core/src/blue/BlueSystem.java 2010-03-14 22:27:33 UTC (rev 4156) +++ blue/trunk/blue-core/src/blue/BlueSystem.java 2010-03-15 01:56:24 UTC (rev 4157) @@ -421,20 +421,13 @@ String userInstrFileName = BlueSystem.getUserConfigurationDirectory() + File.separator + "userInstrumentLibrary.xml"; + String tmpFileName = userInstrFileName + ".tmp"; + PrintWriter out = null; - File f = new File(userInstrFileName); - - if (f.exists()) { - File backup = new File(userInstrFileName + "~"); - if (backup.exists()) { - backup.delete(); - } - f.renameTo(backup); - } - + try { - out = new PrintWriter(new FileWriter(userInstrFileName)); + out = new PrintWriter(new FileWriter(tmpFileName)); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); @@ -454,8 +447,21 @@ } else { System.err.println("Unable to Save User Instrument Library: " + userInstrFileName); + return; } + File f = new File(userInstrFileName); + + if (f.exists()) { + File backup = new File(userInstrFileName + "~"); + if (backup.exists()) { + backup.delete(); + } + f.renameTo(backup); + } + + f = new File(tmpFileName); + f.renameTo(new File(userInstrFileName)); } public static UDOLibrary getUDOLibrary() { @@ -505,20 +511,12 @@ String userInstrFileName = BlueSystem.getUserConfigurationDirectory() + File.separator + "udoLibrary.xml"; + String tmpFileName = userInstrFileName + ".tmp"; + PrintWriter out = null; - File f = new File(userInstrFileName); - - if (f.exists()) { - File backup = new File(userInstrFileName + "~"); - if (backup.exists()) { - backup.delete(); - } - f.renameTo(backup); - } - try { - out = new PrintWriter(new FileWriter(userInstrFileName)); + out = new PrintWriter(new FileWriter(tmpFileName)); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); @@ -537,8 +535,21 @@ } else { System.err.println("Unable to Save UDO Library: " + userInstrFileName); + return; } + File f = new File(userInstrFileName); + + if (f.exists()) { + File backup = new File(userInstrFileName + "~"); + if (backup.exists()) { + backup.delete(); + } + f.renameTo(backup); + } + + f = new File(tmpFileName); + f.renameTo(new File(userInstrFileName)); } /** ************************************************************** */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <kun...@us...> - 2010-03-15 02:02:29
|
Revision: 4158 http://bluemusic.svn.sourceforge.net/bluemusic/?rev=4158&view=rev Author: kunstmusik Date: 2010-03-15 02:02:23 +0000 (Mon, 15 Mar 2010) Log Message: ----------- updated for release Modified Paths: -------------- blue/trunk/ChangeLog blue/trunk/blue-core/src/blue/blueConstants.properties Modified: blue/trunk/ChangeLog =================================================================== --- blue/trunk/ChangeLog 2010-03-15 01:56:24 UTC (rev 4157) +++ blue/trunk/ChangeLog 2010-03-15 02:02:23 UTC (rev 4158) @@ -34,7 +34,11 @@ [fix] - Fixed audio device parsing for Coreaudio + [fix] - modified library saving code to write to a temporary file first + before renaming to the final to prevent clearing the library if + there is a problem during the save (Bug 2961116) + >Notes for 2.0.7< [released 2010.02.22] Modified: blue/trunk/blue-core/src/blue/blueConstants.properties =================================================================== --- blue/trunk/blue-core/src/blue/blueConstants.properties 2010-03-15 01:56:24 UTC (rev 4157) +++ blue/trunk/blue-core/src/blue/blueConstants.properties 2010-03-15 02:02:23 UTC (rev 4158) @@ -1,2 +1,2 @@ -blueReleaseDate=2010.02.22 -blueVersion=2.0.7 +blueReleaseDate=2010.03.14 +blueVersion=2.0.8 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <kun...@us...> - 2010-03-20 23:48:45
|
Revision: 4162 http://bluemusic.svn.sourceforge.net/bluemusic/?rev=4162&view=rev Author: kunstmusik Date: 2010-03-20 23:48:39 +0000 (Sat, 20 Mar 2010) Log Message: ----------- Added "Save Copy" button to Frozen SoundObject's editor to allow saving a copy of the the frozen soundfile (RFE 2970189) Modified Paths: -------------- blue/trunk/ChangeLog blue/trunk/blue-ui-core/src/blue/soundObject/editor/FrozenSoundObjectEditor.java Modified: blue/trunk/ChangeLog =================================================================== --- blue/trunk/ChangeLog 2010-03-20 23:48:28 UTC (rev 4161) +++ blue/trunk/ChangeLog 2010-03-20 23:48:39 UTC (rev 4162) @@ -12,6 +12,17 @@ [CHANGE LOG] +>Notes for 2.0.9< +[released 2010.xx.xx] + +Steven Yi----------------------------------------------------------------------- + +blue + + [new] - Added "Save Copy" button to Frozen SoundObject's editor to allow + saving a copy of the the frozen soundfile (RFE 2970189) + + >Notes for 2.0.8< [released 2010.03.14] Modified: blue/trunk/blue-ui-core/src/blue/soundObject/editor/FrozenSoundObjectEditor.java =================================================================== --- blue/trunk/blue-ui-core/src/blue/soundObject/editor/FrozenSoundObjectEditor.java 2010-03-20 23:48:28 UTC (rev 4161) +++ blue/trunk/blue-ui-core/src/blue/soundObject/editor/FrozenSoundObjectEditor.java 2010-03-20 23:48:39 UTC (rev 4162) @@ -17,10 +17,11 @@ * the Free Software Foundation Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307 USA */ - package blue.soundObject.editor; import java.awt.BorderLayout; +import java.awt.event.ActionEvent; +import java.io.IOException; import javax.swing.JLabel; @@ -28,6 +29,19 @@ import blue.gui.LabelledItemPanel; import blue.soundObject.FrozenSoundObject; import blue.soundObject.SoundObject; +import blue.ui.utilities.FileChooserManager; +import blue.utility.FileUtilities; +import java.awt.FlowLayout; +import java.awt.event.ActionListener; +import java.io.File; +import javax.swing.JButton; +import javax.swing.JFileChooser; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import org.openide.DialogDisplayer; +import org.openide.NotifyDescriptor; +import org.openide.util.Exceptions; +import org.openide.windows.WindowManager; /** * @author steven @@ -35,17 +49,29 @@ */ public class FrozenSoundObjectEditor extends SoundObjectEditor { - FrozenSoundObject fso; + private FrozenSoundObject fso; - JLabel frozenObjectName = new JLabel(); + private JLabel frozenObjectName = new JLabel(); - JLabel frozenObjectType = new JLabel(); + private JLabel frozenObjectType = new JLabel(); - JLabel frozenWaveFileName = new JLabel(); + private JLabel frozenWaveFileName = new JLabel(); - JLabel frozenSoundObjectDuration = new JLabel(); + private JLabel frozenSoundObjectDuration = new JLabel(); public FrozenSoundObjectEditor() { + JButton button = new JButton("Save Copy"); + JPanel panel = new JPanel(); + panel.setLayout(new FlowLayout(FlowLayout.LEFT)); + panel.add(frozenWaveFileName); + panel.add(button); + button.addActionListener(new ActionListener() { + + public void actionPerformed(ActionEvent e) { + saveCopy(); + } + }); + LabelledItemPanel itemPanel = new LabelledItemPanel(); this.setLayout(new BorderLayout()); @@ -54,17 +80,24 @@ itemPanel.addItem(BlueSystem.getString("frozenSoundObject.type") + " ", frozenObjectType); itemPanel.addItem(BlueSystem.getString("frozenSoundObject.waveName") - + " ", frozenWaveFileName); + + " ", panel); itemPanel.addItem(BlueSystem.getString("frozenSoundObject.duration") + " ", frozenSoundObjectDuration); - this.add(itemPanel, BorderLayout.CENTER); + JScrollPane jsp = new JScrollPane(itemPanel); + jsp.setBorder(null); + + this.add(jsp, BorderLayout.CENTER); + + final FileChooserManager fcm = FileChooserManager.getDefault(); + fcm.setMultiSelectionEnabled(this, false); + fcm.setDialogTitle(this, "Save Copy of Frozen Soundfile"); } public void editSoundObject(SoundObject sObj) { if (sObj == null || !sObj.getClass().getName().equals( - "blue.soundObject.FrozenSoundObject")) { + "blue.soundObject.FrozenSoundObject")) { fso = null; return; } @@ -72,14 +105,75 @@ frozenObjectName.setText(fso.getFrozenSoundObject().getName()); - frozenObjectType.setText(fso.getFrozenSoundObject().getClass() - .getName()); + frozenObjectType.setText(fso.getFrozenSoundObject().getClass().getName()); frozenWaveFileName.setText(fso.getFrozenWaveFileName()); - frozenSoundObjectDuration.setText(Float.toString(fso - .getFrozenSoundObject().getSubjectiveDuration())); + frozenSoundObjectDuration.setText(Float.toString(fso. + getFrozenSoundObject().getSubjectiveDuration())); } -} \ No newline at end of file + protected void saveCopy() { + File f = BlueSystem.findFile(fso.getFrozenWaveFileName()); + + if (f == null) { + NotifyDescriptor descriptor = new NotifyDescriptor.Message( + "Could not locate frozen file:\n\n" + fso. + getFrozenWaveFileName(), + NotifyDescriptor.ERROR_MESSAGE); + + DialogDisplayer.getDefault().notify(descriptor); + return; + } + + final FileChooserManager fcm = FileChooserManager.getDefault(); + + fcm.setCurrentDirectory(this, BlueSystem.getCurrentProjectDirectory()); + int retVal = fcm.showSaveDialog(this, WindowManager.getDefault(). + getMainWindow()); + + if (retVal == JFileChooser.APPROVE_OPTION) { + File dest = fcm.getSelectedFile(this); + + if (dest.exists()) { + + if (dest.isDirectory()) { + NotifyDescriptor descriptor = new NotifyDescriptor.Message( + "Destination is a directory.", + NotifyDescriptor.ERROR_MESSAGE); + + DialogDisplayer.getDefault().notify(descriptor); + return; + } + + if (dest.getName().startsWith("freeze")) { + NotifyDescriptor descriptor = new NotifyDescriptor.Message( + "Can not overwrite freeze files.", + NotifyDescriptor.ERROR_MESSAGE); + + DialogDisplayer.getDefault().notify(descriptor); + return; + } + + + NotifyDescriptor descriptor = new NotifyDescriptor.Confirmation("Overwrite file " + dest. + getName() + "?", + NotifyDescriptor.OK_CANCEL_OPTION); + Object conf = DialogDisplayer.getDefault().notify(descriptor); + + if (!NotifyDescriptor.OK_OPTION.equals(conf)) { + return; + } + } + + try { + FileUtilities.copyFile(f, dest); + } catch (IOException ex) { + Exceptions.printStackTrace(ex); + } + } + + + } +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <kun...@us...> - 2010-03-21 03:01:21
|
Revision: 4163 http://bluemusic.svn.sourceforge.net/bluemusic/?rev=4163&view=rev Author: kunstmusik Date: 2010-03-21 03:01:14 +0000 (Sun, 21 Mar 2010) Log Message: ----------- Readded "Script" menu with option to reinitialize Jython interpreter to address issue in Bug 2789770 Modified Paths: -------------- blue/trunk/ChangeLog blue/trunk/blue-ui-core/src/blue/ui/core/Bundle.properties blue/trunk/blue-ui-core/src/blue/ui/core/layer.xml Added Paths: ----------- blue/trunk/blue-ui-core/src/blue/ui/core/script/ blue/trunk/blue-ui-core/src/blue/ui/core/script/Bundle.properties blue/trunk/blue-ui-core/src/blue/ui/core/script/ReinitializeJythonAction.java Modified: blue/trunk/ChangeLog =================================================================== --- blue/trunk/ChangeLog 2010-03-20 23:48:39 UTC (rev 4162) +++ blue/trunk/ChangeLog 2010-03-21 03:01:14 UTC (rev 4163) @@ -22,7 +22,10 @@ [new] - Added "Save Copy" button to Frozen SoundObject's editor to allow saving a copy of the the frozen soundfile (RFE 2970189) + [new] - Readded "Script" menu with option to reinitialize Jython interpreter + to address issue in Bug 2789770 + >Notes for 2.0.8< [released 2010.03.14] Modified: blue/trunk/blue-ui-core/src/blue/ui/core/Bundle.properties =================================================================== --- blue/trunk/blue-ui-core/src/blue/ui/core/Bundle.properties 2010-03-20 23:48:39 UTC (rev 4162) +++ blue/trunk/blue-ui-core/src/blue/ui/core/Bundle.properties 2010-03-21 03:01:14 UTC (rev 4163) @@ -32,3 +32,4 @@ CTL_MainToolbarAction=Main Tool Bar OpenIDE-Module-Name=blue-ui-core Menu/Project=&Project +Menu/Script=&Script Modified: blue/trunk/blue-ui-core/src/blue/ui/core/layer.xml =================================================================== --- blue/trunk/blue-ui-core/src/blue/ui/core/layer.xml 2010-03-20 23:48:39 UTC (rev 4162) +++ blue/trunk/blue-ui-core/src/blue/ui/core/layer.xml 2010-03-21 03:01:14 UTC (rev 4163) @@ -1,6 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE filesystem PUBLIC "-//NetBeans//DTD Filesystem 1.2//EN" "http://www.netbeans.org/dtds/filesystem-1_2.dtd"> <filesystem> + <attr name="Menu\Script\position" intvalue="1100"/> <attr name="Windows2\Components\output.settings\position" intvalue="600"/> <attr name="Windows2\Components\properties.settings\position" intvalue="700"/> <folder name="Actions"> @@ -81,6 +82,14 @@ <attr name="delegate" newvalue="blue.ui.core.project.UseCsoundApiAction"/> </file> </folder> + <folder name="Script"> + <file name="blue-ui-core-script-ReinitializeJythonAction.instance"> + <attr name="delegate" newvalue="blue.ui.core.script.ReinitializeJythonAction"/> + <attr name="displayName" bundlevalue="blue.ui.core.script.Bundle#CTL_ReinitializeJythonAction"/> + <attr name="instanceCreate" methodvalue="org.openide.awt.Actions.alwaysEnabled"/> + <attr name="noIconInMenu" boolvalue="false"/> + </file> + </folder> <folder name="Tools"> <file name="blue-ui-core-mixer-EffectsLibraryAction.instance"> <attr name="SystemFileSystem.localizingBundle" stringvalue="blue.ui.core.Bundle"/> @@ -279,6 +288,7 @@ <attr name="position" intvalue="400"/> </file> </folder> + <folder name="Tools"> <attr name="blue-projects-actions-OpenProjectAction.shadow/blue-ui-core-tools-OpenSoundFontViewerAction.shadow" boolvalue="true"/> <attr name="blue-ui-core-tools-OpenSoundFontViewerAction.shadow/blue-projects-actions-CloseProjectAction-separatorBefore.instance" boolvalue="true"/> @@ -306,6 +316,16 @@ <attr name="position" intvalue="-50"/> </file> </folder> + + <folder name="Script"> + <attr name="SystemFileSystem.localizingBundle" stringvalue="blue.ui.core.Bundle"/> + + <file name="blue-ui-core-script-ReinitializeJythonAction.shadow"> + <attr name="originalFile" stringvalue="Actions/Script/blue-ui-core-script-ReinitializeJythonAction.instance"/> + <attr name="position" intvalue="110"/> + </file> + </folder> + <folder name="Window"> <file name="Output_hidden"/> <file name="SoundObjectEditorAction.shadow"> Added: blue/trunk/blue-ui-core/src/blue/ui/core/script/Bundle.properties =================================================================== --- blue/trunk/blue-ui-core/src/blue/ui/core/script/Bundle.properties (rev 0) +++ blue/trunk/blue-ui-core/src/blue/ui/core/script/Bundle.properties 2010-03-21 03:01:14 UTC (rev 4163) @@ -0,0 +1 @@ +CTL_ReinitializeJythonAction=Reinitialize &Jython Interpreter Added: blue/trunk/blue-ui-core/src/blue/ui/core/script/ReinitializeJythonAction.java =================================================================== --- blue/trunk/blue-ui-core/src/blue/ui/core/script/ReinitializeJythonAction.java (rev 0) +++ blue/trunk/blue-ui-core/src/blue/ui/core/script/ReinitializeJythonAction.java 2010-03-21 03:01:14 UTC (rev 4163) @@ -0,0 +1,31 @@ +/* + * blue - object composition environment for csound Copyright (c) 2000-2009 + * Steven Yi (ste...@gm...) + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2 of the License or (at your option) any + * later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING.LIB. If not, write to the Free + * Software Foundation Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 + * USA + */ +package blue.ui.core.script; + +import blue.scripting.PythonProxy; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +public final class ReinitializeJythonAction implements ActionListener { + + public void actionPerformed(ActionEvent e) { + PythonProxy.reinitialize(); + } +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <kun...@us...> - 2010-03-21 15:43:44
|
Revision: 4166 http://bluemusic.svn.sourceforge.net/bluemusic/?rev=4166&view=rev Author: kunstmusik Date: 2010-03-21 15:43:38 +0000 (Sun, 21 Mar 2010) Log Message: ----------- Bug 2017191 - Fixed issue with BSB Dropdown Lists when item list changes (items added/removed) and preset is selected. Preset value is now stored by uniqueId of dropdown item to prevent issues with storing by item index. Older presets that stored by index still work. New presets saved will save by uniqueId. One can update an older preset to use the new uniqueId system by selecting the preset and immediately choosing update for the preset. Modified Paths: -------------- blue/trunk/ChangeLog blue/trunk/blue-core/src/blue/orchestra/blueSynthBuilder/BSBDropdown.java blue/trunk/blue-core/src/blue/orchestra/blueSynthBuilder/BSBDropdownItem.java blue/trunk/blue-core/src/blue/orchestra/blueSynthBuilder/BSBDropdownItemList.java blue/trunk/blue-ui-core/src/blue/orchestra/editor/blueSynthBuilder/BSBDropdownView.java blue/trunk/blue-ui-core/src/blue/orchestra/editor/blueSynthBuilder/DropdownItemEditorDialog.java Modified: blue/trunk/ChangeLog =================================================================== --- blue/trunk/ChangeLog 2010-03-21 15:42:53 UTC (rev 4165) +++ blue/trunk/ChangeLog 2010-03-21 15:43:38 UTC (rev 4166) @@ -25,7 +25,15 @@ [new] - Readded "Script" menu with option to reinitialize Jython interpreter to address issue in Bug 2789770 + [fix] - Fixed issue with BSB Dropdown Lists when item list changes (items + added/removed) and preset is selected. Preset value is now stored + by uniqueId of dropdown item to prevent issues with storing by + item index. Older presets that stored by index still work. New + presets saved will save by uniqueId. One can update an older preset + to use the new uniqueId system by selecting the preset and + immediately choosing update for the preset. (Bug 2017191) + >Notes for 2.0.8< [released 2010.03.14] Modified: blue/trunk/blue-core/src/blue/orchestra/blueSynthBuilder/BSBDropdown.java =================================================================== --- blue/trunk/blue-core/src/blue/orchestra/blueSynthBuilder/BSBDropdown.java 2010-03-21 15:42:53 UTC (rev 4165) +++ blue/trunk/blue-core/src/blue/orchestra/blueSynthBuilder/BSBDropdown.java 2010-03-21 15:43:38 UTC (rev 4166) @@ -17,11 +17,11 @@ * the Free Software Foundation Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307 USA */ - package blue.orchestra.blueSynthBuilder; //import blue.orchestra.editor.blueSynthBuilder.BSBDropdownView; //import blue.orchestra.editor.blueSynthBuilder.BSBObjectView; +import blue.orchestra.blueSynthBuilder.BSBDropdownItem; import blue.utility.XMLUtilities; import electric.xml.Element; import electric.xml.Elements; @@ -51,11 +51,9 @@ String nodeName = node.getName(); if (nodeName.equals("bsbDropdownItemList")) { - dropDown - .setDropdownItems(BSBDropdownItemList.loadFromXML(node)); + dropDown.setDropdownItems(BSBDropdownItemList.loadFromXML(node)); } else if (nodeName.equals("selectedIndex")) { - dropDown.setSelectedIndex(Integer - .parseInt(node.getTextString())); + dropDown.setSelectedIndex(Integer.parseInt(node.getTextString())); } else if (nodeName.equals("randomizable")) { dropDown.randomizable = XMLUtilities.readBoolean(node); } @@ -91,8 +89,7 @@ * @see blue.orchestra.blueSynthBuilder.BSBObject#setupForCompilation(blue.orchestra.blueSynthBuilder.BSBCompilationUnit) */ public void setupForCompilation(BSBCompilationUnit compilationUnit) { - BSBDropdownItem item = (BSBDropdownItem) dropdownItems - .get(selectedIndex); + BSBDropdownItem item = (BSBDropdownItem) dropdownItems.get(selectedIndex); String replaceVal = item.getValue(); compilationUnit.addReplacementValue(objectName, replaceVal); @@ -128,7 +125,11 @@ * The selectedIndex to set. */ public void setSelectedIndex(int selectedIndex) { - this.selectedIndex = selectedIndex; + int tempIndex = selectedIndex; + if (tempIndex >= dropdownItems.size()) { + tempIndex = dropdownItems.size() - 1; + } + this.selectedIndex = tempIndex; } /* @@ -137,7 +138,8 @@ * @see blue.orchestra.blueSynthBuilder.BSBObject#getPresetValue() */ public String getPresetValue() { - return Integer.toString(getSelectedIndex()); + BSBDropdownItem item = (BSBDropdownItem) dropdownItems.get(selectedIndex); + return "id:" + item.getUniqueId(); } /* @@ -146,11 +148,32 @@ * @see blue.orchestra.blueSynthBuilder.BSBObject#setPresetValue(java.lang.String) */ public void setPresetValue(String val) { - setSelectedIndex(Integer.parseInt(val)); + if (val.startsWith("id:")) { + String uniqueId = val.substring(3); + int index = getIndexOfItemByUniqueId(uniqueId); + + if (index >= 0) { + setSelectedIndex(index); + } + } else { + setSelectedIndex(Integer.parseInt(val)); + } } + protected int getIndexOfItemByUniqueId(String uniqueId) { + if (uniqueId == null) { + return -1; + } + for (int i = 0; i < dropdownItems.size(); i++) { + BSBDropdownItem item = dropdownItems.get(i); + if (uniqueId.equals(item.getUniqueId())) { + return i; + } + } + return -1; + } + /* RANDOMIZABLE METHODS */ - public boolean isRandomizable() { return randomizable; } @@ -176,4 +199,4 @@ this.randomizable = randomizable; fireBSBObjectChanged(); } -} \ No newline at end of file +} Modified: blue/trunk/blue-core/src/blue/orchestra/blueSynthBuilder/BSBDropdownItem.java =================================================================== --- blue/trunk/blue-core/src/blue/orchestra/blueSynthBuilder/BSBDropdownItem.java 2010-03-21 15:42:53 UTC (rev 4165) +++ blue/trunk/blue-core/src/blue/orchestra/blueSynthBuilder/BSBDropdownItem.java 2010-03-21 15:43:38 UTC (rev 4166) @@ -24,6 +24,7 @@ import electric.xml.Element; import electric.xml.Elements; +import java.rmi.dgc.VMID; /** * @author Steven Yi @@ -34,9 +35,20 @@ String value = "value"; + private String uniqueId; + + public BSBDropdownItem() { + this.uniqueId = Integer.toString(new VMID().hashCode()); + } + public static BSBDropdownItem loadFromXML(Element data) { BSBDropdownItem item = new BSBDropdownItem(); + String uniqueId = data.getAttributeValue("uniqueId"); + if (uniqueId != null && uniqueId.length() > 0) { + item.uniqueId = uniqueId; + } + Elements nodes = data.getElements(); while (nodes.hasMoreElements()) { @@ -56,12 +68,18 @@ public Element saveAsXML() { Element retVal = new Element("bsbDropdownItem"); + retVal.setAttribute("uniqueId", uniqueId); + retVal.addElement("name").setText(this.getName()); retVal.addElement("value").setText(this.getValue()); return retVal; } + public String getUniqueId() { + return uniqueId; + } + /** * @return Returns the name. */ Modified: blue/trunk/blue-core/src/blue/orchestra/blueSynthBuilder/BSBDropdownItemList.java =================================================================== --- blue/trunk/blue-core/src/blue/orchestra/blueSynthBuilder/BSBDropdownItemList.java 2010-03-21 15:42:53 UTC (rev 4165) +++ blue/trunk/blue-core/src/blue/orchestra/blueSynthBuilder/BSBDropdownItemList.java 2010-03-21 15:43:38 UTC (rev 4166) @@ -28,7 +28,7 @@ /** * @author steven */ -public class BSBDropdownItemList extends ArrayList { +public class BSBDropdownItemList extends ArrayList<BSBDropdownItem> { public static BSBDropdownItemList loadFromXML(Element data) { BSBDropdownItemList list = new BSBDropdownItemList(); Modified: blue/trunk/blue-ui-core/src/blue/orchestra/editor/blueSynthBuilder/BSBDropdownView.java =================================================================== --- blue/trunk/blue-ui-core/src/blue/orchestra/editor/blueSynthBuilder/BSBDropdownView.java 2010-03-21 15:42:53 UTC (rev 4165) +++ blue/trunk/blue-ui-core/src/blue/orchestra/editor/blueSynthBuilder/BSBDropdownView.java 2010-03-21 15:43:38 UTC (rev 4166) @@ -187,7 +187,7 @@ int size = dropdown.getDropdownItems().size(); int selectedIndex = dropdown.getSelectedIndex(); - if (selectedIndex > size) { + if (selectedIndex >= size) { dropdown.setSelectedIndex(size - 1); } Modified: blue/trunk/blue-ui-core/src/blue/orchestra/editor/blueSynthBuilder/DropdownItemEditorDialog.java =================================================================== --- blue/trunk/blue-ui-core/src/blue/orchestra/editor/blueSynthBuilder/DropdownItemEditorDialog.java 2010-03-21 15:42:53 UTC (rev 4165) +++ blue/trunk/blue-ui-core/src/blue/orchestra/editor/blueSynthBuilder/DropdownItemEditorDialog.java 2010-03-21 15:43:38 UTC (rev 4166) @@ -220,7 +220,7 @@ public void pushUpItem(int index) { if (index > 0) { - Object a = items.remove(index - 1); + BSBDropdownItem a = items.remove(index - 1); items.add(index, a); this.fireTableRowsUpdated(index - 1, index); } @@ -228,7 +228,7 @@ public void pushDownItem(int index) { if (index < items.size() - 1) { - Object a = items.remove(index + 1); + BSBDropdownItem a = items.remove(index + 1); items.add(index, a); this.fireTableRowsUpdated(index, index + 1); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <kun...@us...> - 2010-03-21 16:21:51
|
Revision: 4167 http://bluemusic.svn.sourceforge.net/bluemusic/?rev=4167&view=rev Author: kunstmusik Date: 2010-03-21 16:21:44 +0000 (Sun, 21 Mar 2010) Log Message: ----------- RFE 2826952 - Made Tracker work with fractional instrument numbers Modified Paths: -------------- blue/trunk/ChangeLog blue/trunk/blue-core/src/blue/soundObject/tracker/Track.java Modified: blue/trunk/ChangeLog =================================================================== --- blue/trunk/ChangeLog 2010-03-21 15:43:38 UTC (rev 4166) +++ blue/trunk/ChangeLog 2010-03-21 16:21:44 UTC (rev 4167) @@ -25,6 +25,8 @@ [new] - Readded "Script" menu with option to reinitialize Jython interpreter to address issue in Bug 2789770 + [new] - Made TrackerObject work with fractional instruments (RFE 2826952) + [fix] - Fixed issue with BSB Dropdown Lists when item list changes (items added/removed) and preset is selected. Preset value is now stored by uniqueId of dropdown item to prevent issues with storing by Modified: blue/trunk/blue-core/src/blue/soundObject/tracker/Track.java =================================================================== --- blue/trunk/blue-core/src/blue/soundObject/tracker/Track.java 2010-03-21 15:43:38 UTC (rev 4166) +++ blue/trunk/blue-core/src/blue/soundObject/tracker/Track.java 2010-03-21 16:21:44 UTC (rev 4167) @@ -238,7 +238,7 @@ String instrId = getInstrumentId(); try { - Integer.parseInt(instrId); + Float.parseFloat(instrId); } catch (NumberFormatException nfe) { instrId = "\"" + instrId + "\""; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <kun...@us...> - 2010-03-21 20:13:25
|
Revision: 4170 http://bluemusic.svn.sourceforge.net/bluemusic/?rev=4170&view=rev Author: kunstmusik Date: 2010-03-21 20:13:19 +0000 (Sun, 21 Mar 2010) Log Message: ----------- RFE 2936569 - Added links to blue manual and csound manual from help menu Modified Paths: -------------- blue/trunk/ChangeLog blue/trunk/blue-application/nbproject/project.xml blue/trunk/blue-application/src/blue/application/Bundle.properties blue/trunk/blue-application/src/blue/application/layer.xml Added Paths: ----------- blue/trunk/blue-application/src/blue/application/BlueManualAction.java blue/trunk/blue-application/src/blue/application/CsoundManualAction.java Modified: blue/trunk/ChangeLog =================================================================== --- blue/trunk/ChangeLog 2010-03-21 20:11:28 UTC (rev 4169) +++ blue/trunk/ChangeLog 2010-03-21 20:13:19 UTC (rev 4170) @@ -27,6 +27,9 @@ [new] - Made TrackerObject work with fractional instruments (RFE 2826952) + [new] - Added links to blue manual and csound manual from help menu + (RFE 2936569) + [fix] - Fixed issue with BSB Dropdown Lists when item list changes (items added/removed) and preset is selected. Preset value is now stored by uniqueId of dropdown item to prevent issues with storing by Modified: blue/trunk/blue-application/nbproject/project.xml =================================================================== --- blue/trunk/blue-application/nbproject/project.xml 2010-03-21 20:11:28 UTC (rev 4169) +++ blue/trunk/blue-application/nbproject/project.xml 2010-03-21 20:13:19 UTC (rev 4170) @@ -7,6 +7,14 @@ <suite-component/> <module-dependencies> <dependency> + <code-name-base>blue.settings</code-name-base> + <build-prerequisite/> + <compile-dependency/> + <run-dependency> + <specification-version>1.0</specification-version> + </run-dependency> + </dependency> + <dependency> <code-name-base>com.kunstmusik.blue</code-name-base> <build-prerequisite/> <compile-dependency/> Added: blue/trunk/blue-application/src/blue/application/BlueManualAction.java =================================================================== --- blue/trunk/blue-application/src/blue/application/BlueManualAction.java (rev 0) +++ blue/trunk/blue-application/src/blue/application/BlueManualAction.java 2010-03-21 20:13:19 UTC (rev 4170) @@ -0,0 +1,54 @@ +/* + * blue - object composition environment for csound Copyright (c) 2000-2009 + * Steven Yi (ste...@gm...) + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2 of the License or (at your option) any + * later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING.LIB. If not, write to the Free + * Software Foundation Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 + * USA + */ +package blue.application; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.io.File; +import java.net.MalformedURLException; +import java.net.URL; +import org.openide.awt.HtmlBrowser.URLDisplayer; +import org.openide.util.Exceptions; + +public final class BlueManualAction implements ActionListener { + + public void actionPerformed(ActionEvent e) { + try { + URLDisplayer.getDefault().showURL(new URL(getPath())); + } catch (MalformedURLException ex) { + Exceptions.printStackTrace(ex); + } + } + + protected String getPath() { + String val = System.getProperty("netbeans.dirs"); + String[] vals = val.split(File.pathSeparator); + + for (String path : vals) { + File f = new File(path + File.separator + "pythonLib"); + if (f.isDirectory()) { + path = path.substring(0, path.lastIndexOf(File.separator)); + return "file://" + path + File.separator + "/manual/html/index.html"; + } + } + + return null; + } +} Modified: blue/trunk/blue-application/src/blue/application/Bundle.properties =================================================================== --- blue/trunk/blue-application/src/blue/application/Bundle.properties 2010-03-21 20:11:28 UTC (rev 4169) +++ blue/trunk/blue-application/src/blue/application/Bundle.properties 2010-03-21 20:13:19 UTC (rev 4170) @@ -2,6 +2,8 @@ Actions/Edit/blue-application-MakeDonationAction.instance=Make a &Donation Actions/Edit/blue-application-ReportBugAction.instance=Report a &Bug Actions/Edit/blue-application-RequestFeatureAction.instance=Request a &Feature +CTL_BlueManualAction=&Blue Manual +CTL_CsoundManualAction=&Csound Manual CTL_SaveLibrariesAction=Save &Libraries CTL_MakeDonationAction=Make a &Donation CTL_ReportBugAction=Report a &Bug Added: blue/trunk/blue-application/src/blue/application/CsoundManualAction.java =================================================================== --- blue/trunk/blue-application/src/blue/application/CsoundManualAction.java (rev 0) +++ blue/trunk/blue-application/src/blue/application/CsoundManualAction.java 2010-03-21 20:13:19 UTC (rev 4170) @@ -0,0 +1,42 @@ +/* + * blue - object composition environment for csound Copyright (c) 2000-2009 + * Steven Yi (ste...@gm...) + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2 of the License or (at your option) any + * later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING.LIB. If not, write to the Free + * Software Foundation Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 + * USA + */ +package blue.application; + +import blue.settings.GeneralSettings; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.net.MalformedURLException; +import java.net.URL; +import org.openide.awt.HtmlBrowser.URLDisplayer; +import org.openide.util.Exceptions; + +public final class CsoundManualAction implements ActionListener { + + public void actionPerformed(ActionEvent e) { + String url = GeneralSettings.getInstance().getCsoundDocRoot() + + "index.html"; + + try { + URLDisplayer.getDefault().showURL(new URL(url)); + } catch (MalformedURLException ex) { + Exceptions.printStackTrace(ex); + } + } +} Modified: blue/trunk/blue-application/src/blue/application/layer.xml =================================================================== --- blue/trunk/blue-application/src/blue/application/layer.xml 2010-03-21 20:11:28 UTC (rev 4169) +++ blue/trunk/blue-application/src/blue/application/layer.xml 2010-03-21 20:13:19 UTC (rev 4170) @@ -4,6 +4,18 @@ <folder name="Actions"> <file name="GoTo_hidden"/> <folder name="Application"> + <file name="blue-application-BlueManualAction.instance"> + <attr name="delegate" newvalue="blue.application.BlueManualAction"/> + <attr name="displayName" bundlevalue="blue.application.Bundle#CTL_BlueManualAction"/> + <attr name="instanceCreate" methodvalue="org.openide.awt.Actions.alwaysEnabled"/> + <attr name="noIconInMenu" boolvalue="false"/> + </file> + <file name="blue-application-CsoundManualAction.instance"> + <attr name="delegate" newvalue="blue.application.CsoundManualAction"/> + <attr name="displayName" bundlevalue="blue.application.Bundle#CTL_CsoundManualAction"/> + <attr name="instanceCreate" methodvalue="org.openide.awt.Actions.alwaysEnabled"/> + <attr name="noIconInMenu" boolvalue="false"/> + </file> <file name="blue-application-SaveLibrariesAction.instance"> <attr name="SystemFileSystem.localizingBundle" stringvalue="blue.application.Bundle"/> <attr name="delegate" newvalue="blue.application.SaveLibrariesAction"/> @@ -67,6 +79,10 @@ </folder> <file name="GoTo_hidden"/> <folder name="Help"> + <file name="blue-application-CsoundManualAction.shadow"> + <attr name="originalFile" stringvalue="Actions/Application/blue-application-CsoundManualAction.instance"/> + <attr name="position" intvalue="1077"/> + </file> <file name="blue-application-MakeDonationAction-separatorBefore.instance"> <attr name="instanceClass" stringvalue="javax.swing.JSeparator"/> <attr name="position" intvalue="462"/> @@ -83,6 +99,14 @@ <attr name="originalFile" stringvalue="Actions/Help/blue-application-RequestFeatureAction.instance"/> <attr name="position" intvalue="400"/> </file> + <file name="blue-application-BlueManualAction.shadow"> + <attr name="originalFile" stringvalue="Actions/Application/blue-application-BlueManualAction.instance"/> + <attr name="position" intvalue="1075"/> + </file> + <file name="blue-application-BlueManualAction-separatorAfter.instance"> + <attr name="instanceClass" stringvalue="javax.swing.JSeparator"/> + <attr name="position" intvalue="1080"/> + </file> </folder> <folder name="View"> <file name="Separator1.instance_hidden"/> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <kun...@us...> - 2010-03-21 20:15:03
|
Revision: 4171 http://bluemusic.svn.sourceforge.net/bluemusic/?rev=4171&view=rev Author: kunstmusik Date: 2010-03-21 20:14:57 +0000 (Sun, 21 Mar 2010) Log Message: ----------- updated for new release Modified Paths: -------------- blue/trunk/ChangeLog blue/trunk/blue-core/src/blue/blueConstants.properties Modified: blue/trunk/ChangeLog =================================================================== --- blue/trunk/ChangeLog 2010-03-21 20:13:19 UTC (rev 4170) +++ blue/trunk/ChangeLog 2010-03-21 20:14:57 UTC (rev 4171) @@ -13,7 +13,7 @@ [CHANGE LOG] >Notes for 2.0.9< -[released 2010.xx.xx] +[released 2010.03.21] Steven Yi----------------------------------------------------------------------- Modified: blue/trunk/blue-core/src/blue/blueConstants.properties =================================================================== --- blue/trunk/blue-core/src/blue/blueConstants.properties 2010-03-21 20:13:19 UTC (rev 4170) +++ blue/trunk/blue-core/src/blue/blueConstants.properties 2010-03-21 20:14:57 UTC (rev 4171) @@ -1,2 +1,2 @@ -blueReleaseDate=2010.03.14 -blueVersion=2.0.8 +blueReleaseDate=2010.03.21 +blueVersion=2.0.9 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <kun...@us...> - 2010-03-21 21:29:51
|
Revision: 4175 http://bluemusic.svn.sourceforge.net/bluemusic/?rev=4175&view=rev Author: kunstmusik Date: 2010-03-21 21:29:44 +0000 (Sun, 21 Mar 2010) Log Message: ----------- fixed python noteprocessor's code editor to use frame Modified Paths: -------------- blue/trunk/ChangeLog blue/trunk/blue-ui-core/src/blue/ui/core/score/noteProcessorChain/CodeEditor.java Modified: blue/trunk/ChangeLog =================================================================== --- blue/trunk/ChangeLog 2010-03-21 21:28:00 UTC (rev 4174) +++ blue/trunk/ChangeLog 2010-03-21 21:29:44 UTC (rev 4175) @@ -38,7 +38,9 @@ to use the new uniqueId system by selecting the preset and immediately choosing update for the preset. (Bug 2017191) + [fix] - Python NoteProcessor caused exception when showing it's code editor + >Notes for 2.0.8< [released 2010.03.14] Modified: blue/trunk/blue-ui-core/src/blue/ui/core/score/noteProcessorChain/CodeEditor.java =================================================================== --- blue/trunk/blue-ui-core/src/blue/ui/core/score/noteProcessorChain/CodeEditor.java 2010-03-21 21:28:00 UTC (rev 4174) +++ blue/trunk/blue-ui-core/src/blue/ui/core/score/noteProcessorChain/CodeEditor.java 2010-03-21 21:29:44 UTC (rev 4175) @@ -21,7 +21,6 @@ import java.awt.BorderLayout; import java.awt.Container; -import java.awt.Dialog; import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; @@ -31,13 +30,14 @@ import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JLabel; -import javax.swing.SwingUtilities; import blue.gui.BlueEditorPane; import blue.noteProcessor.Code; import blue.utility.GUI; import com.l2fprod.common.swing.BaseDialog; +import java.awt.Frame; +import org.openide.windows.WindowManager; /** * @author steven @@ -88,8 +88,7 @@ protected void editCode() { if (codeDialog == null) { - codeDialog = new CodeEditDialog((Dialog) SwingUtilities - .getRoot(this)); + codeDialog = new CodeEditDialog(WindowManager.getDefault().getMainWindow()); codeDialog.setSize(400, 400); GUI.centerOnScreen(codeDialog); } @@ -127,7 +126,7 @@ BlueEditorPane editor = new BlueEditorPane(); - public CodeEditDialog(Dialog parent) { + public CodeEditDialog(Frame parent) { super(parent, "Edit Code", true); this.getBanner().setVisible(false); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <kun...@us...> - 2010-03-23 04:36:42
|
Revision: 4183 http://bluemusic.svn.sourceforge.net/bluemusic/?rev=4183&view=rev Author: kunstmusik Date: 2010-03-23 04:36:35 +0000 (Tue, 23 Mar 2010) Log Message: ----------- implemented blue live tool bar functionality Modified Paths: -------------- blue/trunk/ChangeLog blue/trunk/blue-ui-core/src/blue/ui/core/blueLive/BlueLiveToolBar.java blue/trunk/blue-ui-core/src/blue/ui/core/blueLive/BlueLiveTopComponent.form blue/trunk/blue-ui-core/src/blue/ui/core/blueLive/BlueLiveTopComponent.java blue/trunk/blue-ui-core/src/blue/ui/core/blueLive/Bundle.properties Modified: blue/trunk/ChangeLog =================================================================== --- blue/trunk/ChangeLog 2010-03-23 04:36:08 UTC (rev 4182) +++ blue/trunk/ChangeLog 2010-03-23 04:36:35 UTC (rev 4183) @@ -12,6 +12,26 @@ [CHANGE LOG] +>Notes for 2.1.0< +[released 2010.xx.xx] + +Steven Yi----------------------------------------------------------------------- + +blue + + [updated] - moved blueLive buttons for starting/stopping and all notes off + to and application toolbar + + [updated] - moved blueLive MIDI input to Input Settings Top Component + + [fix] - blueLive: when using API, no longer tries to update render time + + +================================================================================ += 2.0.x +================================================================================ + + >Notes for 2.0.9< [released 2010.03.21] 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-23 04:36:08 UTC (rev 4182) +++ blue/trunk/blue-ui-core/src/blue/ui/core/blueLive/BlueLiveToolBar.java 2010-03-23 04:36:35 UTC (rev 4183) @@ -17,12 +17,27 @@ * Software Foundation Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 * USA */ - package blue.ui.core.blueLive; +import blue.BlueData; +import blue.event.PlayModeListener; +import blue.gui.ExceptionDialog; +import blue.projects.BlueProject; +import blue.projects.BlueProjectManager; +import blue.settings.GeneralSettings; +import blue.soundObject.SoundObjectException; +import blue.ui.core.render.APIRunner; +import blue.ui.core.render.CSDRunner; +import blue.ui.core.render.CommandlineRunner; +import blue.utility.APIUtilities; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; import javax.swing.JButton; import javax.swing.JToggleButton; import javax.swing.JToolBar; +import javax.swing.SwingUtilities; /** * @@ -30,6 +45,20 @@ */ public class BlueLiveToolBar extends JToolBar { + BlueData data = null; + + APIRunner apiRunner; + + CommandlineRunner commandlineRunner = new CommandlineRunner(this); + + CSDRunner csdRunner = null; + + JToggleButton runButton = new JToggleButton("blueLive"); + + JButton refreshButton = new JButton("Recompile"); + + JButton allNotesOffButton = new JButton("All Notes Off"); + private static BlueLiveToolBar instance = null; public static BlueLiveToolBar getInstance() { @@ -42,13 +71,118 @@ private BlueLiveToolBar() { setFloatable(false); - JButton runButton = new JButton("blueLive"); - JButton refreshButton = new JButton("Recompile"); - JButton allNotesOffButton = new JButton("All Notes Off"); + PlayModeListener playModeListener = new PlayModeListener() { + public void playModeChanged(int playMode) { + if (playMode == PlayModeListener.PLAY_MODE_STOP) { + if (runButton.isSelected()) { + runButton.setSelected(false); + } + } + + } + }; + + try { + apiRunner = new APIRunner(); + apiRunner.addPlayModeListener(playModeListener); + } catch (Throwable t) { + apiRunner = null; + } + + runButton.addActionListener(new ActionListener() { + + public void actionPerformed(ActionEvent e) { + runButtonActionPerformed(); + } + + }); + + allNotesOffButton.addActionListener(new ActionListener() { + + public void actionPerformed(ActionEvent e) { + allNotesOffButtonActionPerformed(e); + } + }); + this.add(runButton); this.add(refreshButton); this.add(allNotesOffButton); + + BlueProjectManager.getInstance().addPropertyChangeListener(new PropertyChangeListener() { + + public void propertyChange(PropertyChangeEvent evt) { + if (BlueProjectManager.CURRENT_PROJECT.equals(evt.getPropertyName())) { + reinitialize(); + } + } + }); + + reinitialize(); } + private void reinitialize() { + this.data = null; + + BlueProject project = BlueProjectManager.getInstance().getCurrentProject(); + BlueData currentData = null; + + if (project != null) { + this.data = project.getData(); + } + } + + + protected void runButtonActionPerformed() { + if (data == null) { + return; + } + + if (csdRunner != null && csdRunner.isRunning()) { + csdRunner.stop(); + + csdRunner = null; + + if (runButton.isSelected()) { + runButton.setSelected(false); + } + + return; + } + + if (!runButton.isSelected()) { + runButton.setSelected(true); + } + + if (apiRunner != null + && APIUtilities.isCsoundAPIAvailable() + && GeneralSettings.getInstance().isUsingCsoundAPI()) { + csdRunner = apiRunner; + } else { + csdRunner = commandlineRunner; + } + + csdRunner.setData(data); + + try { + csdRunner.renderForBlueLive(); + } catch (SoundObjectException soe) { + ExceptionDialog.showExceptionDialog(SwingUtilities.getRoot(this), + soe); + } + } + + private void allNotesOffButtonActionPerformed(java.awt.event.ActionEvent evt) { + sendEvents("i \"blueAllNotesOff\" 0 1"); + } + + public void sendEvents(String scoText) { + if (csdRunner != null && csdRunner.isRunning()) { + csdRunner.passToStdin(scoText); + } + } + + public boolean isRunning() { + return csdRunner != null && csdRunner.isRunning(); + } } Modified: blue/trunk/blue-ui-core/src/blue/ui/core/blueLive/BlueLiveTopComponent.form =================================================================== --- blue/trunk/blue-ui-core/src/blue/ui/core/blueLive/BlueLiveTopComponent.form 2010-03-23 04:36:08 UTC (rev 4182) +++ blue/trunk/blue-ui-core/src/blue/ui/core/blueLive/BlueLiveTopComponent.form 2010-03-23 04:36:35 UTC (rev 4183) @@ -27,23 +27,19 @@ </Group> <EmptySpace max="-2" attributes="0"/> <Group type="103" groupAlignment="0" attributes="0"> - <Component id="midiInputComboBox" alignment="0" pref="251" max="32767" attributes="0"/> - <Group type="102" alignment="0" attributes="0"> - <Component id="commandLineText" pref="138" max="32767" attributes="0"/> + <Group type="102" attributes="0"> + <Component id="midiInputComboBox" pref="266" max="32767" attributes="0"/> <EmptySpace max="-2" attributes="0"/> + <Component id="rescanButton1" pref="84" max="32767" attributes="1"/> + <EmptySpace max="-2" attributes="0"/> + <Component id="midiOpenButton" min="-2" max="-2" attributes="1"/> + </Group> + <Group type="102" attributes="0"> + <Component id="commandLineText" pref="314" max="32767" attributes="0"/> + <EmptySpace max="-2" attributes="0"/> <Component id="completeOverride" min="-2" max="-2" attributes="0"/> </Group> </Group> - <EmptySpace max="-2" attributes="0"/> - <Group type="103" groupAlignment="0" attributes="0"> - <Component id="runButton" linkSize="1" alignment="0" pref="69" max="32767" attributes="1"/> - <Component id="rescanButton1" linkSize="1" alignment="0" max="32767" attributes="1"/> - </Group> - <EmptySpace max="-2" attributes="0"/> - <Group type="103" groupAlignment="0" max="-2" attributes="0"> - <Component id="midiOpenButton" alignment="0" max="32767" attributes="1"/> - <Component id="allNotesOffButton" alignment="0" max="32767" attributes="1"/> - </Group> </Group> </Group> <EmptySpace min="-2" max="-2" attributes="0"/> @@ -58,9 +54,8 @@ <Group type="102" alignment="0" attributes="0"> <Group type="103" groupAlignment="3" attributes="0"> <Component id="enableAdvancedFlags" alignment="3" min="-2" max="-2" attributes="0"/> - <Component id="completeOverride" alignment="3" min="-2" max="-2" attributes="0"/> <Component id="commandLineText" alignment="3" min="-2" max="-2" attributes="0"/> - <Component id="runButton" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="completeOverride" alignment="3" min="-2" max="-2" attributes="0"/> </Group> <EmptySpace max="-2" attributes="0"/> <Group type="103" groupAlignment="3" attributes="0"> @@ -69,8 +64,7 @@ </Group> </Group> <Group type="102" alignment="0" attributes="0"> - <Component id="allNotesOffButton" min="-2" max="-2" attributes="0"/> - <EmptySpace max="-2" attributes="0"/> + <EmptySpace min="-2" pref="29" max="-2" attributes="0"/> <Group type="103" groupAlignment="3" attributes="0"> <Component id="midiOpenButton" alignment="3" min="-2" max="-2" attributes="0"/> <Component id="rescanButton1" alignment="3" min="-2" max="-2" attributes="0"/> @@ -105,16 +99,6 @@ </Component> <Component class="javax.swing.JTextField" name="commandLineText"> </Component> - <Component class="javax.swing.JToggleButton" name="runButton"> - <Properties> - <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> - <ResourceString bundle="blue/ui/core/blueLive/Bundle.properties" key="BlueLiveTopComponent.runButton.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="runButtonActionPerformed"/> - </Events> - </Component> <Component class="javax.swing.JCheckBox" name="enableAdvancedFlags"> <Properties> <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> @@ -437,15 +421,5 @@ </Container> </SubComponents> </Container> - <Component class="javax.swing.JButton" name="allNotesOffButton"> - <Properties> - <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> - <ResourceString bundle="blue/ui/core/blueLive/Bundle.properties" key="BlueLiveTopComponent.allNotesOffButton.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="allNotesOffButtonActionPerformed"/> - </Events> - </Component> </SubComponents> </Form> Modified: blue/trunk/blue-ui-core/src/blue/ui/core/blueLive/BlueLiveTopComponent.java =================================================================== --- blue/trunk/blue-ui-core/src/blue/ui/core/blueLive/BlueLiveTopComponent.java 2010-03-23 04:36:08 UTC (rev 4182) +++ blue/trunk/blue-ui-core/src/blue/ui/core/blueLive/BlueLiveTopComponent.java 2010-03-23 04:36:35 UTC (rev 4183) @@ -103,12 +103,6 @@ LiveObjectsTableModel model; - APIRunner apiRunner; - - CommandlineRunner commandlineRunner = new CommandlineRunner(this); - - CSDRunner csdRunner = null; - AddMenu addPopup = null; BufferMenu bufferPopup = new BufferMenu(); @@ -121,6 +115,8 @@ ArrayList<Class> plugins = BluePluginManager.getInstance().getLiveSoundObjectClasses(); + BlueLiveToolBar blueLiveToolBar; + public BlueLiveTopComponent() { initComponents(); setName(NbBundle.getMessage(BlueLiveTopComponent.class, @@ -129,26 +125,8 @@ "HINT_BlueLiveTopComponent")); // setIcon(ImageUtilities.loadImage(ICON_PATH, true)); - PlayModeListener playModeListener = new PlayModeListener() { + blueLiveToolBar = BlueLiveToolBar.getInstance(); - public void playModeChanged(int playMode) { - if (playMode == PlayModeListener.PLAY_MODE_STOP) { - if (runButton.isSelected()) { - runButton.setSelected(false); - } - } - - } - }; - - try { - apiRunner = new APIRunner(); - apiRunner.addPlayModeListener(playModeListener); - } catch (Throwable t) { - apiRunner = null; - } - - setupNoteTemplatePopup(); model = new LiveObjectsTableModel(); @@ -316,7 +294,6 @@ completeOverride = new javax.swing.JCheckBox(); commandLineText = new javax.swing.JTextField(); - runButton = new javax.swing.JToggleButton(); enableAdvancedFlags = new javax.swing.JCheckBox(); midiOpenButton = new javax.swing.JToggleButton(); midiInputLabel = new javax.swing.JLabel(); @@ -342,7 +319,6 @@ quarterNoteSpinner = new javax.swing.JSpinner(); jLabel5 = new javax.swing.JLabel(); instrIdText = new javax.swing.JTextField(); - allNotesOffButton = new javax.swing.JButton(); org.openide.awt.Mnemonics.setLocalizedText(completeOverride, org.openide.util.NbBundle.getMessage(BlueLiveTopComponent.class, "BlueLiveTopComponent.completeOverride.text")); // NOI18N completeOverride.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0)); @@ -353,13 +329,6 @@ } }); - org.openide.awt.Mnemonics.setLocalizedText(runButton, org.openide.util.NbBundle.getMessage(BlueLiveTopComponent.class, "BlueLiveTopComponent.runButton.text")); // NOI18N - runButton.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - runButtonActionPerformed(evt); - } - }); - org.openide.awt.Mnemonics.setLocalizedText(enableAdvancedFlags, org.openide.util.NbBundle.getMessage(BlueLiveTopComponent.class, "BlueLiveTopComponent.enableAdvancedFlags.text")); // NOI18N enableAdvancedFlags.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0)); enableAdvancedFlags.setMargin(new java.awt.Insets(0, 0, 0, 0)); @@ -543,13 +512,6 @@ jTabbedPane1.addTab(org.openide.util.NbBundle.getMessage(BlueLiveTopComponent.class, "BlueLiveTopComponent.scoPadPanel.TabConstraints.tabTitle"), scoPadPanel); // NOI18N - org.openide.awt.Mnemonics.setLocalizedText(allNotesOffButton, org.openide.util.NbBundle.getMessage(BlueLiveTopComponent.class, "BlueLiveTopComponent.allNotesOffButton.text")); // NOI18N - allNotesOffButton.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - allNotesOffButtonActionPerformed(evt); - } - }); - org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup( @@ -564,24 +526,18 @@ .add(enableAdvancedFlags)) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) - .add(midiInputComboBox, 0, 251, Short.MAX_VALUE) .add(layout.createSequentialGroup() - .add(commandLineText, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 138, Short.MAX_VALUE) + .add(midiInputComboBox, 0, 266, Short.MAX_VALUE) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) - .add(completeOverride))) - .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) - .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) - .add(runButton, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 69, Short.MAX_VALUE) - .add(rescanButton1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) - .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING, false) - .add(midiOpenButton, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .add(allNotesOffButton, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))) + .add(rescanButton1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 84, Short.MAX_VALUE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(midiOpenButton)) + .add(layout.createSequentialGroup() + .add(commandLineText, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 314, Short.MAX_VALUE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(completeOverride))))) .addContainerGap()) ); - - layout.linkSize(new java.awt.Component[] {rescanButton1, runButton}, org.jdesktop.layout.GroupLayout.HORIZONTAL); - layout.setVerticalGroup( layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(layout.createSequentialGroup() @@ -590,16 +546,14 @@ .add(layout.createSequentialGroup() .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) .add(enableAdvancedFlags) - .add(completeOverride) .add(commandLineText, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) - .add(runButton)) + .add(completeOverride)) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) .add(midiInputLabel) .add(midiInputComboBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))) .add(layout.createSequentialGroup() - .add(allNotesOffButton) - .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(29, 29, 29) .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) .add(midiOpenButton) .add(rescanButton1)))) @@ -617,46 +571,6 @@ data.getLiveData().setCommandLineOverride(completeOverride.isSelected()); }//GEN-LAST:event_completeOverrideActionPerformed - private void runButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_runButtonActionPerformed - if (data == null) { - return; - } - - if (csdRunner != null && csdRunner.isRunning()) { - csdRunner.stop(); - - csdRunner = null; - - if (runButton.isSelected()) { - runButton.setSelected(false); - } - - return; - } - - if (!runButton.isSelected()) { - runButton.setSelected(true); - } - - if (apiRunner != null && - APIUtilities.isCsoundAPIAvailable() && - GeneralSettings.getInstance().isUsingCsoundAPI()) { - csdRunner = apiRunner; - } else { - csdRunner = commandlineRunner; - } - - csdRunner.setData(data); - - try { - csdRunner.renderForBlueLive(); - } catch (SoundObjectException soe) { - ExceptionDialog.showExceptionDialog(SwingUtilities.getRoot(this), - soe); - } - - }//GEN-LAST:event_runButtonActionPerformed - private void enableAdvancedFlagsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_enableAdvancedFlagsActionPerformed if (data == null) { return; @@ -810,12 +724,8 @@ } }//GEN-LAST:event_noteTemplateTextMousePressed - private void allNotesOffButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_allNotesOffButtonActionPerformed - sendEvents("i \"blueAllNotesOff\" 0 1"); -}//GEN-LAST:event_allNotesOffButtonActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton addButton; - private javax.swing.JButton allNotesOffButton; private javax.swing.JTextField commandLineText; private javax.swing.JCheckBox completeOverride; private javax.swing.JCheckBox enableAdvancedFlags; @@ -840,7 +750,6 @@ private javax.swing.JSpinner quarterNoteSpinner; private javax.swing.JButton removeButton; private javax.swing.JButton rescanButton1; - private javax.swing.JToggleButton runButton; private javax.swing.JPanel scoPadPanel; private javax.swing.JSpinner startSpinner; // End of variables declaration//GEN-END:variables @@ -915,13 +824,6 @@ return PREFERRED_ID; } - // APPLICATION CODE - protected void sendEvents(String scoText) { - if (csdRunner != null && csdRunner.isRunning()) { - csdRunner.passToStdin(scoText); - } - } - private void setupNoteTemplatePopup() { noteTemplatePopup = new JPopupMenu(); @@ -961,7 +863,7 @@ } protected void triggerLiveObject(int index) { - if (data == null || csdRunner == null || !csdRunner.isRunning() || index < 0) { + if (data == null || index < 0) { return; } @@ -988,7 +890,7 @@ } if (scoreText != null && scoreText.length() > 0) { - sendEvents(scoreText); + blueLiveToolBar.sendEvents(scoreText); } } Modified: blue/trunk/blue-ui-core/src/blue/ui/core/blueLive/Bundle.properties =================================================================== --- blue/trunk/blue-ui-core/src/blue/ui/core/blueLive/Bundle.properties 2010-03-23 04:36:08 UTC (rev 4182) +++ blue/trunk/blue-ui-core/src/blue/ui/core/blueLive/Bundle.properties 2010-03-23 04:36:35 UTC (rev 4183) @@ -3,7 +3,6 @@ CTL_BlueLiveTopComponent=Blue Live HINT_BlueLiveTopComponent=This is a BlueLive window BlueLiveTopComponent.completeOverride.text=Complete Override -BlueLiveTopComponent.allNotesOffButton.text=All Notes Off BlueLiveTopComponent.instrIdText.text=1 BlueLiveTopComponent.jLabel5.text=Instrument ID BlueLiveTopComponent.jLabel2.text=Quarter Note @@ -21,4 +20,3 @@ BlueLiveTopComponent.midiInputLabel.text=MIDI Input Device BlueLiveTopComponent.midiOpenButton.text=Enable BlueLiveTopComponent.enableAdvancedFlags.text=Advanced Flags -BlueLiveTopComponent.runButton.text=Run This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
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. |
From: <kun...@us...> - 2010-03-27 03:09:04
|
Revision: 4187 http://bluemusic.svn.sourceforge.net/bluemusic/?rev=4187&view=rev Author: kunstmusik Date: 2010-03-27 03:08:56 +0000 (Sat, 27 Mar 2010) Log Message: ----------- removed older MIDI classes and created new blue-midi module Modified Paths: -------------- blue/trunk/blue-core/nbproject/project.xml blue/trunk/blue-ui-core/nbproject/project.xml blue/trunk/blue-ui-core/src/blue/ui/core/blueLive/BlueLiveTopComponent.form blue/trunk/blue-ui-core/src/blue/ui/core/blueLive/BlueLiveTopComponent.java blue/trunk/blue-ui-core/src/blue/ui/core/blueLive/Bundle.properties blue/trunk/blue-ui-core/src/blue/ui/core/blueLive/ScoPadReceiver.java blue/trunk/nbproject/project.properties Added Paths: ----------- blue/trunk/blue-midi/ blue/trunk/blue-midi/build.xml blue/trunk/blue-midi/manifest.mf blue/trunk/blue-midi/nbproject/ blue/trunk/blue-midi/nbproject/build-impl.xml blue/trunk/blue-midi/nbproject/genfiles.properties blue/trunk/blue-midi/nbproject/project.properties blue/trunk/blue-midi/nbproject/project.xml blue/trunk/blue-midi/nbproject/suite.properties blue/trunk/blue-midi/src/ blue/trunk/blue-midi/src/blue/ blue/trunk/blue-midi/src/blue/midi/ 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/MidiOptionsPanelController.java blue/trunk/blue-midi/src/blue/midi/MidiPanel.form blue/trunk/blue-midi/src/blue/midi/MidiPanel.java blue/trunk/blue-midi/src/blue/midi/layer.xml blue/trunk/blue-midi/test/ blue/trunk/blue-midi/test/unit/ blue/trunk/blue-midi/test/unit/src/ Modified: blue/trunk/blue-core/nbproject/project.xml =================================================================== --- blue/trunk/blue-core/nbproject/project.xml 2010-03-27 03:08:37 UTC (rev 4186) +++ blue/trunk/blue-core/nbproject/project.xml 2010-03-27 03:08:56 UTC (rev 4187) @@ -7,6 +7,14 @@ <suite-component/> <module-dependencies> <dependency> + <code-name-base>blue.midi</code-name-base> + <build-prerequisite/> + <compile-dependency/> + <run-dependency> + <specification-version>1.0</specification-version> + </run-dependency> + </dependency> + <dependency> <code-name-base>blue.utilities</code-name-base> <build-prerequisite/> <compile-dependency/> Property changes on: blue/trunk/blue-midi ___________________________________________________________________ Added: svn:ignore + build Added: blue/trunk/blue-midi/build.xml =================================================================== --- blue/trunk/blue-midi/build.xml (rev 0) +++ blue/trunk/blue-midi/build.xml 2010-03-27 03:08:56 UTC (rev 4187) @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- You may freely edit this file. See harness/README in the NetBeans platform --> +<!-- for some information on what you could do (e.g. targets to override). --> +<!-- If you delete this file and reopen the project it will be recreated. --> +<project name="blue.midi" default="netbeans" basedir="."> + <description>Builds, tests, and runs the project blue.midi.</description> + <import file="nbproject/build-impl.xml"/> +</project> Added: blue/trunk/blue-midi/manifest.mf =================================================================== --- blue/trunk/blue-midi/manifest.mf (rev 0) +++ blue/trunk/blue-midi/manifest.mf 2010-03-27 03:08:56 UTC (rev 4187) @@ -0,0 +1,6 @@ +Manifest-Version: 1.0 +OpenIDE-Module: blue.midi +OpenIDE-Module-Layer: blue/midi/layer.xml +OpenIDE-Module-Localizing-Bundle: blue/midi/Bundle.properties +OpenIDE-Module-Specification-Version: 1.0 + Added: blue/trunk/blue-midi/nbproject/build-impl.xml =================================================================== --- blue/trunk/blue-midi/nbproject/build-impl.xml (rev 0) +++ blue/trunk/blue-midi/nbproject/build-impl.xml 2010-03-27 03:08:56 UTC (rev 4187) @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +*** GENERATED FROM project.xml - DO NOT EDIT *** +*** EDIT ../build.xml INSTEAD *** +--> +<project name="blue.midi-impl" basedir=".."> + <fail message="Please build using Ant 1.7.1 or higher."> + <condition> + <not> + <antversion atleast="1.7.1"/> + </not> + </condition> + </fail> + <property file="nbproject/private/suite-private.properties"/> + <property file="nbproject/suite.properties"/> + <fail unless="suite.dir">You must set 'suite.dir' to point to your containing module suite</fail> + <property file="${suite.dir}/nbproject/private/platform-private.properties"/> + <property file="${suite.dir}/nbproject/platform.properties"/> + <macrodef name="property" uri="http://www.netbeans.org/ns/nb-module-project/2"> + <attribute name="name"/> + <attribute name="value"/> + <sequential> + <property name="@{name}" value="${@{value}}"/> + </sequential> + </macrodef> + <macrodef name="evalprops" uri="http://www.netbeans.org/ns/nb-module-project/2"> + <attribute name="property"/> + <attribute name="value"/> + <sequential> + <property name="@{property}" value="@{value}"/> + </sequential> + </macrodef> + <property file="${user.properties.file}"/> + <nbmproject2:property name="harness.dir" value="nbplatform.${nbplatform.active}.harness.dir" xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/> + <nbmproject2:property name="nbplatform.active.dir" value="nbplatform.${nbplatform.active}.netbeans.dest.dir" xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/> + <nbmproject2:evalprops property="cluster.path.evaluated" value="${cluster.path}" xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/> + <fail message="Path to 'platform' cluster missing in $${cluster.path} property or using corrupt Netbeans Platform (missing harness)."> + <condition> + <not> + <contains string="${cluster.path.evaluated}" substring="platform"/> + </not> + </condition> + </fail> + <import file="${harness.dir}/build.xml"/> +</project> Added: blue/trunk/blue-midi/nbproject/genfiles.properties =================================================================== --- blue/trunk/blue-midi/nbproject/genfiles.properties (rev 0) +++ blue/trunk/blue-midi/nbproject/genfiles.properties 2010-03-27 03:08:56 UTC (rev 4187) @@ -0,0 +1,8 @@ +build.xml.data.CRC32=354b3c2b +build.xml.script.CRC32=413025f8 +build.xml.stylesheet.CRC32=79c3b980@1.31.1.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.script.CRC32=2465577f +nbproject/build-impl.xml.stylesheet.CRC32=261c4bef@1.31.1.7 Added: blue/trunk/blue-midi/nbproject/project.properties =================================================================== --- blue/trunk/blue-midi/nbproject/project.properties (rev 0) +++ blue/trunk/blue-midi/nbproject/project.properties 2010-03-27 03:08:56 UTC (rev 4187) @@ -0,0 +1,2 @@ +javac.source=1.5 +javac.compilerargs=-Xlint -Xlint:-serial Added: blue/trunk/blue-midi/nbproject/project.xml =================================================================== --- blue/trunk/blue-midi/nbproject/project.xml (rev 0) +++ blue/trunk/blue-midi/nbproject/project.xml 2010-03-27 03:08:56 UTC (rev 4187) @@ -0,0 +1,49 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://www.netbeans.org/ns/project/1"> + <type>org.netbeans.modules.apisupport.project</type> + <configuration> + <data xmlns="http://www.netbeans.org/ns/nb-module-project/3"> + <code-name-base>blue.midi</code-name-base> + <suite-component/> + <module-dependencies> + <dependency> + <code-name-base>org.jdesktop.layout</code-name-base> + <build-prerequisite/> + <compile-dependency/> + <run-dependency> + <release-version>1</release-version> + <specification-version>1.10.1.103</specification-version> + </run-dependency> + </dependency> + <dependency> + <code-name-base>org.netbeans.modules.options.api</code-name-base> + <build-prerequisite/> + <compile-dependency/> + <run-dependency> + <release-version>1</release-version> + <specification-version>1.16.2</specification-version> + </run-dependency> + </dependency> + <dependency> + <code-name-base>org.openide.awt</code-name-base> + <build-prerequisite/> + <compile-dependency/> + <run-dependency> + <specification-version>7.19.1.1</specification-version> + </run-dependency> + </dependency> + <dependency> + <code-name-base>org.openide.util</code-name-base> + <build-prerequisite/> + <compile-dependency/> + <run-dependency> + <specification-version>7.31.2.1</specification-version> + </run-dependency> + </dependency> + </module-dependencies> + <public-packages> + <package>blue.midi</package> + </public-packages> + </data> + </configuration> +</project> Added: blue/trunk/blue-midi/nbproject/suite.properties =================================================================== --- blue/trunk/blue-midi/nbproject/suite.properties (rev 0) +++ blue/trunk/blue-midi/nbproject/suite.properties 2010-03-27 03:08:56 UTC (rev 4187) @@ -0,0 +1 @@ +suite.dir=${basedir}/.. Added: blue/trunk/blue-midi/src/blue/midi/BlueMidiDevice.java =================================================================== --- blue/trunk/blue-midi/src/blue/midi/BlueMidiDevice.java (rev 0) +++ blue/trunk/blue-midi/src/blue/midi/BlueMidiDevice.java 2010-03-27 03:08:56 UTC (rev 4187) @@ -0,0 +1,99 @@ +/* + * blue - object composition environment for csound + * Copyright (c) 2000-2010 Steven Yi (ste...@gm...) + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published + * by the Free Software Foundation; either version 2 of the License or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING.LIB. If not, write to + * the Free Software Foundation Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307 USA + */ + +package blue.midi; + +import javax.sound.midi.MidiDevice; +import javax.sound.midi.MidiSystem; +import javax.sound.midi.MidiUnavailableException; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; + +public class BlueMidiDevice { + + private MidiDevice.Info info = null; + + private MidiDevice input = null; + + ChangeListener cl = null; + + ChangeEvent e; + + public BlueMidiDevice(MidiDevice.Info info) { + this.info = info; + e = new ChangeEvent(this); + } + + public MidiDevice.Info getDeviceInfo() { + return info; + } + + protected void setMidiDevice(MidiDevice input) { + this.input = input; + } + + protected MidiDevice getMidiDevice() { + return this.input; + } + + public void open() throws MidiUnavailableException { + + if (input != null && input.isOpen()) { + return; + } + + try { + input = MidiSystem.getMidiDevice(info); + input.open(); + } catch (MidiUnavailableException ex) { + input = null; + throw ex; + } + + cl.stateChanged(e); + } + + public boolean isEnabled() { + return input != null && input.isOpen(); + } + + public void close() { + if (input != null) { + input.close(); + } + input = null; + + if(cl != null) { + cl.stateChanged(e); + } + } + + public String toString() { + if (info != null) { + return info.getName(); + } + return "Error"; + } + + public void setChangeListener(ChangeListener cl) { + this.cl = cl; + } + +} Added: blue/trunk/blue-midi/src/blue/midi/Bundle.properties =================================================================== --- blue/trunk/blue-midi/src/blue/midi/Bundle.properties (rev 0) +++ blue/trunk/blue-midi/src/blue/midi/Bundle.properties 2010-03-27 03:08:56 UTC (rev 4187) @@ -0,0 +1,3 @@ +AdvancedOption_DisplayName_Midi=MIDI +AdvancedOption_Keywords_Midi=MIDI +OpenIDE-Module-Name=blue-midi Added: blue/trunk/blue-midi/src/blue/midi/MidiInputManager.java =================================================================== --- blue/trunk/blue-midi/src/blue/midi/MidiInputManager.java (rev 0) +++ blue/trunk/blue-midi/src/blue/midi/MidiInputManager.java 2010-03-27 03:08:56 UTC (rev 4187) @@ -0,0 +1,140 @@ +/* + * blue - object composition environment for csound + * Copyright (c) 2000-2006 Steven Yi (ste...@gm...) + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published + * by the Free Software Foundation; either version 2 of the License or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING.LIB. If not, write to + * the Free Software Foundation Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307 USA + */ +package blue.midi; + +import java.util.Iterator; +import java.util.Vector; + +import javax.sound.midi.MidiDevice; +import javax.sound.midi.MidiMessage; +import javax.sound.midi.MidiSystem; +import javax.sound.midi.MidiUnavailableException; +import javax.sound.midi.Receiver; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; +import org.openide.util.Exceptions; + +/** + * Manages MIDI Input Device, single device at a time, notifies listeners when + * state has changed. Listeners should check if device has changed as well as if + * device is open. + * + * @author steven + */ +public class MidiInputManager implements Receiver, ChangeListener { + + private static MidiInputManager instance = null; + + private Vector listeners = null; + + private Vector receivers = null; + + private ChangeEvent changeEvent = null; + + Vector<BlueMidiDevice> items = null; + + /** Creates a new instance of MidiInputManager */ + private MidiInputManager() { + } + + public static MidiInputManager getInstance() { + if (instance == null) { + instance = new MidiInputManager(); + } + return instance; + } + + public void rescan() { + MidiDevice.Info[] info; + info = MidiSystem.getMidiDeviceInfo(); + + Vector<BlueMidiDevice> items = new Vector<BlueMidiDevice>(); + + for (int i = 0; i < info.length; i++) { + try { + // System.err.println(MidiSystem.getMidiDevice(info[i]).getMaxTransmitters()); + + if (MidiSystem.getMidiDevice(info[i]).getMaxTransmitters() != 0) { + final BlueMidiDevice blueMidiDevice = new BlueMidiDevice(info[i]); + blueMidiDevice.setChangeListener(this); + items.add(blueMidiDevice); + } + + } catch (MidiUnavailableException ex) { + ex.printStackTrace(); + } + } + + this.items = items; + } + + public Vector<BlueMidiDevice> getInputDeviceOptions() { + if (items == null) { + rescan(); + } + return items; + } + + /* BROADCAST MIDI TO RECEIVERS */ + public void addReceiver(Receiver receiver) { + if (receivers == null) { + receivers = new Vector(); + } + receivers.add(receiver); + } + + public void removeReceiver(Receiver receiver) { + if (receivers != null) { + receivers.remove(receiver); + } + } + + private void broadcastMessage(MidiMessage message, long timeStamp) { + if (receivers != null) { + Iterator iter = new Vector(receivers).iterator(); + + while (iter.hasNext()) { + Receiver receiver = (Receiver) iter.next(); + receiver.send(message, timeStamp); + } + } + } + + /* CHANGE LISTENER CODE */ + public void stateChanged(ChangeEvent e) { + BlueMidiDevice device = (BlueMidiDevice) e.getSource(); + + if (device.isEnabled()) { + try { + device.getMidiDevice().getTransmitter().setReceiver(this); + } catch (MidiUnavailableException ex) { + Exceptions.printStackTrace(ex); + } + } + } + + /* RECEIVER METHODS */ + public void send(MidiMessage message, long timeStamp) { + broadcastMessage(message, timeStamp); + } + + public void close() { + } +} Added: blue/trunk/blue-midi/src/blue/midi/MidiInputTableModel.java =================================================================== --- blue/trunk/blue-midi/src/blue/midi/MidiInputTableModel.java (rev 0) +++ blue/trunk/blue-midi/src/blue/midi/MidiInputTableModel.java 2010-03-27 03:08:56 UTC (rev 4187) @@ -0,0 +1,92 @@ +/* + * blue - object composition environment for csound + * Copyright (c) 2000-2010 Steven Yi (ste...@gm...) + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published + * by the Free Software Foundation; either version 2 of the License or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING.LIB. If not, write to + * the Free Software Foundation Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307 USA + */ +package blue.midi; + +import java.util.Vector; +import javax.sound.midi.MidiUnavailableException; +import javax.swing.table.AbstractTableModel; +import org.openide.util.Exceptions; + +/** + * + * @author Steven + */ +public class MidiInputTableModel extends AbstractTableModel { + + private final Vector<BlueMidiDevice> devices; + + public MidiInputTableModel() { + devices = MidiInputManager.getInstance().getInputDeviceOptions(); + } + + @Override + public int getColumnCount() { + return 2; + } + + @Override + public String getColumnName(int column) { + return (column == 0) ? "Open" : "Device Name"; + } + + @Override + public int getRowCount() { + return devices.size(); + } + + @Override + public Object getValueAt(int row, int column) { + BlueMidiDevice device = devices.get(row); + + if (column == 0) { + return device.isEnabled(); + } + return device.toString(); + } + + @Override + public boolean isCellEditable(int row, int column) { + return (column == 0); + } + + @Override + public void setValueAt(Object aValue, int row, int column) { + if (column == 0) { + BlueMidiDevice device = devices.get(row); + boolean open = ((Boolean) aValue).booleanValue(); + + if (open) { + try { + device.open(); + } catch (MidiUnavailableException ex) { + Exceptions.printStackTrace(ex); + } + } else { + device.close(); + } + } + fireTableCellUpdated(row, column); + } + + @Override + public Class<?> getColumnClass(int columnIndex) { + return (columnIndex == 0) ? Boolean.class : String.class; + } +} Added: blue/trunk/blue-midi/src/blue/midi/MidiOptionsPanelController.java =================================================================== --- blue/trunk/blue-midi/src/blue/midi/MidiOptionsPanelController.java (rev 0) +++ blue/trunk/blue-midi/src/blue/midi/MidiOptionsPanelController.java 2010-03-27 03:08:56 UTC (rev 4187) @@ -0,0 +1,95 @@ +/* + * blue - object composition environment for csound + * Copyright (c) 2000-2010 Steven Yi (ste...@gm...) + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published + * by the Free Software Foundation; either version 2 of the License or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING.LIB. If not, write to + * the Free Software Foundation Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307 USA + */ + +package blue.midi; + +import java.beans.PropertyChangeListener; +import java.beans.PropertyChangeSupport; +import javax.swing.JComponent; +import org.netbeans.spi.options.OptionsPanelController; +import org.openide.util.HelpCtx; +import org.openide.util.Lookup; + +@OptionsPanelController.SubRegistration(location = "BlueOptionsCategory", +displayName = "#AdvancedOption_DisplayName_Midi", +keywords = "#AdvancedOption_Keywords_Midi", +keywordsCategory = "BlueOptionsCategory/Midi", +position=800) +public final class MidiOptionsPanelController extends OptionsPanelController { + + private MidiPanel panel; + + private final PropertyChangeSupport pcs = new PropertyChangeSupport(this); + + private boolean changed; + + public void update() { + getPanel().load(); + changed = false; + } + + public void applyChanges() { + getPanel().store(); + changed = false; + } + + public void cancel() { + // need not do anything special, if no changes have been persisted yet + } + + public boolean isValid() { + return getPanel().valid(); + } + + public boolean isChanged() { + return changed; + } + + public HelpCtx getHelpCtx() { + return null; // new HelpCtx("...ID") if you have a help set + } + + public JComponent getComponent(Lookup masterLookup) { + return getPanel(); + } + + public void addPropertyChangeListener(PropertyChangeListener l) { + pcs.addPropertyChangeListener(l); + } + + public void removePropertyChangeListener(PropertyChangeListener l) { + pcs.removePropertyChangeListener(l); + } + + private MidiPanel getPanel() { + if (panel == null) { + panel = new MidiPanel(this); + } + return panel; + } + + void changed() { + if (!changed) { + changed = true; + pcs.firePropertyChange(OptionsPanelController.PROP_CHANGED, false, true); + } + pcs.firePropertyChange(OptionsPanelController.PROP_VALID, null, null); + } +} Added: blue/trunk/blue-midi/src/blue/midi/MidiPanel.form =================================================================== --- blue/trunk/blue-midi/src/blue/midi/MidiPanel.form (rev 0) +++ blue/trunk/blue-midi/src/blue/midi/MidiPanel.form 2010-03-27 03:08:56 UTC (rev 4187) @@ -0,0 +1,59 @@ +<?xml version="1.0" encoding="UTF-8" ?> + +<Form version="1.5" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JPanelFormInfo"> + <AuxValues> + <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/> + <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/> + <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/> + <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="true"/> + <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="true"/> + <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" alignment="0" attributes="0"> + <EmptySpace max="-2" attributes="0"/> + <Component id="jScrollPane1" pref="256" max="32767" attributes="0"/> + <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="jScrollPane1" pref="100" max="32767" attributes="0"/> + <EmptySpace max="-2" attributes="0"/> + </Group> + </Group> + </DimensionLayout> + </Layout> + <SubComponents> + <Container class="javax.swing.JScrollPane" name="jScrollPane1"> + <AuxValues> + <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/> + </AuxValues> + + <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/> + <SubComponents> + <Component class="javax.swing.JTable" name="jTable1"> + <Properties> + <Property name="model" type="javax.swing.table.TableModel" editor="org.netbeans.modules.form.editors2.TableModelEditor"> + <Table columnCount="4" rowCount="4"> + <Column editable="true" title="Title 1" type="java.lang.Object"/> + <Column editable="true" title="Title 2" type="java.lang.Object"/> + <Column editable="true" title="Title 3" type="java.lang.Object"/> + <Column editable="true" title="Title 4" type="java.lang.Object"/> + </Table> + </Property> + </Properties> + </Component> + </SubComponents> + </Container> + </SubComponents> +</Form> Added: blue/trunk/blue-midi/src/blue/midi/MidiPanel.java =================================================================== --- blue/trunk/blue-midi/src/blue/midi/MidiPanel.java (rev 0) +++ blue/trunk/blue-midi/src/blue/midi/MidiPanel.java 2010-03-27 03:08:56 UTC (rev 4187) @@ -0,0 +1,106 @@ +/* + * blue - object composition environment for csound + * Copyright (c) 2000-2010 Steven Yi (ste...@gm...) + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published + * by the Free Software Foundation; either version 2 of the License or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING.LIB. If not, write to + * the Free Software Foundation Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307 USA + */ +package blue.midi; + +final class MidiPanel extends javax.swing.JPanel { + + private final MidiOptionsPanelController controller; + + MidiPanel(MidiOptionsPanelController controller) { + this.controller = controller; + initComponents(); + + jTable1.setModel(new MidiInputTableModel()); + jTable1.getTableHeader().setReorderingAllowed(false); + jTable1.getColumnModel().getColumn(0).setMaxWidth(60); + // TODO listen to changes in form fields and call controller.changed() + } + + /** 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. + */ + // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents + private void initComponents() { + + jScrollPane1 = new javax.swing.JScrollPane(); + jTable1 = new javax.swing.JTable(); + + jTable1.setModel(new javax.swing.table.DefaultTableModel( + new Object [][] { + {null, null, null, null}, + {null, null, null, null}, + {null, null, null, null}, + {null, null, null, null} + }, + new String [] { + "Title 1", "Title 2", "Title 3", "Title 4" + } + )); + jScrollPane1.setViewportView(jTable1); + + 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) + .addContainerGap()) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 100, Short.MAX_VALUE) + .addContainerGap()) + ); + }// </editor-fold>//GEN-END:initComponents + + void load() { + // TODO read settings and initialize GUI + // Example: + // someCheckBox.setSelected(Preferences.userNodeForPackage(MidiPanel.class).getBoolean("someFlag", false)); + // or for org.openide.util with API spec. version >= 7.4: + // someCheckBox.setSelected(NbPreferences.forModule(MidiPanel.class).getBoolean("someFlag", false)); + // or: + // someTextField.setText(SomeSystemOption.getDefault().getSomeStringProperty()); + } + + void store() { + // TODO store modified settings + // Example: + // Preferences.userNodeForPackage(MidiPanel.class).putBoolean("someFlag", someCheckBox.isSelected()); + // or for org.openide.util with API spec. version >= 7.4: + // NbPreferences.forModule(MidiPanel.class).putBoolean("someFlag", someCheckBox.isSelected()); + // or: + // SomeSystemOption.getDefault().setSomeStringProperty(someTextField.getText()); + } + + boolean valid() { + // TODO check whether form is consistent and complete + return true; + } + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JScrollPane jScrollPane1; + private javax.swing.JTable jTable1; + // End of variables declaration//GEN-END:variables +} Added: blue/trunk/blue-midi/src/blue/midi/layer.xml =================================================================== --- blue/trunk/blue-midi/src/blue/midi/layer.xml (rev 0) +++ blue/trunk/blue-midi/src/blue/midi/layer.xml 2010-03-27 03:08:56 UTC (rev 4187) @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE filesystem PUBLIC "-//NetBeans//DTD Filesystem 1.1//EN" "http://www.netbeans.org/dtds/filesystem-1_1.dtd"> +<filesystem> +</filesystem> Modified: blue/trunk/blue-ui-core/nbproject/project.xml =================================================================== --- blue/trunk/blue-ui-core/nbproject/project.xml 2010-03-27 03:08:37 UTC (rev 4186) +++ blue/trunk/blue-ui-core/nbproject/project.xml 2010-03-27 03:08:56 UTC (rev 4187) @@ -7,6 +7,14 @@ <suite-component/> <module-dependencies> <dependency> + <code-name-base>blue.midi</code-name-base> + <build-prerequisite/> + <compile-dependency/> + <run-dependency> + <specification-version>1.0</specification-version> + </run-dependency> + </dependency> + <dependency> <code-name-base>blue.plaf</code-name-base> <build-prerequisite/> <compile-dependency/> Modified: blue/trunk/blue-ui-core/src/blue/ui/core/blueLive/BlueLiveTopComponent.form =================================================================== --- blue/trunk/blue-ui-core/src/blue/ui/core/blueLive/BlueLiveTopComponent.form 2010-03-27 03:08:37 UTC (rev 4186) +++ blue/trunk/blue-ui-core/src/blue/ui/core/blueLive/BlueLiveTopComponent.form 2010-03-27 03:08:56 UTC (rev 4187) @@ -18,144 +18,22 @@ <Group type="103" groupAlignment="0" attributes="0"> <Group type="102" alignment="0" attributes="0"> <EmptySpace max="-2" attributes="0"/> - <Group type="103" groupAlignment="0" attributes="0"> - <Component id="jTabbedPane1" alignment="0" pref="526" max="32767" attributes="0"/> - <Group type="102" alignment="0" attributes="0"> - <Group type="103" groupAlignment="0" attributes="0"> - <Component id="midiInputLabel" alignment="0" min="-2" max="-2" attributes="0"/> - <Component id="enableAdvancedFlags" alignment="0" min="-2" max="-2" attributes="0"/> - </Group> - <EmptySpace max="-2" attributes="0"/> - <Group type="103" groupAlignment="0" attributes="0"> - <Group type="102" attributes="0"> - <Component id="midiInputComboBox" pref="266" max="32767" attributes="0"/> - <EmptySpace max="-2" attributes="0"/> - <Component id="rescanButton1" pref="84" max="32767" attributes="1"/> - <EmptySpace max="-2" attributes="0"/> - <Component id="midiOpenButton" min="-2" max="-2" attributes="1"/> - </Group> - <Group type="102" attributes="0"> - <Component id="commandLineText" pref="314" max="32767" attributes="0"/> - <EmptySpace max="-2" attributes="0"/> - <Component id="completeOverride" min="-2" max="-2" attributes="0"/> - </Group> - </Group> - </Group> - </Group> - <EmptySpace min="-2" max="-2" attributes="0"/> + <Component id="jTabbedPane1" pref="526" max="32767" attributes="0"/> + <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"/> - <Group type="103" groupAlignment="0" attributes="0"> - <Group type="102" alignment="0" attributes="0"> - <Group type="103" groupAlignment="3" attributes="0"> - <Component id="enableAdvancedFlags" alignment="3" min="-2" max="-2" attributes="0"/> - <Component id="commandLineText" alignment="3" min="-2" max="-2" attributes="0"/> - <Component id="completeOverride" alignment="3" min="-2" max="-2" attributes="0"/> - </Group> - <EmptySpace max="-2" attributes="0"/> - <Group type="103" groupAlignment="3" attributes="0"> - <Component id="midiInputLabel" alignment="3" min="-2" max="-2" attributes="0"/> - <Component id="midiInputComboBox" alignment="3" min="-2" max="-2" attributes="0"/> - </Group> - </Group> - <Group type="102" alignment="0" attributes="0"> - <EmptySpace min="-2" pref="29" max="-2" attributes="0"/> - <Group type="103" groupAlignment="3" attributes="0"> - <Component id="midiOpenButton" alignment="3" min="-2" max="-2" attributes="0"/> - <Component id="rescanButton1" alignment="3" min="-2" max="-2" attributes="0"/> - </Group> - </Group> - </Group> + <Component id="jTabbedPane1" pref="402" max="32767" attributes="0"/> <EmptySpace max="-2" attributes="0"/> - <Component id="jTabbedPane1" pref="344" max="32767" attributes="0"/> - <EmptySpace max="-2" attributes="0"/> </Group> </Group> </DimensionLayout> </Layout> <SubComponents> - <Component class="javax.swing.JCheckBox" name="completeOverride"> - <Properties> - <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> - <ResourceString bundle="blue/ui/core/blueLive/Bundle.properties" key="BlueLiveTopComponent.completeOverride.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> - </Property> - <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor"> - <Border info="org.netbeans.modules.form.compat2.border.EmptyBorderInfo"> - <EmptyBorder bottom="0" left="0" right="0" top="0"/> - </Border> - </Property> - <Property name="margin" type="java.awt.Insets" editor="org.netbeans.beaninfo.editors.InsetsEditor"> - <Insets value="[0, 0, 0, 0]"/> - </Property> - </Properties> - <Events> - <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="completeOverrideActionPerformed"/> - </Events> - </Component> - <Component class="javax.swing.JTextField" name="commandLineText"> - </Component> - <Component class="javax.swing.JCheckBox" name="enableAdvancedFlags"> - <Properties> - <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> - <ResourceString bundle="blue/ui/core/blueLive/Bundle.properties" key="BlueLiveTopComponent.enableAdvancedFlags.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> - </Property> - <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor"> - <Border info="org.netbeans.modules.form.compat2.border.EmptyBorderInfo"> - <EmptyBorder bottom="0" left="0" right="0" top="0"/> - </Border> - </Property> - <Property name="margin" type="java.awt.Insets" editor="org.netbeans.beaninfo.editors.InsetsEditor"> - <Insets value="[0, 0, 0, 0]"/> - </Property> - </Properties> - <Events> - <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="enableAdvancedFlagsActionPerformed"/> - </Events> - </Component> - <Component class="javax.swing.JToggleButton" name="midiOpenButton"> - <Properties> - <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> - <ResourceString bundle="blue/ui/core/blueLive/Bundle.properties" key="BlueLiveTopComponent.midiOpenButton.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="midiOpenButtonActionPerformed"/> - </Events> - </Component> - <Component class="javax.swing.JLabel" name="midiInputLabel"> - <Properties> - <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> - <ResourceString bundle="blue/ui/core/blueLive/Bundle.properties" key="BlueLiveTopComponent.midiInputLabel.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> - </Property> - </Properties> - </Component> - <Component class="javax.swing.JComboBox" name="midiInputComboBox"> - <Properties> - <Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor"> - <StringArray count="4"> - <StringItem index="0" value="Item 1"/> - <StringItem index="1" value="Item 2"/> - <StringItem index="2" value="Item 3"/> - <StringItem index="3" value="Item 4"/> - </StringArray> - </Property> - </Properties> - </Component> - <Component class="javax.swing.JButton" name="rescanButton1"> - <Properties> - <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> - <ResourceString bundle="blue/ui/core/blueLive/Bundle.properties" key="BlueLiveTopComponent.rescanButton1.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="rescanButton1ActionPerformed"/> - </Events> - </Component> <Container class="javax.swing.JTabbedPane" name="jTabbedPane1"> <Layout class="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout"/> @@ -203,7 +81,7 @@ <Component id="pushDownButton" alignment="3" min="-2" max="-2" attributes="0"/> </Group> <EmptySpace max="-2" attributes="0"/> - <Component id="jScrollPane1" pref="268" max="32767" attributes="0"/> + <Component id="jScrollPane1" pref="326" max="32767" attributes="0"/> <EmptySpace max="-2" attributes="0"/> </Group> </Group> @@ -338,7 +216,7 @@ <EmptySpace max="-2" attributes="0"/> <Component id="jLabel3" min="-2" max="-2" attributes="0"/> <EmptySpace max="-2" attributes="0"/> - <Component id="jScrollPane2" pref="225" max="32767" attributes="0"/> + <Component id="jScrollPane2" pref="283" max="32767" attributes="0"/> <EmptySpace max="-2" attributes="0"/> </Group> </Group> @@ -419,6 +297,88 @@ </Component> </SubComponents> </Container> + <Container class="javax.swing.JPanel" name="jPanel1"> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout$JTabbedPaneConstraintsDescription"> + <JTabbedPaneConstraints tabName="Options"> + <Property name="tabTitle" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="blue/ui/core/blueLive/Bundle.properties" key="BlueLiveTopComponent.jPanel1.TabConstraints.tabTitle" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </JTabbedPaneConstraints> + </Constraint> + </Constraints> + + <Layout> + <DimensionLayout dim="0"> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" alignment="0" attributes="0"> + <EmptySpace max="-2" attributes="0"/> + <Component id="enableAdvancedFlags" min="-2" max="-2" attributes="0"/> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="0" attributes="0"> + <Component id="completeOverride" min="-2" max="-2" attributes="0"/> + <Component id="commandLineText" pref="402" max="32767" 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"/> + <Group type="103" groupAlignment="3" attributes="0"> + <Component id="enableAdvancedFlags" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="commandLineText" alignment="3" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace max="-2" attributes="0"/> + <Component id="completeOverride" min="-2" max="-2" attributes="0"/> + <EmptySpace pref="325" max="32767" attributes="0"/> + </Group> + </Group> + </DimensionLayout> + </Layout> + <SubComponents> + <Component class="javax.swing.JCheckBox" name="completeOverride"> + <Properties> + <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="blue/ui/core/blueLive/Bundle.properties" key="BlueLiveTopComponent.completeOverride.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor"> + <Border info="org.netbeans.modules.form.compat2.border.EmptyBorderInfo"> + <EmptyBorder bottom="0" left="0" right="0" top="0"/> + </Border> + </Property> + <Property name="margin" type="java.awt.Insets" editor="org.netbeans.beaninfo.editors.InsetsEditor"> + <Insets value="[0, 0, 0, 0]"/> + </Property> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="completeOverrideActionPerformed"/> + </Events> + </Component> + <Component class="javax.swing.JTextField" name="commandLineText"> + </Component> + <Component class="javax.swing.JCheckBox" name="enableAdvancedFlags"> + <Properties> + <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="blue/ui/core/blueLive/Bundle.properties" key="BlueLiveTopComponent.enableAdvancedFlags.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor"> + <Border info="org.netbeans.modules.form.compat2.border.EmptyBorderInfo"> + <EmptyBorder bottom="0" left="0" right="0" top="0"/> + </Border> + </Property> + <Property name="margin" type="java.awt.Insets" editor="org.netbeans.beaninfo.editors.InsetsEditor"> + <Insets value="[0, 0, 0, 0]"/> + </Property> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="enableAdvancedFlagsActionPerformed"/> + </Events> + </Component> + </SubComponents> + </Container> </SubComponents> </Container> </SubComponents> Modified: blue/trunk/blue-ui-core/src/blue/ui/core/blueLive/BlueLiveTopComponent.java =================================================================== --- blue/trunk/blue-ui-core/src/blue/ui/core/blueLive/BlueLiveTopComponent.java 2010-03-27 03:08:37 UTC (rev 4186) +++ blue/trunk/blue-ui-core/src/blue/ui/core/blueLive/BlueLiveTopComponent.java 2010-03-27 03:08:56 UTC (rev 4187) @@ -27,27 +27,19 @@ import blue.LiveData; import blue.Tables; import blue.blueLive.LiveObject; -import blue.event.PlayModeListener; import blue.event.SelectionEvent; import blue.event.SimpleDocumentListener; import blue.gui.ExceptionDialog; -import blue.midi.MidiInputManager; +import blue.midi.*; import blue.projects.BlueProject; import blue.projects.BlueProjectManager; -import blue.settings.GeneralSettings; import blue.soundObject.SoundObject; import blue.soundObject.SoundObjectException; -import blue.ui.core.render.APIRunner; -import blue.ui.core.render.CSDRunner; -import blue.ui.core.render.CommandlineRunner; import blue.ui.core.score.SoundObjectBuffer; import blue.ui.core.score.SoundObjectSelectionBus; -import blue.utility.APIUtilities; import blue.utility.ObjectUtilities; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import java.awt.event.ComponentAdapter; -import java.awt.event.ComponentEvent; import java.awt.event.KeyEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; @@ -55,12 +47,9 @@ import java.beans.PropertyChangeListener; import java.util.ArrayList; import java.util.HashMap; -import java.util.Vector; import java.util.logging.Logger; import javax.sound.midi.MidiMessage; -import javax.sound.midi.MidiUnavailableException; import javax.sound.midi.Receiver; -import javax.swing.DefaultComboBoxModel; import javax.swing.JButton; import javax.swing.JMenuItem; import javax.swing.JOptionPane; @@ -69,8 +58,6 @@ import javax.swing.ListSelectionModel; import javax.swing.SpinnerNumberModel; import javax.swing.SwingUtilities; -import javax.swing.event.ChangeEvent; -import javax.swing.event.ChangeListener; import javax.swing.event.DocumentEvent; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; @@ -202,15 +189,6 @@ midiManager = MidiInputManager.getInstance(); - midiManager.addChangeListener(new ChangeListener() { - - public void stateChanged(ChangeEvent e) { - if (midiOpenButton.isSelected() != midiManager.isMidiDeviceOpen()) { - midiOpenButton.setSelected(midiManager.isMidiDeviceOpen()); - } - } - }); - // receiver for live space tab midiManager.addReceiver(new Receiver() { @@ -227,8 +205,6 @@ // receiver for SCO pad tab midiManager.addReceiver(scoPadReceiver); - rescanMidiInputDrivers(); - startSpinner.setModel(new SpinnerNumberModel(0.0, 0.0, Double.POSITIVE_INFINITY, 1.0)); quarterNoteSpinner.setModel(new SpinnerNumberModel(1.0, 0.0, @@ -292,13 +268,6 @@ // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { - completeOverride = new javax.swing.JCheckBox(); - commandLineText = new javax.swing.JTextField(); - enableAdvancedFlags = new javax.swing.JCheckBox(); - midiOpenButton = new javax.swing.JToggleButton(); - midiInputLabel = new javax.swing.JLabel(); - midiInputComboBox = new javax.swing.JComboBox(); - rescanButton1 = new javax.swing.JButton(); jTabbedPane1 = new javax.swing.JTabbedPane(); liveSpacePanel = new javax.swing.JPanel(); jScrollPane1 = new javax.swing.JScrollPane(); @@ -319,43 +288,11 @@ quarterNoteSpinner = new javax.swing.JSpinner(); jLabel5 = new javax.swing.JLabel(); instrIdText = new javax.swing.JTextField(); + jPanel1 = new javax.swing.JPanel(); + completeOverride = new javax.swing.JCheckBox(); + commandLineText = new javax.swing.JTextField(); + enableAdvancedFlags = new javax.swing.JCheckBox(); - org.openide.awt.Mnemonics.setLocalizedText(completeOverride, org.openide.util.NbBundle.getMessage(BlueLiveTopComponent.class, "BlueLiveTopComponent.completeOverride.text")); // NOI18N - completeOverride.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0)); - completeOverride.setMargin(new java.awt.Insets(0, 0, 0, 0)); - completeOverride.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - completeOverrideActionPerformed(evt); - } - }); - - org.openide.awt.Mnemonics.setLocalizedText(enableAdvancedFlags, org.openide.util.NbBundle.getMessage(BlueLiveTopComponent.class, "BlueLiveTopComponent.enableAdvancedFlags.text")); // NOI18N - enableAdvancedFlags.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0)); - enableAdvancedFlags.setMargin(new java.awt.Insets(0, 0, 0, 0)); - enableAdvancedFlags.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - enableAdvancedFlagsActionPerformed(evt); - } - }); - - org.openide.awt.Mnemonics.setLocalizedText(midiOpenButton, org.openide.util.NbBundle.getMessage(BlueLiveTopComponent.class, "BlueLiveTopComponent.midiOpenButton.text")); // NOI18N - midiOpenButton.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - midiOpenButtonActionPerformed(evt); - } - }); - - org.openide.awt.Mnemonics.setLocalizedText(midiInputLabel, org.openide.util.NbBundle.getMessage(BlueLiveTopComponent.class, "BlueLiveTopComponent.midiInputLabel.text")); // NOI18N - - midiInputComboBox.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); - - org.openide.awt.Mnemonics.setLocalizedText(rescanButton1, org.openide.util.NbBundle.getMessage(BlueLiveTopComponent.class, "BlueLiveTopComponent.rescanButton1.text")); // NOI18N - rescanButton1.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - rescanButton1ActionPerformed(evt); - } - }); - liveObjectsTable.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { {null, null, null, null}, @@ -425,7 +362,7 @@ .add(pushUpBUtton) .add(pushDownButton)) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) - .add(jScrollPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 268, Short.MAX_VALUE) + .add(jScrollPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 326, Short.MAX_VALUE) .addContainerGap()) ); @@ -506,59 +443,71 @@ .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(jLabel3) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) - .add(jScrollPane2, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 225, Short.MAX_VALUE) + .add(jScrollPane2, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 283, Short.MAX_VALUE) .addContainerGap()) ); jTabbedPane1.addTab(org.openide.util.NbBundle.getMessage(BlueLiveTopComponent.class, "BlueLiveTopComponent.scoPadPanel.TabConstraints.tabTitle"), scoPadPanel); // NOI18N + org.openide.awt.Mnemonics.setLocalizedText(completeOverride, org.openide.util.NbBundle.getMessage(BlueLiveTopComponent.class, "BlueLiveTopComponent.completeOverride.text")); // NOI18N + completeOverride.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0)); + completeOverride.setMargin(new java.awt.Insets(0, 0, 0, 0)); + completeOverride.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + completeOverrideActionPerformed(evt); + } + }); + + org.openide.awt.Mnemonics.setLocalizedText(enableAdvancedFlags, org.openide.util.NbBundle.getMessage(BlueLiveTopComponent.class, "BlueLiveTopComponent.enableAdvancedFlags.text")); // NOI18N + enableAdvancedFlags.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0)); + enableAdvancedFlags.setMargin(new java.awt.Insets(0, 0, 0, 0)); + enableAdvancedFlags.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + enableAdvancedFlagsActionPerformed(evt); + } + }); + + org.jdesktop.layout.GroupLayout jPanel1Layout = new org.jdesktop.layout.GroupLayout(jPanel1); + jPanel1.setLayout(jPanel1Layout); + jPanel1Layout.setHorizontalGroup( + jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(jPanel1Layout.createSequentialGroup() + .addContainerGap() + .add(enableAdvancedFlags) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(completeOverride) + .add(commandLineText, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 402, Short.MAX_VALUE)) + ... [truncated message content] |
From: <kun...@us...> - 2010-04-05 00:31:59
|
Revision: 4198 http://bluemusic.svn.sourceforge.net/bluemusic/?rev=4198&view=rev Author: kunstmusik Date: 2010-04-05 00:31:52 +0000 (Mon, 05 Apr 2010) Log Message: ----------- initial working Midi Input System Modified Paths: -------------- blue/trunk/blue-core/src/blue/BlueData.java blue/trunk/blue-midi/src/blue/midi/BlueMidiDevice.java blue/trunk/blue-ui-core/src/blue/ui/core/Installer.java blue/trunk/blue-ui-core/src/blue/ui/core/midi/Bundle.properties blue/trunk/blue-ui-core/src/blue/ui/core/midi/MidiInputPanelTopComponent.form blue/trunk/blue-ui-core/src/blue/ui/core/midi/MidiInputPanelTopComponent.java Added Paths: ----------- blue/trunk/blue-core/src/blue/midi/ blue/trunk/blue-core/src/blue/midi/MidiInputProcessor.java blue/trunk/blue-core/src/blue/midi/MidiKeyMapping.java blue/trunk/blue-core/src/blue/midi/MidiVelocityMapping.java blue/trunk/blue-ui-core/src/blue/ui/core/midi/MidiInputEngine.java blue/trunk/blue-ui-core/src/blue/ui/core/midi/MidiInputProcessorPanel.form blue/trunk/blue-ui-core/src/blue/ui/core/midi/MidiInputProcessorPanel.java Modified: blue/trunk/blue-core/src/blue/BlueData.java =================================================================== --- blue/trunk/blue-core/src/blue/BlueData.java 2010-04-05 00:27:43 UTC (rev 4197) +++ blue/trunk/blue-core/src/blue/BlueData.java 2010-04-05 00:31:52 UTC (rev 4198) @@ -27,7 +27,6 @@ import java.io.Serializable; import java.io.StringReader; import java.util.ArrayList; -import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.TreeMap; @@ -37,6 +36,7 @@ import Silence.XMLSerializer; import blue.blueLive.LiveObject; import blue.ftable.FTableSet; +import blue.midi.MidiInputProcessor; import blue.mixer.Mixer; import blue.noteProcessor.NoteProcessorChainMap; import blue.orchestra.Instrument; @@ -117,6 +117,8 @@ private String commandLine; + private MidiInputProcessor midiInputProcessor; + // refactored out to GlobalOrcSco, left in for compatibilty (ver 0.89.5) private String globalScore; @@ -157,6 +159,8 @@ liveData = new LiveData(); tempo = new Tempo(); + + midiInputProcessor = new MidiInputProcessor(); } public PolyObject getPolyObject() { @@ -703,4 +707,8 @@ public void setTempo(Tempo tempo) { this.tempo = tempo; } + + public MidiInputProcessor getMidiInputProcessor() { + return midiInputProcessor; + } } \ No newline at end of file Added: blue/trunk/blue-core/src/blue/midi/MidiInputProcessor.java =================================================================== --- blue/trunk/blue-core/src/blue/midi/MidiInputProcessor.java (rev 0) +++ blue/trunk/blue-core/src/blue/midi/MidiInputProcessor.java 2010-04-05 00:31:52 UTC (rev 4198) @@ -0,0 +1,156 @@ +/* + * blue - object composition environment for csound Copyright (c) 2000-2009 + * Steven Yi (ste...@gm...) + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2 of the License or (at your option) any + * later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING.LIB. If not, write to the Free + * Software Foundation Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 + * USA + */ +package blue.midi; + +import blue.soundObject.pianoRoll.Scale; +import java.text.MessageFormat; + +/** + * + * @author syi + */ +public class MidiInputProcessor { + + private static final MessageFormat PCH_FORMAT = new MessageFormat("{0}.{1}"); + + private static final MessageFormat NOTE_FORMAT = new MessageFormat("i{0}.{1} 0 -1 {2} {3}"); + + private static final MessageFormat NOTE_OFF_FORMAT = new MessageFormat("i-{0}.{1} 0 0"); + + private MidiKeyMapping keyMapping = MidiKeyMapping.PCH; + + private MidiVelocityMapping velMapping = MidiVelocityMapping.MIDI; + + Scale scale = Scale.get12TET(); + + String pitchConstant = ""; + + String ampConstant = ""; + + double ampMin = 0.0; + + double ampMax = 1.0; + + public String getAmpConstant() { + return ampConstant; + } + + public void setAmpConstant(String ampConstant) { + this.ampConstant = ampConstant; + } + + public double getAmpMax() { + return ampMax; + } + + public void setAmpMax(double ampMax) { + this.ampMax = ampMax; + } + + public double getAmpMin() { + return ampMin; + } + + public void setAmpMin(double ampMin) { + this.ampMin = ampMin; + } + + public String getPitchConstant() { + return pitchConstant; + } + + public void setPitchConstant(String pitchConstant) { + this.pitchConstant = pitchConstant; + } + + public String getNoteOn(String id, int noteNum, int key, int velocity) { + return NOTE_FORMAT.format(new Object[] { id, noteNum, processKey(key), processVelocity( + velocity)}); + } + + public String getNoteOff(String id, int noteNum) { + return NOTE_OFF_FORMAT.format(new Object[] { id, noteNum}); + } + + protected String processKey(int key) { + String retVal = null; + + switch(keyMapping) { + case MIDI: + retVal = Integer.toString(key); + break; + case PCH: + retVal = convertPch(key); + break; + case OCT: + break; + case CONSTANT: + retVal = pitchConstant; + case TUNING_CPS: + break; + case TUNING_BLUE_PCH: + break; + } + + return retVal; + } + + protected String convertPch(int midiKey) { + int oct = midiKey / 12 + 3; + int key = midiKey % 12; + + return PCH_FORMAT.format(new Object[]{oct, key < 10 ? "0" + key : key}); + } + + protected String processVelocity(int key) { + String retVal = null; + + switch (velMapping) { + case MIDI: + retVal = Integer.toString(key); + break; + case CONSTANT: + retVal = ampConstant; + break; + case AMP: + retVal = Double.toString(((key * key) / 16239.0) * 30000); + break; + } + + return retVal; + } + + public MidiKeyMapping getKeyMapping() { + return keyMapping; + } + + public void setKeyMapping(MidiKeyMapping keyMapping) { + this.keyMapping = keyMapping; + } + + public MidiVelocityMapping getVelMapping() { + return velMapping; + } + + public void setVelMapping(MidiVelocityMapping velMapping) { + this.velMapping = velMapping; + } + +} Added: blue/trunk/blue-core/src/blue/midi/MidiKeyMapping.java =================================================================== --- blue/trunk/blue-core/src/blue/midi/MidiKeyMapping.java (rev 0) +++ blue/trunk/blue-core/src/blue/midi/MidiKeyMapping.java 2010-04-05 00:31:52 UTC (rev 4198) @@ -0,0 +1,48 @@ +/* + * blue - object composition environment for csound Copyright (c) 2000-2009 + * Steven Yi (ste...@gm...) + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2 of the License or (at your option) any + * later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING.LIB. If not, write to the Free + * Software Foundation Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 + * USA + */ +package blue.midi; + +/** + * + * @author syi + */ +public enum MidiKeyMapping { + + MIDI, PCH, OCT, CONSTANT, TUNING_BLUE_PCH, TUNING_CPS; + + @Override + public String toString() { + switch (this) { + case MIDI: + return "MIDI"; + case PCH: + return "Csound PCH"; + case OCT: + return "Csound OCT"; + case CONSTANT: + return "Constant"; + case TUNING_BLUE_PCH: + return "Tuning - bluePCH"; + case TUNING_CPS: + return "Tuning - CPS"; + } + return null; + } +} Added: blue/trunk/blue-core/src/blue/midi/MidiVelocityMapping.java =================================================================== --- blue/trunk/blue-core/src/blue/midi/MidiVelocityMapping.java (rev 0) +++ blue/trunk/blue-core/src/blue/midi/MidiVelocityMapping.java 2010-04-05 00:31:52 UTC (rev 4198) @@ -0,0 +1,42 @@ +/* + * blue - object composition environment for csound Copyright (c) 2000-2009 + * Steven Yi (ste...@gm...) + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2 of the License or (at your option) any + * later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING.LIB. If not, write to the Free + * Software Foundation Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 + * USA + */ + +package blue.midi; + +/** + * + * @author syi + */ +public enum MidiVelocityMapping { + MIDI, AMP, CONSTANT; + + @Override + public String toString() { + switch(this) { + case MIDI: + return "MIDI"; + case AMP: + return "Amp"; + case CONSTANT: + return "Constant"; + } + return null; + } +} Modified: blue/trunk/blue-midi/src/blue/midi/BlueMidiDevice.java =================================================================== --- blue/trunk/blue-midi/src/blue/midi/BlueMidiDevice.java 2010-04-05 00:27:43 UTC (rev 4197) +++ blue/trunk/blue-midi/src/blue/midi/BlueMidiDevice.java 2010-04-05 00:31:52 UTC (rev 4198) @@ -63,12 +63,13 @@ try { input = MidiSystem.getMidiDevice(info); input.open(); + cl.stateChanged(e); } catch (MidiUnavailableException ex) { input = null; throw ex; + } catch (IllegalArgumentException ex) { + input = null; } - - cl.stateChanged(e); } public boolean isOpen() { Modified: blue/trunk/blue-ui-core/src/blue/ui/core/Installer.java =================================================================== --- blue/trunk/blue-ui-core/src/blue/ui/core/Installer.java 2010-04-05 00:27:43 UTC (rev 4197) +++ blue/trunk/blue-ui-core/src/blue/ui/core/Installer.java 2010-04-05 00:31:52 UTC (rev 4198) @@ -22,18 +22,17 @@ import blue.BlueConstants; import blue.BluePlugin; import blue.BluePluginFactory; -import blue.BluePluginManager; import blue.BlueSystem; import blue.MainToolBar; import blue.WindowSettingManager; import blue.automation.ParameterTimeManagerFactory; import blue.automation.ParameterTimeManagerImpl; +import blue.midi.MidiInputManager; import blue.orchestra.BlueSynthBuilder; import blue.orchestra.BlueX7; import blue.orchestra.editor.InstrumentEditor; import blue.projects.BlueProject; import blue.projects.BlueProjectManager; -import blue.scripting.PythonProxy; import blue.settings.TextColorsSettings; import blue.soundObject.*; import blue.soundObject.editor.AudioFileEditor; @@ -53,6 +52,7 @@ import blue.soundObject.editor.SoundObjectEditor; import blue.soundObject.editor.TrackerEditor; import blue.soundObject.editor.ZakLineEditor; +import blue.ui.core.midi.MidiInputEngine; import blue.ui.core.orchestra.editor.BlueSynthBuilderEditor; import blue.ui.core.orchestra.editor.BlueX7Editor; import blue.ui.core.soundObject.renderer.AbstractLineObjectRenderer; @@ -72,8 +72,6 @@ import java.awt.Color; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; -import org.netbeans.api.progress.ProgressHandle; -import org.netbeans.api.progress.ProgressHandleFactory; import org.openide.modules.ModuleInstall; import org.openide.windows.WindowManager; import org.syntax.jedit.SyntaxStyle; @@ -144,6 +142,8 @@ // }.start(); // } // }); + + MidiInputManager.getInstance().addReceiver(MidiInputEngine.getInstance()); } private void setWindowTitle() { Modified: blue/trunk/blue-ui-core/src/blue/ui/core/midi/Bundle.properties =================================================================== --- blue/trunk/blue-ui-core/src/blue/ui/core/midi/Bundle.properties 2010-04-05 00:27:43 UTC (rev 4197) +++ blue/trunk/blue-ui-core/src/blue/ui/core/midi/Bundle.properties 2010-04-05 00:31:52 UTC (rev 4198) @@ -1,6 +1,11 @@ CTL_MidiInputPanelAction=MidiInputPanel CTL_MidiInputPanelTopComponent=MidiInputPanel Window HINT_MidiInputPanelTopComponent=This is a MidiInputPanel window -MidiInputPanelTopComponent.jRadioButton1.text=Instrument -MidiInputPanelTopComponent.jRadioButton2.text=Custom Note Template -MidiInputPanelTopComponent.jTextField1.text=jTextField1 +MidiInputProcessorPanel.jLabel1.text=Scale +MidiInputProcessorPanel.jLabel2.text=Key Mapping +MidiInputProcessorPanel.jLabel3.text=Constant +MidiInputProcessorPanel.jLabel5.text=Vel Mapping +MidiInputProcessorPanel.jLabel4.text=Constant +MidiInputProcessorPanel.ampConstantText.text=jTextField1 +MidiInputProcessorPanel.keyConstantText.text=jTextField1 +MidiInputPanelTopComponent.midiInputProcessorPanel1.TabConstraints.tabTitle=Realtime Added: blue/trunk/blue-ui-core/src/blue/ui/core/midi/MidiInputEngine.java =================================================================== --- blue/trunk/blue-ui-core/src/blue/ui/core/midi/MidiInputEngine.java (rev 0) +++ blue/trunk/blue-ui-core/src/blue/ui/core/midi/MidiInputEngine.java 2010-04-05 00:31:52 UTC (rev 4198) @@ -0,0 +1,124 @@ +/* + * blue - object composition environment for csound Copyright (c) 2000-2010 + * Steven Yi (ste...@gm...) + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2 of the License or (at your option) any + * later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING.LIB. If not, write to the Free + * Software Foundation Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 + * USA + */ +package blue.ui.core.midi; + +import blue.BlueData; +import blue.InstrumentAssignment; +import blue.midi.MidiInputProcessor; +import blue.projects.BlueProject; +import blue.projects.BlueProjectManager; +import blue.ui.core.blueLive.BlueLiveToolBar; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; +import java.util.ArrayList; +import javax.sound.midi.MidiMessage; +import javax.sound.midi.Receiver; +import javax.sound.midi.ShortMessage; + +/** + * + * @author syi + */ +public final class MidiInputEngine implements Receiver { + + private static MidiInputEngine instance = new MidiInputEngine(); + + private static BlueLiveToolBar toolbar; + + private ArrayList<InstrumentAssignment> arrangement; + + private MidiInputProcessor processor = null; + + public static MidiInputEngine getInstance() { + if (toolbar == null) { + toolbar = BlueLiveToolBar.getInstance(); + } + return instance; + } + + + private MidiInputEngine() { + BlueProjectManager.getInstance().addPropertyChangeListener(new PropertyChangeListener() { + + public void propertyChange(PropertyChangeEvent evt) { + if (BlueProjectManager.CURRENT_PROJECT.equals(evt. + getPropertyName())) { + reinitialize(); + } + } + }); + } + + protected void reinitialize() { + BlueProject project = BlueProjectManager.getInstance().getCurrentProject(); + BlueData data = null; + if (project != null) { + data = project.getData(); + arrangement = data.getArrangement().getArrangement(); + processor = data.getMidiInputProcessor(); + } + } + + public void send(MidiMessage message, long timeStamp) { + + if (message instanceof ShortMessage) { + + ShortMessage shortMsg = (ShortMessage) message; + int channel = shortMsg.getChannel(); + int noteNum = shortMsg.getData1(); + int velocity = shortMsg.getData2(); + + if(processor == null || arrangement == null || channel >= arrangement.size()) { + return; + } + + String id = arrangement.get(channel).arrangementId; + + String score = "i"; + + switch (shortMsg.getCommand()) { + case ShortMessage.NOTE_ON: + if (velocity > 0) { + score = processor.getNoteOn(id, noteNum, noteNum, + velocity); + } else { + score = processor.getNoteOff(id, noteNum); + } + + break; + case ShortMessage.NOTE_OFF: +// noteNum = shortMsg.getData1(); +// velocity = shortMsg.getData2(); + + score = processor.getNoteOff(id, noteNum); + + break; + } + + System.err.println(score); + toolbar.sendEvents(score); + } + + } + + public void close() { + throw new UnsupportedOperationException("Not supported yet."); + } +} Modified: blue/trunk/blue-ui-core/src/blue/ui/core/midi/MidiInputPanelTopComponent.form =================================================================== --- blue/trunk/blue-ui-core/src/blue/ui/core/midi/MidiInputPanelTopComponent.form 2010-04-05 00:27:43 UTC (rev 4197) +++ blue/trunk/blue-ui-core/src/blue/ui/core/midi/MidiInputPanelTopComponent.form 2010-04-05 00:31:52 UTC (rev 4198) @@ -16,93 +16,32 @@ <Layout> <DimensionLayout dim="0"> <Group type="103" groupAlignment="0" attributes="0"> - <Group type="102" alignment="0" attributes="0"> - <EmptySpace max="-2" attributes="0"/> - <Group type="103" groupAlignment="0" attributes="0"> - <Component id="jComboBox2" alignment="0" pref="194" max="32767" attributes="0"/> - <Component id="jRadioButton1" min="-2" max="-2" attributes="0"/> - <Component id="jRadioButton2" alignment="0" min="-2" max="-2" attributes="0"/> - <Group type="102" alignment="0" attributes="0"> - <EmptySpace min="21" pref="21" max="-2" attributes="0"/> - <Group type="103" groupAlignment="1" max="-2" attributes="0"> - <Component id="jTextField1" max="32767" attributes="0"/> - <Component id="jComboBox1" alignment="1" min="-2" pref="173" max="-2" attributes="1"/> - </Group> - </Group> - </Group> - <EmptySpace max="-2" attributes="0"/> - </Group> + <Component id="jTabbedPane1" alignment="0" pref="282" max="32767" attributes="0"/> </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="jComboBox2" min="-2" max="-2" attributes="0"/> - <EmptySpace type="unrelated" max="-2" attributes="0"/> - <Component id="jRadioButton1" min="-2" max="-2" attributes="0"/> - <EmptySpace max="-2" attributes="0"/> - <Component id="jComboBox1" min="-2" max="-2" attributes="0"/> - <EmptySpace max="-2" attributes="0"/> - <Component id="jRadioButton2" min="-2" max="-2" attributes="0"/> - <EmptySpace max="-2" attributes="0"/> - <Component id="jTextField1" min="-2" max="-2" attributes="0"/> - <EmptySpace pref="166" max="32767" attributes="0"/> - </Group> + <Component id="jTabbedPane1" alignment="0" max="32767" attributes="0"/> </Group> </DimensionLayout> </Layout> <SubComponents> - <Component class="javax.swing.JRadioButton" name="jRadioButton1"> - <Properties> - <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> - <ResourceString bundle="blue/ui/core/midi/Bundle.properties" key="MidiInputPanelTopComponent.jRadioButton1.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> - </Property> - </Properties> - </Component> - <Component class="javax.swing.JRadioButton" name="jRadioButton2"> - <Properties> - <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> - <ResourceString bundle="blue/ui/core/midi/Bundle.properties" key="MidiInputPanelTopComponent.jRadioButton2.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="jRadioButton2ActionPerformed"/> - </Events> - </Component> - <Component class="javax.swing.JComboBox" name="jComboBox1"> - <Properties> - <Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor"> - <StringArray count="4"> - <StringItem index="0" value="Item 1"/> - <StringItem index="1" value="Item 2"/> - <StringItem index="2" value="Item 3"/> - <StringItem index="3" value="Item 4"/> - </StringArray> - </Property> - </Properties> - </Component> - <Component class="javax.swing.JTextField" name="jTextField1"> - <Properties> - <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> - <ResourceString bundle="blue/ui/core/midi/Bundle.properties" key="MidiInputPanelTopComponent.jTextField1.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> - </Property> - </Properties> - </Component> - <Component class="javax.swing.JComboBox" name="jComboBox2"> - <Properties> - <Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor"> - <StringArray count="4"> - <StringItem index="0" value="Item 1"/> - <StringItem index="1" value="Item 2"/> - <StringItem index="2" value="Item 3"/> - <StringItem index="3" value="Item 4"/> - </StringArray> - </Property> - </Properties> - <Events> - <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jComboBox2ActionPerformed"/> - </Events> - </Component> + <Container class="javax.swing.JTabbedPane" name="jTabbedPane1"> + + <Layout class="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout"/> + <SubComponents> + <Component class="blue.ui.core.midi.MidiInputProcessorPanel" name="midiInputProcessorPanel1"> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout$JTabbedPaneConstraintsDescription"> + <JTabbedPaneConstraints tabName="Realtime"> + <Property name="tabTitle" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="blue/ui/core/midi/Bundle.properties" key="MidiInputPanelTopComponent.midiInputProcessorPanel1.TabConstraints.tabTitle" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </JTabbedPaneConstraints> + </Constraint> + </Constraints> + </Component> + </SubComponents> + </Container> </SubComponents> </Form> Modified: blue/trunk/blue-ui-core/src/blue/ui/core/midi/MidiInputPanelTopComponent.java =================================================================== --- blue/trunk/blue-ui-core/src/blue/ui/core/midi/MidiInputPanelTopComponent.java 2010-04-05 00:27:43 UTC (rev 4197) +++ blue/trunk/blue-ui-core/src/blue/ui/core/midi/MidiInputPanelTopComponent.java 2010-04-05 00:31:52 UTC (rev 4198) @@ -4,6 +4,11 @@ */ package blue.ui.core.midi; +import blue.BlueData; +import blue.projects.BlueProject; +import blue.projects.BlueProjectManager; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; import java.util.logging.Logger; import org.openide.util.NbBundle; import org.openide.windows.TopComponent; @@ -26,12 +31,37 @@ public MidiInputPanelTopComponent() { initComponents(); - setName(NbBundle.getMessage(MidiInputPanelTopComponent.class, "CTL_MidiInputPanelTopComponent")); - setToolTipText(NbBundle.getMessage(MidiInputPanelTopComponent.class, "HINT_MidiInputPanelTopComponent")); + setName(NbBundle.getMessage(MidiInputPanelTopComponent.class, + "CTL_MidiInputPanelTopComponent")); + setToolTipText(NbBundle.getMessage(MidiInputPanelTopComponent.class, + "HINT_MidiInputPanelTopComponent")); // setIcon(ImageUtilities.loadImage(ICON_PATH, true)); + BlueProjectManager.getInstance().addPropertyChangeListener(new PropertyChangeListener() { + + public void propertyChange(PropertyChangeEvent evt) { + if (BlueProjectManager.CURRENT_PROJECT.equals(evt. + getPropertyName())) { + reinitialize(); + } + } + }); + + reinitialize(); } + protected void reinitialize() { + BlueProject project = BlueProjectManager.getInstance(). + getCurrentProject(); + BlueData data = null; + if (project != null) { + data = project.getData(); + + midiInputProcessorPanel1.setMidiInputProcessor(data. + getMidiInputProcessor()); + } + } + /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is @@ -40,81 +70,27 @@ // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { - jRadioButton1 = new javax.swing.JRadioButton(); - jRadioButton2 = new javax.swing.JRadioButton(); - jComboBox1 = new javax.swing.JComboBox(); - jTextField1 = new javax.swing.JTextField(); - jComboBox2 = new javax.swing.JComboBox(); + jTabbedPane1 = new javax.swing.JTabbedPane(); + midiInputProcessorPanel1 = new blue.ui.core.midi.MidiInputProcessorPanel(); - org.openide.awt.Mnemonics.setLocalizedText(jRadioButton1, org.openide.util.NbBundle.getMessage(MidiInputPanelTopComponent.class, "MidiInputPanelTopComponent.jRadioButton1.text")); // NOI18N + jTabbedPane1.addTab(org.openide.util.NbBundle.getMessage(MidiInputPanelTopComponent.class, "MidiInputPanelTopComponent.midiInputProcessorPanel1.TabConstraints.tabTitle"), midiInputProcessorPanel1); // NOI18N - org.openide.awt.Mnemonics.setLocalizedText(jRadioButton2, org.openide.util.NbBundle.getMessage(MidiInputPanelTopComponent.class, "MidiInputPanelTopComponent.jRadioButton2.text")); // NOI18N - jRadioButton2.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - jRadioButton2ActionPerformed(evt); - } - }); - - jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); - - jTextField1.setText(org.openide.util.NbBundle.getMessage(MidiInputPanelTopComponent.class, "MidiInputPanelTopComponent.jTextField1.text")); // NOI18N - - jComboBox2.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); - jComboBox2.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - jComboBox2ActionPerformed(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() - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jComboBox2, 0, 194, Short.MAX_VALUE) - .addComponent(jRadioButton1) - .addComponent(jRadioButton2) - .addGroup(layout.createSequentialGroup() - .addGap(21, 21, 21) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) - .addComponent(jTextField1) - .addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, 173, javax.swing.GroupLayout.PREFERRED_SIZE)))) - .addContainerGap()) + .addComponent(jTabbedPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 282, Short.MAX_VALUE) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addContainerGap() - .addComponent(jComboBox2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(jRadioButton1) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jRadioButton2) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addContainerGap(166, Short.MAX_VALUE)) + .addComponent(jTabbedPane1) ); }// </editor-fold>//GEN-END:initComponents - - private void jRadioButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jRadioButton2ActionPerformed - // TODO add your handling code here: - }//GEN-LAST:event_jRadioButton2ActionPerformed - - private void jComboBox2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jComboBox2ActionPerformed - // TODO add your handling code here: - }//GEN-LAST:event_jComboBox2ActionPerformed - // Variables declaration - do not modify//GEN-BEGIN:variables - private javax.swing.JComboBox jComboBox1; - private javax.swing.JComboBox jComboBox2; - private javax.swing.JRadioButton jRadioButton1; - private javax.swing.JRadioButton jRadioButton2; - private javax.swing.JTextField jTextField1; + private javax.swing.JTabbedPane jTabbedPane1; + private blue.ui.core.midi.MidiInputProcessorPanel midiInputProcessorPanel1; // End of variables declaration//GEN-END:variables + /** * Gets default instance. Do not use directly: reserved for *.settings files only, * i.e. deserialization routines; otherwise you could get a non-deserialized instance. @@ -131,7 +107,8 @@ * Obtain the MidiInputPanelTopComponent instance. Never call {@link #getDefault} directly! */ public static synchronized MidiInputPanelTopComponent findInstance() { - TopComponent win = WindowManager.getDefault().findTopComponent(PREFERRED_ID); + TopComponent win = WindowManager.getDefault().findTopComponent( + PREFERRED_ID); if (win == null) { Logger.getLogger(MidiInputPanelTopComponent.class.getName()).warning( "Cannot find " + PREFERRED_ID + " component. It will not be located properly in the window system."); Added: blue/trunk/blue-ui-core/src/blue/ui/core/midi/MidiInputProcessorPanel.form =================================================================== --- blue/trunk/blue-ui-core/src/blue/ui/core/midi/MidiInputProcessorPanel.form (rev 0) +++ blue/trunk/blue-ui-core/src/blue/ui/core/midi/MidiInputProcessorPanel.form 2010-04-05 00:31:52 UTC (rev 4198) @@ -0,0 +1,166 @@ +<?xml version="1.0" encoding="UTF-8" ?> + +<Form version="1.5" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JPanelFormInfo"> + <AuxValues> + <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/> + <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/> + <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="true"/> + <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="2"/> + <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="jSeparator1" alignment="0" pref="192" max="32767" attributes="0"/> + <Group type="102" alignment="0" attributes="0"> + <Group type="103" groupAlignment="0" attributes="0"> + <Component id="jLabel2" min="-2" max="-2" attributes="0"/> + <Component id="jLabel1" min="-2" pref="31" max="-2" attributes="0"/> + <Component id="jLabel3" alignment="0" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace type="unrelated" max="-2" attributes="0"/> + <Group type="103" groupAlignment="0" attributes="0"> + <Component id="keyMapComboBox" alignment="0" pref="121" max="32767" attributes="0"/> + <Component id="keyConstantText" alignment="0" pref="121" max="32767" attributes="0"/> + </Group> + </Group> + <Group type="102" alignment="0" attributes="0"> + <Group type="103" groupAlignment="0" attributes="0"> + <Component id="jLabel4" min="-2" max="-2" attributes="0"/> + <Component id="jLabel5" min="-2" pref="61" max="-2" attributes="0"/> + </Group> + <EmptySpace type="unrelated" max="-2" attributes="0"/> + <Group type="103" groupAlignment="0" attributes="0"> + <Component id="ampMapComboBox" alignment="0" pref="121" max="32767" attributes="0"/> + <Component id="ampConstantText" alignment="0" pref="121" max="32767" attributes="0"/> + </Group> + </Group> + </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"/> + <Group type="103" groupAlignment="3" attributes="0"> + <Component id="jLabel2" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="keyMapComboBox" alignment="3" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace type="unrelated" max="-2" attributes="0"/> + <Component id="jLabel1" min="-2" max="-2" attributes="1"/> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="3" attributes="0"> + <Component id="jLabel3" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="keyConstantText" alignment="3" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace max="-2" attributes="0"/> + <Component id="jSeparator1" min="-2" pref="10" max="-2" attributes="0"/> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="3" attributes="0"> + <Component id="ampMapComboBox" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="jLabel5" alignment="3" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="3" attributes="0"> + <Component id="ampConstantText" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="jLabel4" alignment="3" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace min="-2" pref="180" max="-2" attributes="0"/> + </Group> + </Group> + </DimensionLayout> + </Layout> + <SubComponents> + <Component class="javax.swing.JLabel" name="jLabel1"> + <Properties> + <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="blue/ui/core/midi/Bundle.properties" key="MidiInputProcessorPanel.jLabel1.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="jLabel2"> + <Properties> + <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="blue/ui/core/midi/Bundle.properties" key="MidiInputProcessorPanel.jLabel2.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JComboBox" name="keyMapComboBox"> + <Properties> + <Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor"> + <StringArray count="4"> + <StringItem index="0" value="Item 1"/> + <StringItem index="1" value="Item 2"/> + <StringItem index="2" value="Item 3"/> + <StringItem index="3" value="Item 4"/> + </StringArray> + </Property> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="keyMapComboBoxActionPerformed"/> + </Events> + </Component> + <Component class="javax.swing.JLabel" name="jLabel3"> + <Properties> + <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="blue/ui/core/midi/Bundle.properties" key="MidiInputProcessorPanel.jLabel3.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JTextField" name="keyConstantText"> + <Properties> + <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="blue/ui/core/midi/Bundle.properties" key="MidiInputProcessorPanel.keyConstantText.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JSeparator" name="jSeparator1"> + </Component> + <Component class="javax.swing.JTextField" name="ampConstantText"> + <Properties> + <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="blue/ui/core/midi/Bundle.properties" key="MidiInputProcessorPanel.ampConstantText.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="jLabel4"> + <Properties> + <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="blue/ui/core/midi/Bundle.properties" key="MidiInputProcessorPanel.jLabel4.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="jLabel5"> + <Properties> + <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="blue/ui/core/midi/Bundle.properties" key="MidiInputProcessorPanel.jLabel5.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JComboBox" name="ampMapComboBox"> + <Properties> + <Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor"> + <StringArray count="4"> + <StringItem index="0" value="Item 1"/> + <StringItem index="1" value="Item 2"/> + <StringItem index="2" value="Item 3"/> + <StringItem index="3" value="Item 4"/> + </StringArray> + </Property> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="ampMapComboBoxActionPerformed"/> + </Events> + </Component> + </SubComponents> +</Form> Added: blue/trunk/blue-ui-core/src/blue/ui/core/midi/MidiInputProcessorPanel.java =================================================================== --- blue/trunk/blue-ui-core/src/blue/ui/core/midi/MidiInputProcessorPanel.java (rev 0) +++ blue/trunk/blue-ui-core/src/blue/ui/core/midi/MidiInputProcessorPanel.java 2010-04-05 00:31:52 UTC (rev 4198) @@ -0,0 +1,210 @@ +/* + * blue - object composition environment for csound Copyright (c) 2000-2009 + * Steven Yi (ste...@gm...) + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2 of the License or (at your option) any + * later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING.LIB. If not, write to the Free + * Software Foundation Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 + * USA + */ + +/* + * MidiInputProcessorPanel.java + * + * Created on Apr 4, 2010, 6:15:34 PM + */ + +package blue.ui.core.midi; + +import blue.event.SimpleDocumentListener; +import blue.midi.MidiInputProcessor; +import blue.midi.MidiKeyMapping; +import blue.midi.MidiVelocityMapping; +import javax.swing.DefaultComboBoxModel; +import javax.swing.event.DocumentEvent; + +/** + * + * @author syi + */ +public class MidiInputProcessorPanel extends javax.swing.JPanel { + private MidiInputProcessor processor; + + /** Creates new form MidiInputProcessorPanel */ + public MidiInputProcessorPanel() { + initComponents(); + keyMapComboBox.setModel(new DefaultComboBoxModel(MidiKeyMapping.values())); + ampMapComboBox.setModel(new DefaultComboBoxModel(MidiVelocityMapping.values())); + + keyConstantText.getDocument().addDocumentListener(new SimpleDocumentListener() { + + @Override + public void documentChanged(DocumentEvent e) { + if (processor != null) { + processor.setPitchConstant(keyConstantText.getText()); + } + } + }); + + ampConstantText.getDocument().addDocumentListener(new SimpleDocumentListener() { + + @Override + public void documentChanged(DocumentEvent e) { + if (processor != null) { + processor.setAmpConstant(ampConstantText.getText()); + } + } + }); + } + + public void setMidiInputProcessor(MidiInputProcessor processor) { + this.processor = null; + + keyConstantText.setText(processor.getPitchConstant()); + ampConstantText.setText(processor.getAmpConstant()); + + keyMapComboBox.setSelectedItem(processor.getKeyMapping()); + ampMapComboBox.setSelectedItem(processor.getVelMapping()); + + this.processor = processor; + } + + /** 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() { + + jLabel1 = new javax.swing.JLabel(); + jLabel2 = new javax.swing.JLabel(); + keyMapComboBox = new javax.swing.JComboBox(); + jLabel3 = new javax.swing.JLabel(); + keyConstantText = new javax.swing.JTextField(); + jSeparator1 = new javax.swing.JSeparator(); + ampConstantText = new javax.swing.JTextField(); + jLabel4 = new javax.swing.JLabel(); + jLabel5 = new javax.swing.JLabel(); + ampMapComboBox = new javax.swing.JComboBox(); + + jLabel1.setText(org.openide.util.NbBundle.getMessage(MidiInputProcessorPanel.class, "MidiInputProcessorPanel.jLabel1.text")); // NOI18N + + jLabel2.setText(org.openide.util.NbBundle.getMessage(MidiInputProcessorPanel.class, "MidiInputProcessorPanel.jLabel2.text")); // NOI18N + + keyMapComboBox.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); + keyMapComboBox.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + keyMapComboBoxActionPerformed(evt); + } + }); + + jLabel3.setText(org.openide.util.NbBundle.getMessage(MidiInputProcessorPanel.class, "MidiInputProcessorPanel.jLabel3.text")); // NOI18N + + keyConstantText.setText(org.openide.util.NbBundle.getMessage(MidiInputProcessorPanel.class, "MidiInputProcessorPanel.keyConstantText.text")); // NOI18N + + ampConstantText.setText(org.openide.util.NbBundle.getMessage(MidiInputProcessorPanel.class, "MidiInputProcessorPanel.ampConstantText.text")); // NOI18N + + jLabel4.setText(org.openide.util.NbBundle.getMessage(MidiInputProcessorPanel.class, "MidiInputProcessorPanel.jLabel4.text")); // NOI18N + + jLabel5.setText(org.openide.util.NbBundle.getMessage(MidiInputProcessorPanel.class, "MidiInputProcessorPanel.jLabel5.text")); // NOI18N + + ampMapComboBox.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); + ampMapComboBox.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + ampMapComboBoxActionPerformed(evt); + } + }); + + org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(this); + this.setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(layout.createSequentialGroup() + .addContainerGap() + .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(jSeparator1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 192, Short.MAX_VALUE) + .add(layout.createSequentialGroup() + .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(jLabel2) + .add(jLabel1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 31, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(jLabel3)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED) + .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(keyMapComboBox, 0, 121, Short.MAX_VALUE) + .add(keyConstantText, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 121, Short.MAX_VALUE))) + .add(layout.createSequentialGroup() + .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(jLabel4) + .add(jLabel5, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 61, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED) + .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(ampMapComboBox, 0, 121, Short.MAX_VALUE) + .add(ampConstantText, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 121, Short.MAX_VALUE)))) + .addContainerGap()) + ); + layout.setVerticalGroup( + layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(layout.createSequentialGroup() + .addContainerGap() + .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(jLabel2) + .add(keyMapComboBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED) + .add(jLabel1) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(jLabel3) + .add(keyConstantText, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(jSeparator1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 10, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(ampMapComboBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(jLabel5)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(ampConstantText, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(jLabel4)) + .add(180, 180, 180)) + ); + }// </editor-fold>//GEN-END:initComponents + + private void keyMapComboBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_keyMapComboBoxActionPerformed + if (this.processor != null) { + processor.setKeyMapping((MidiKeyMapping) keyMapComboBox.getSelectedItem()); + } + }//GEN-LAST:event_keyMapComboBoxActionPerformed + + private void ampMapComboBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ampMapComboBoxActionPerformed + if (this.processor != null) { + processor.setVelMapping((MidiVelocityMapping) ampMapComboBox.getSelectedItem()); + } + }//GEN-LAST:event_ampMapComboBoxActionPerformed + + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JTextField ampConstantText; + private javax.swing.JComboBox ampMapComboBox; + private javax.swing.JLabel jLabel1; + private javax.swing.JLabel jLabel2; + private javax.swing.JLabel jLabel3; + private javax.swing.JLabel jLabel4; + private javax.swing.JLabel jLabel5; + private javax.swing.JSeparator jSeparator1; + private javax.swing.JTextField keyConstantText; + private javax.swing.JComboBox keyMapComboBox; + // End of variables declaration//GEN-END:variables + +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |