[jmsl] EditManager vs. ScoreCanvas
jmsl at music.columbia.edu
jmsl at music.columbia.edu
Sat Nov 29 13:31:12 EST 2008
Hi Nick,
I've been looking at EditManager and ScoreCanvas and trying to figure
out which is doing what. I'm assuming there's some interplay since
there's parallel methods?
It seems that ScoreCanvas doesn't really have any hooks back into
the score on its own. (as in there's no way to grab a note (unless
there's a cursorNote) to get information about the score)
I made up a couple of stub classes just to try to see what was going
on. One particularly interesting thing:
When I click the score, the release of the mouse registers for the
ScoreCanvas but not for EditManager (though it does when I drag on the
score). If I disable the super portion of
ScoreCanvas.handleMouseReleased, EditManager's scoreCanvasReleased()
method still doesn't fire. (i.e. the release is not consumed by
scoreCanvas).
Here's the output from this:
ScoreCanvas: Pressed java.awt.Point[x=236,y=64]
EditManager: Pressed: java.awt.Point[x=236,y=64]
ScoreCanvas: Released java.awt.Point[x=236,y=64]
ScoreCanvas: Clicked java.awt.Point[x=236,y=64]
EditManager: Clicked: java.awt.Point[x=236,y=64]
EditManager: FindClosestStaff: java.awt.Point[x=236,y=64]
EditManager: FindClosestNote: java.awt.Point[x=236,y=64]
ScoreCanvas: Drawing Mouse Selection
Would it be possible to have the javadocs expand a bit more on what's
going on between EditManager and ScoreCanvasAdapter/ScoreCanvasSwing?
thanks,
Peter
public class ScratchEditManager extends EditManager {
public static void main(String[] args) {
JMSLRandom.randomize();
Score score = new Score(2, 700, 700);
Score.setAntiAliasingHints(true);
Score.useSharedCanvas(false); // !!!
ScratchEditManager manager = new ScratchEditManager(score,
score.getScoreEditPanel());
ScratchScoreCanvas canvas =
new ScratchScoreCanvas(score.getLayoutWidth(),
score.getLayoutHeight());
score.setScoreCanvas(canvas);
canvas.removeAllScoreCanvasListeners();
canvas.addScoreCanvasListener(manager);
score.addMeasures(3, 3, 4);
EditManager.setAutoBeam(true);
for (int j = 0; j < 2; j++) {
score.setCurrentMeasureNumber(0);
score.setCurrentStaffNumber(j);
int lastVal = 72;
for (int i = 0; i < 20; i++) {
lastVal += JMSLRandom.choose(-3, 4);
score.addNote(NoteFactory.makeNote(0.5, lastVal, 1., 0.5));
}
}
JFrame frame = new JFrame();
frame.add(canvas.getComponent());
frame.addWindowStateListener(new WindowAdapter() {
@Override
public void windowClosed(WindowEvent e) {
JMSL.closeMusicDevices();
System.exit(0);
}
});
frame.pack();
frame.setVisible(true);
}
/**
*@paramscore
*@paramesp
*/
public ScratchEditManager(Score score, EditStateProvider esp) {
super(score, esp);
}
/*
* (non-Javadoc)
*
* @see
*
com.softsynth.jmsl.score.EditManager#scoreCanvasReady(com.softsynth.jmsl
* .score.ScoreCanvas)
*/
@Override
public void scoreCanvasReady(ScoreCanvas canvas) {
// System.out.println("EditManager:\tCanvasReady:\t");
super.scoreCanvasReady(canvas);
}
/*
* (non-Javadoc)
*
* @see
*
com.softsynth.jmsl.score.EditManager#scoreCanvasDisplayedImageReady(com
* .softsynth.jmsl.score.Score, com.softsynth.jmsl.score.ScoreCanvas,
* java.awt.Image)
*/
@Override
public void scoreCanvasDisplayedImageReady(Score score, ScoreCanvas
canvas, Image image) {
// System.out.println("EditManager:\t CanvasDisplayedImageReady:\t");
super.scoreCanvasDisplayedImageReady(score, canvas, image);
}
/*
* (non-Javadoc)
*
* @see
*
com.softsynth.jmsl.score.EditManager#scoreCanvasKeyTyped(com.softsynth
* .jmsl.score.ScoreCanvas, java.awt.event.KeyEvent)
*/
@Override
public void scoreCanvasKeyTyped(ScoreCanvas canvas, KeyEvent evt) {
System.out.println("EditManager:\tKeyTyped:\t" + evt.getKeyChar());
super.scoreCanvasKeyTyped(canvas, evt);
}
/*
* (non-Javadoc)
*
* @see
*
com
.softsynth.jmsl.score.EditManager#scoreCanvasKeyReleased(com.softsynth
* .jmsl.score.ScoreCanvas, java.awt.event.KeyEvent)
*/
@Override
public void scoreCanvasKeyReleased(ScoreCanvas canvas, KeyEvent evt) {
System.out.println("EditManager:\t KeyReleased:\t" +
evt.getKeyChar());
super.scoreCanvasKeyReleased(canvas, evt);
}
/*
* (non-Javadoc)
*
* @see
*
com.softsynth.jmsl.score.EditManager#scoreCanvasRectangleSelected(com
* .softsynth.jmsl.score.ScoreCanvas, java.awt.Point, java.awt.Point)
*/
@Override
public void scoreCanvasRectangleSelected(ScoreCanvas canvas, Point
p1, Point p2) {
System.out.println("EditManager:\tRectangleSelected:\t" + p1 + "\t"
+ p2);
super.scoreCanvasRectangleSelected(canvas, p1, p2);
}
/**
*CallsfindClosestStaff.
*/
/*
* (non-Javadoc)
*
* @see
*
com.softsynth.jmsl.score.EditManager#scoreCanvasClicked(com.softsynth
* .jmsl.score.ScoreCanvas, java.awt.Point, java.awt.event.MouseEvent)
*/
@Override
public void scoreCanvasClicked(ScoreCanvas canvas, Point p,
MouseEvent evt) {
System.out.println("EditManager:\tClicked:\t" + p);
super.scoreCanvasClicked(canvas, p, evt);
}
/*
* (non-Javadoc)
*
* @see
*
com.softsynth.jmsl.score.EditManager#scoreCanvasDragged(com.softsynth
* .jmsl.score.ScoreCanvas, java.awt.Point, java.awt.event.MouseEvent)
*/
@Override
public void scoreCanvasDragged(ScoreCanvas canvas, Point p,
MouseEvent evt) {
System.out.println("EditManager:\tDragged:\t" + p);
super.scoreCanvasDragged(canvas, p, evt);
}
/*
* (non-Javadoc)
*
* @see
*
com.softsynth.jmsl.score.EditManager#scoreCanvasPressed(com.softsynth
* .jmsl.score.ScoreCanvas, java.awt.Point, java.awt.event.MouseEvent)
*/
@Override
public void scoreCanvasPressed(ScoreCanvas canvas, Point p,
MouseEvent evt) {
System.out.println("EditManager:\tPressed:\t" + p);
super.scoreCanvasPressed(canvas, p, evt);
}
/*
* (non-Javadoc)
*
* @see
*
com.softsynth.jmsl.score.EditManager#scoreCanvasReleased(com.softsynth
* .jmsl.score.ScoreCanvas, java.awt.Point, java.awt.event.MouseEvent)
*/
@Override
public void scoreCanvasReleased(ScoreCanvas canvas, Point p,
MouseEvent evt) {
System.out.println("EditManager:\tReleased:\t" + p);
super.scoreCanvasReleased(canvas, p, evt);
}
/*
* (non-Javadoc)
*
* @see
*
com.softsynth.jmsl.score.EditManager#findSelectedStaff(java.awt.Point)
*/
@Override
public Staff findSelectedStaff(Point p) {
System.out.println("EditManager:\tFindClosestStaff:\t" + p);
return super.findSelectedStaff(p);
}
/*
* (non-Javadoc)
*
* @see
com.softsynth.jmsl.score.EditManager#findClosestNote(java.awt.Point,
* int, double)
*/
@Override
public Note findClosestNote(Point p, int editMode, double radius) {
System.out.println("EditManager:\tFindClosestNote:\t" + p);
return super.findClosestNote(p, editMode, radius);
}
}
public class ScratchScoreCanvas extends ScoreCanvasSwing {
/**
*@paramlayoutWidth
*@paramlayoutHeight
*/
public ScratchScoreCanvas(int layoutWidth, int layoutHeight) {
super(layoutWidth, layoutHeight);
}
/*
* (non-Javadoc)
*
* @see
*
com.softsynth.jmsl.score.ScoreCanvasAdapter#handleMouseClick(java.awt
* .event.MouseEvent)
*/
@Override
public void handleMouseClick(MouseEvent evt) {
System.out.println("ScoreCanvas:\tClicked\t" + evt.getPoint());
super.handleMouseClick(evt);
}
/*
* (non-Javadoc)
*
* @see
*
com.softsynth.jmsl.score.ScoreCanvasAdapter#handleMousePressed(java.awt
* .event.MouseEvent)
*/
@Override
public void handleMousePressed(MouseEvent evt) {
System.out.println("ScoreCanvas:\tPressed\t" + evt.getPoint());
super.handleMousePressed(evt);
}
/*
* (non-Javadoc)
*
* @see
com.softsynth.jmsl.score.ScoreCanvasAdapter#handleMouseDrag(int,
* int, java.awt.event.MouseEvent)
*/
@Override
public void handleMouseDrag(int x, int y, MouseEvent evt) {
System.out.println("ScoreCanvas:\tDragged\t" + evt.getPoint());
super.handleMouseDrag(x, y, evt);
}
/*
* (non-Javadoc)
*
* @see
*
com.softsynth.jmsl.score.ScoreCanvasAdapter#handleMouseReleased(java.
* awt.event.MouseEvent)
*/
@Override
public void handleMouseReleased(MouseEvent evt) {
System.out.println("ScoreCanvas:\tReleased\t" + evt.getPoint());
super.handleMouseReleased(evt);
}
/*
* (non-Javadoc)
*
* @see
*
com.softsynth.jmsl.score.ScoreCanvasAdapter#drawMouseSelection(java.awt
* .Graphics)
*/
@Override
protected void drawMouseSelection(Graphics g) {
System.out.println("\tScoreCanvas:\tDrawing Mouse Selection");
super.drawMouseSelection(g);
}
/*
* (non-Javadoc)
*
* @see
*
com.softsynth.jmsl.score.ScoreCanvasAdapter#keyPressed(java.awt.event
* .KeyEvent)
*/
@Override
public void keyPressed(KeyEvent evt) {
System.out.println("ScoreCanvas:\tkeyEvent:\t" + evt.getKeyChar());
super.keyPressed(evt);
}
/*
* (non-Javadoc)
*
* @see
*
com.softsynth.jmsl.score.ScoreCanvasAdapter#keyReleased(java.awt.event
* .KeyEvent)
*/
@Override
public void keyReleased(KeyEvent evt) {
System.out.println("ScoreCanvas:\tkeyEvent:\t" + evt.getKeyChar());
super.keyReleased(evt);
}
/*
* (non-Javadoc)
*
* @see
*
com
.softsynth
.jmsl.score.ScoreCanvasAdapter#keyTyped(java.awt.event.KeyEvent
* )
*/
@Override
public void keyTyped(KeyEvent evt) {
System.out.println("ScoreCanvas:\tkeyTyped:\t" + evt.getKeyChar());
super.keyTyped(evt);
}
}
More information about the jmsl
mailing list