/******************************************************************************* * Copyright (c) 2012 Tilera Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * William R. Swanson (Tilera Corporation) *******************************************************************************/ package org.eclipse.cdt.visualizer.ui.util; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; // --------------------------------------------------------------------------- // Timer // --------------------------------------------------------------------------- /** * Periodic event timer class. */ public class Timer implements ActionListener, Runnable { // --- members --- /** Actual timer */ // NOTE: we delegate rather than subclassing, because // Timer class implements ISerializable, so every derived type // must either declare a serialization ID, or suppress the warning. protected javax.swing.Timer m_timer = null; // --- constructors/destructors --- /** Constructor. */ public Timer(int intervalMilliseconds) { m_timer = new javax.swing.Timer(intervalMilliseconds, null); m_timer.addActionListener(this); m_timer.setRepeats(true); m_timer.setCoalesce(true); m_timer.start(); } /** Dispose method. */ public void dispose() { if (m_timer != null) { if (m_timer.isRunning()) { m_timer.stop(); } m_timer = null; } } // --- methods --- /** Gets whether timer repeatedly fires events. */ public boolean isRepeating() { return m_timer.isRepeats(); } /** Sets whether timer repeatedly fires events. */ public void setRepeating(boolean repeats) { m_timer.setRepeats(repeats); } /** Starts/restarts timer. * Has no effect if timer is already running */ public void start() { if (! m_timer.isRunning()) m_timer.start(); } /** Stops timer. * Has no effect if timer is already stopped. */ public void stop() { if (m_timer.isRunning()) m_timer.stop(); } // --- ActionListener implementation --- /** * Invoked each time the timer fires. * Default implementation invokes the run() method on the UI thread. */ public void actionPerformed(ActionEvent e) { GUIUtils.exec(this); } /** Invoked each time the timer fires. */ public void run() { } }