package stopwatch;
import java.lang.*;
import javafx.stage.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.Timer;
public class StopwatchModel {
public var handAngle:Number = 180;
public var tenthsHandAngle:Number = 180;
public var minutesHandAngle:Number = 180;
public var timeString:String = "00:00.00";
var elapsedMillis:Integer = 0;
var lastClockTime:Integer = 0;
var timerListener:ActionListener = ActionListener {
override public function actionPerformed(evt:ActionEvent): Void {
if (lastClockTime == 0) lastClockTime = System.currentTimeMillis() as Integer;
var now:Integer = System.currentTimeMillis() as Integer;
var delta = now - lastClockTime;
elapsedMillis += delta;
var elapsedHundredthsSecond:Integer = elapsedMillis/10;
var hundredthsExact:Number = (elapsedMillis/10.0) mod 10;
var tenthsExact:Number = (elapsedMillis/100.0) mod 100;
var tenths:Integer = (elapsedHundredthsSecond/10) mod 10;
var seconds:Integer = (elapsedHundredthsSecond/100) mod 60;
handAngle = 180 + ((360/60.0)*seconds);
tenthsHandAngle = 180 + ((360/10.0)*tenthsExact);
minutesHandAngle = 180 + ((360/600.0)*seconds);
var decimalSeconds:Number = (elapsedHundredthsSecond/100.0) mod 60.0;
var mins:Integer = elapsedHundredthsSecond/6000;
timeString = "{%02d mins}:{%05.2f decimalSeconds}";
lastClockTime = now;
}
}
var timer:Timer = new Timer(47, timerListener);
public function startStop(){
if (timer.isRunning()){
timer.stop();
lastClockTime = 0;
} else {
lastClockTime = System.currentTimeMillis() as Integer;
timer.start();
}
}
public function reset(){
if (timer.isRunning()){
timer.stop();
} else {
lastClockTime = 0;
elapsedMillis = 0;
}
timerListener.actionPerformed(null);
}
}