package gui; import java.awt.Color; import java.awt.event.ActionEvent; import javax.swing.JLabel; import javax.swing.SwingConstants; import javax.swing.Timer; import timer.ChessTimer; import timer.ChessTimer.ChessTimerListener; import utility.SerializableActionListener; import com.google.common.base.Preconditions; public final class ChessTimerLabel extends JLabel { private static final long serialVersionUID = -373763961178221657L; public ChessTimerLabel(ChessTimer timer) { Preconditions.checkArgument(timer != null); mChessTimer = timer; mChessTimer.setChessTimerListener(mChessTimerListener); mTimer = new Timer(1000, mTimerActionListener); mTimer.setInitialDelay(0); setHorizontalAlignment(SwingConstants.CENTER); setOpaque(false); setForeground(Color.white); } private final SerializableActionListener mTimerActionListener = new SerializableActionListener() { @Override public void actionPerformed(ActionEvent event) { mChessTimer.updateDisplay(); } private static final long serialVersionUID = -1525004550269785361L; }; private final ChessTimerListener mChessTimerListener = new ChessTimerListener() { @Override public void onDisplayUpdated(String displayText) { setText(displayText); } @Override public void onTimerStart() { mTimer.start(); } @Override public void onTimerStop() { mTimer.stop(); } @Override public void setInitialDelay(int initialDelay) { mTimer.setInitialDelay(initialDelay); } @Override public void onTimerRestart() { mTimer = new Timer(1000, mTimerActionListener); mTimer.setInitialDelay(0); } private static final long serialVersionUID = -7951621916525061474L; }; private ChessTimer mChessTimer; private Timer mTimer; }