blob: cbd06119ccb934a7d16f550ef59df72fa099bf6b [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2012 Tilera Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* 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.
*/
@Override
public void actionPerformed(ActionEvent e) {
GUIUtils.exec(this);
}
/** Invoked each time the timer fires. */
@Override
public void run() {
}
}