/* * Created on Jun 24, 2004 * */ package jmslexamples.jsyn; import java.awt.BorderLayout; import java.awt.event.*; import com.didkovsky.portview.PVButton; import com.didkovsky.portview.PVFrame; import com.didkovsky.portview.swing.ViewFactorySwing; import com.softsynth.jmsl.*; import com.softsynth.jmsl.jsyn.JSynMusicDevice; import com.softsynth.jmsl.jsyn.SynthNoteAllPortsInstrument; import com.softsynth.jmsl.view.DimensionNameSpaceValuesEditorPanel; import com.softsynth.jmsl.view.PVFrameAdapter; import com.softsynth.jsyn.circuits.FilteredSawtoothBL; /** * This class has a double[] that can be edited by a DimensionNameSpaceEditPanel * * @author Nick Didkovsky, email: didkovn@mail.rockefeller.edu, (c) 2004 Nick * Didkovsky, all rights reserved. * */ public class DimensionNameSpaceEditorExample implements DimensionNameSpaceEditable { private DimensionNameSpace dimNameSpace; private double[] data; /** * Pass in a dimensionNameSpace and allocate an array for it. Set array * values to default values from dimnamespace */ public void setDimensionNameSpace(DimensionNameSpace d) { System.out.println("setDimensionNameSpace()"); dimNameSpace = d; setDoubleArray(new double[dimNameSpace.dimension()]); for (int i = 0; i < dimNameSpace.dimension(); i++) { data[i] = dimNameSpace.getDefault(i); } } public DimensionNameSpace getDimensionNameSpace() { System.out.println("getDimensionNameSpace()"); return dimNameSpace; } /** * This is called every time a fader is moved in DimensionNameSpaceEditPanel * so the new value can be set */ public double[] getDoubleArray() { System.out.println("getDoubleArray()"); return data; } public void setDoubleArray(double[] dar) { System.out.println("setDoubleArray()"); this.data = dar; } public static void main(String args[]) { JMSL.setViewFactory(new ViewFactorySwing()); PVFrame f = new PVFrameAdapter("DimensionNameSpaceEditorExample"); f.setFrameLayout(new BorderLayout()); f.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { JMSL.closeMusicDevices(); System.exit(0); } }); MusicDevice dev = JSynMusicDevice.instance(); dev.open(); SynthNoteAllPortsInstrument ins = new SynthNoteAllPortsInstrument(8, FilteredSawtoothBL.class.getName()); DimensionNameSpaceValuesEditorPanel p = new DimensionNameSpaceValuesEditorPanel(ins.getDimensionNameSpace()); final DimensionNameSpaceEditorExample dimensionNameSpaceEditorExample = new DimensionNameSpaceEditorExample(); dimensionNameSpaceEditorExample.setDimensionNameSpace(ins.getDimensionNameSpace()); p.addDimensionNameSpaceEditable(dimensionNameSpaceEditorExample); f.add(BorderLayout.NORTH, p.getComponent()); PVButton showArrButton = JMSL.getViewFactory().createButton("Show array contents"); showArrButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { JMSL.printDoubleArray(dimensionNameSpaceEditorExample.getDoubleArray()); } }); f.add(BorderLayout.SOUTH, showArrButton.getComponent()); f.pack(); f.setVisible(true); } }