From 88be86b9cff01c822c5bcdfb4114142d6350fca9 Mon Sep 17 00:00:00 2001 From: Darin Wright Date: Thu, 31 Jan 2008 04:05:24 +0000 Subject: clock update --- .../ui/midi/adapters/ControlEventHandler.java | 61 ++++++++++++++++++++++ .../midi/adapters/SequencerControlsModelProxy.java | 7 +++ 2 files changed, 68 insertions(+) (limited to 'org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples') diff --git a/org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/ControlEventHandler.java b/org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/ControlEventHandler.java index 3766b9025..9472914a9 100644 --- a/org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/ControlEventHandler.java +++ b/org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/ControlEventHandler.java @@ -10,8 +10,12 @@ *******************************************************************************/ package org.eclipse.debug.examples.ui.midi.adapters; +import java.util.Timer; +import java.util.TimerTask; + import org.eclipse.debug.core.DebugEvent; import org.eclipse.debug.examples.core.midi.launcher.MidiLaunch; +import org.eclipse.debug.examples.core.midi.launcher.TimeControl; import org.eclipse.debug.internal.ui.viewers.model.provisional.IModelDelta; import org.eclipse.debug.internal.ui.viewers.model.provisional.ModelDelta; import org.eclipse.debug.internal.ui.viewers.update.DebugEventHandler; @@ -24,8 +28,16 @@ import org.eclipse.debug.internal.ui.viewers.update.DebugEventHandler; */ public class ControlEventHandler extends DebugEventHandler { + /** + * Associated launch + */ private MidiLaunch fLaunch; + /** + * Timer used to update clock + */ + private Timer fTimer; + /** * @param proxy */ @@ -40,10 +52,59 @@ public class ControlEventHandler extends DebugEventHandler { protected boolean handlesEvent(DebugEvent event) { return true; } + + /* (non-Javadoc) + * @see org.eclipse.debug.internal.ui.viewers.update.DebugEventHandler#dispose() + */ + public synchronized void dispose() { + super.dispose(); + if (fTimer != null) { + fTimer.cancel(); + } + } + /* (non-Javadoc) + * @see org.eclipse.debug.internal.ui.viewers.update.DebugEventHandler#refreshRoot(org.eclipse.debug.core.DebugEvent) + */ protected void refreshRoot(DebugEvent event) { ModelDelta delta = new ModelDelta(fLaunch, IModelDelta.CONTENT); fireDelta(delta); } + + /* (non-Javadoc) + * @see org.eclipse.debug.internal.ui.viewers.update.DebugEventHandler#handleResume(org.eclipse.debug.core.DebugEvent) + */ + protected void handleResume(DebugEvent event) { + super.handleResume(event); + startTimer(); + } + + /** + * Starts a timer to update the clock + */ + private void startTimer() { + fTimer = new Timer(true); + fTimer.schedule(new TimerTask() { + public void run() { + ModelDelta delta = new ModelDelta(fLaunch, IModelDelta.NO_CHANGE); + delta = delta.addNode(new TimeControl(fLaunch), IModelDelta.STATE); + fireDelta(delta); + } + }, 0, 100); + } + + /* (non-Javadoc) + * @see org.eclipse.debug.internal.ui.viewers.update.DebugEventHandler#handleSuspend(org.eclipse.debug.core.DebugEvent) + */ + protected void handleSuspend(DebugEvent event) { + super.handleSuspend(event); + if (fTimer != null) { + fTimer.cancel(); + fTimer = null; + } + } + + + } diff --git a/org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/SequencerControlsModelProxy.java b/org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/SequencerControlsModelProxy.java index ec3439a10..ac0e0b3a7 100644 --- a/org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/SequencerControlsModelProxy.java +++ b/org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/SequencerControlsModelProxy.java @@ -10,6 +10,8 @@ *******************************************************************************/ package org.eclipse.debug.examples.ui.midi.adapters; +import javax.sound.midi.Sequencer; + import org.eclipse.debug.core.DebugEvent; import org.eclipse.debug.examples.core.midi.launcher.MidiLaunch; import org.eclipse.debug.examples.core.midi.launcher.SequencerControl; @@ -63,9 +65,14 @@ public class SequencerControlsModelProxy extends EventHandlerModelProxy { if (event.getSource() instanceof SequencerControl) { return ((SequencerControl)event.getSource()).getLaunch().equals(fLaunch); } + if (event.getSource() instanceof Sequencer) { + return fLaunch.getSequencer().equals(event.getSource()); + } return false; } + + } -- cgit v1.2.3