From fb491f02df0fa9cf8e7fb8511885e51e5660a21d Mon Sep 17 00:00:00 2001 From: Einar Pehrson Date: Tue, 13 May 2003 15:42:32 +0000 Subject: [PATCH] Fixed the scrolling on play!!! --- MooToolbar.java | 54 +++++++++++++++++++++++++++++++------------------ MooView.java | 1 + Moosique.java | 2 +- 3 files changed, 36 insertions(+), 21 deletions(-) diff --git a/MooToolbar.java b/MooToolbar.java index 92bf345..a3b250a 100644 --- a/MooToolbar.java +++ b/MooToolbar.java @@ -65,7 +65,6 @@ public class MooToolbar extends JToolBar { progIndPanel.add(beatsValue); progIndPanel.add(ticksValue); add(progIndPanel); - } /** @@ -73,14 +72,30 @@ public class MooToolbar extends JToolBar { * @param tickPosition the tick position to visualize */ public void updateProgInd(long tickPosition) { - int ticksPerBeat = Moosique.getSequence().getResolution(); - int beatsPerMeasure = 4; - long measures = tickPosition / (beatsPerMeasure * ticksPerBeat); - long beats = (tickPosition - measures * beatsPerMeasure * ticksPerBeat) / ticksPerBeat; - long ticks = tickPosition - measures * beatsPerMeasure * ticksPerBeat - beats * ticksPerBeat; - measureValue.setText(Long.toString(1 + measures)); - beatsValue.setText(Long.toString(1 + beats)); - ticksValue.setText(Long.toString(1 + ticks)); + if (tickPosition == 0) { + resetProgInd(); + } else { + // Otherwise, calculates the current song position in measures, beats and ticks. + int ticksPerBeat = Moosique.getSequence().getResolution(); + int beatsPerMeasure = 4; + long measures = tickPosition / (beatsPerMeasure * ticksPerBeat); + long beats = (tickPosition - measures * beatsPerMeasure * ticksPerBeat) / ticksPerBeat; + long ticks = tickPosition - measures * beatsPerMeasure * ticksPerBeat - beats * ticksPerBeat; + measureValue.setText(Long.toString(1 + measures)); + beatsValue.setText(Long.toString(1 + beats)); + ticksValue.setText(Long.toString(1 + ticks)); + } + } + + /* + * Resets the progress indicator + */ + private void resetProgInd() { + measureValue.setText("1"); + beatsValue.setText("1"); + ticksValue.setText("1"); + playpause.setIcon(playIcon); + playpause.setToolTipText("Play"); } /* @@ -114,20 +129,19 @@ public class MooToolbar extends JToolBar { class MooMouseAdapter extends MouseAdapter { public void mouseClicked(MouseEvent e) { if (((JButton)e.getSource()).getToolTipText() == "Play") { - playpause.setIcon(pauseIcon); - playpause.setToolTipText("Pause"); - Moosique.play(); + playpause.setIcon(pauseIcon); + playpause.setToolTipText("Pause"); + Moosique.play(); } else if (((JButton)e.getSource()).getToolTipText() == "Pause") { - playpause.setIcon(playIcon); - playpause.setToolTipText("Resume"); - Moosique.pause(); + playpause.setIcon(playIcon); + playpause.setToolTipText("Resume"); + Moosique.pause(); } else if (((JButton)e.getSource()).getToolTipText() == "Resume") { - playpause.setIcon(pauseIcon); - playpause.setToolTipText("Pause"); - Moosique.resume(); + playpause.setIcon(pauseIcon); + playpause.setToolTipText("Pause"); + Moosique.resume(); } else if (((JButton)e.getSource()).getToolTipText() == "Stop") { - playpause.setIcon(playIcon); - playpause.setToolTipText("Play"); + resetProgInd(); Moosique.stop(); } } diff --git a/MooView.java b/MooView.java index ca9d68d..2defbc6 100644 --- a/MooView.java +++ b/MooView.java @@ -81,6 +81,7 @@ public class MooView extends JScrollPane { * Calls on each track view to update itself. */ public void update(long tickPosition) { + getViewport().setViewPosition(new Point((int)getViewport().getViewPosition().getX(), (int)(tickPosition / 24) * MooTrackView.NOTE_HEIGHT)); Component[] comps = getComponents(); for (int i = 0; i < comps.length; i++) { if(comps[i] instanceof MooTrackView) ((MooTrackView)comps[i]).update(tickPosition); diff --git a/Moosique.java b/Moosique.java index 531e4f5..b79fa67 100644 --- a/Moosique.java +++ b/Moosique.java @@ -161,7 +161,7 @@ public class Moosique { */ public static void pause() { sequencer.stop(); - player.destroy(); + player.interrupt(); } /** -- 2.39.2