[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