[jmsl] EditManager question
jmsl at music.columbia.edu
jmsl at music.columbia.edu
Fri Jan 11 02:34:31 EST 2008
Hi all,
I've been looking through the documentation, and I can't figure out
how to copy one measure into another measure (possibly on another
staff) without faking mouse-clicks, which is definitely kludge-ish.
It looks like it should be easy with EditManager, but I'm having
problems. Here's a demonstration.
What all is EditManager doing when scoreCanvasClicked() is called?
(that doesn't happen with setCurrentMeasure, etc.)
thanks,
Peter McCulloch
package demos;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import com.softsynth.jmsl.JMSL;
import com.softsynth.jmsl.score.CopyBuffer;
import com.softsynth.jmsl.score.Score;
import com.softsynth.jmsl.score.ScoreFrame;
public class EditManagerProblem {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Score score = new Score(2);
score.addMeasures(10, 4, 4);
score.setCurrentMeasureNumber(0);
score.setCurrentStaffNumber(0);
for (int i = 0; i < 4; i++) {
score.addNote(1., 60. + i, 0.5, 0.8);
}
score.setSelectedMeasure(score.getMeasure(0));
score.setCurrentMeasureNumber(0);
score.setSelectedStaff(score.getMeasure(0).getStaff(0));
score.getEditManager().selectAllInStaff();
CopyBuffer cb = new CopyBuffer();
score.getEditManager().copy(cb);
ScoreFrame frame = new ScoreFrame();
frame.addScore(score);
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
JMSL.closeMusicDevices();
System.exit(0);
}
});
frame.setVisible(true);
boolean useManufactured = false;
if (useManufactured) {
score.getEditManager().scoreCanvasClicked(score.getScoreCanvas(),
score.getSelectedStaff().getDrawingAnchor(),
new MouseEvent(score.getScoreCanvas().getComponent(), 0, 0, 0, 0,
0, 0, false));
} else {
// Try to copy from first measure into second measure
score.setCurrentMeasureNumber(1);
score.setSelectedMeasure(score.getMeasure(1));
score.setCurrentStaffNumber(0);
score.setSelectedStaff(score.getMeasure(1).getStaff(0));
score.getMeasure(1).getStaff(0).getActiveTrack().setInsertionIndex
(0);
}
score.getEditManager().freeflowPaste(cb);
}
}
More information about the jmsl
mailing list