package jmsltestsuite; import java.awt.GridLayout; import com.didkovsky.portview.PVFrame; import com.didkovsky.portview.awt.ViewFactoryAWT; import com.didkovsky.portview.swing.ViewFactorySwing; import com.softsynth.jmsl.JMSL; import com.softsynth.jmsl.score.Score; import com.softsynth.jmsl.view.PVFrameAdapter; /** * Open up a Frame and display two different scores in the same frame * * @author Nick Didkovsky, March 21, 2002, (c) 2002 Nick Didkovsky, all rights * reserved */ public class MultipleScoresDemo2 { /** @return a new Score with a whole note in it */ public Score gimmeScore() { Score score = new Score(1, 1024, 200); score.addMeasure(); score.addNote(4, 60, 0.5, 3); return score; } public static void main(String args[]) { boolean useSwing = true; if (useSwing) { JMSL.setViewFactory(new ViewFactorySwing()); } else { JMSL.setViewFactory(new ViewFactoryAWT()); } PVFrame f = new PVFrameAdapter("Score canvases"); f.setSize(1100, 800); f.setFrameLayout(new GridLayout(0, 1)); f.addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent e) { System.exit(0); } }); PVFrame f2 = new PVFrameAdapter("Score controls"); f2.setFrameLayout(new GridLayout(0, 1, 10, 10)); // critical!!! Each new Score must own its own ScoreCanvas for rendering Score.useSharedCanvas(false); MultipleScoresDemo2 test = new MultipleScoresDemo2(); for (int i = 0; i < 2; i++) { Score score = test.gimmeScore(); // set up canvas listeners, set canvas size, etc score.ownCanvas(); // add its rendering canvas to our frame f.add(score.getScoreCanvas().getComponent()); f2.add(score.getControlPanel().getComponent()); } f.validate(); f2.pack(); f.setVisible(true); f2.setVisible(true); } }