| author | wenzelm | 
| Tue, 22 Apr 2014 22:15:44 +0200 | |
| changeset 56658 | 86f9c6912965 | 
| parent 56351 | 1c735e46acf0 | 
| child 56691 | ad5d7461b370 | 
| permissions | -rw-r--r-- | 
| 45674 | 1  | 
/* Title: Pure/General/time.scala  | 
| 
45673
 
cd41e3903fbf
separate compilation of PIDE vs. Pure sources, which enables independent Scala library;
 
wenzelm 
parents: 
45667 
diff
changeset
 | 
2  | 
Module: PIDE  | 
| 40393 | 3  | 
Author: Makarius  | 
4  | 
||
| 45674 | 5  | 
Time based on milliseconds.  | 
| 40393 | 6  | 
*/  | 
7  | 
||
8  | 
package isabelle  | 
|
9  | 
||
| 45664 | 10  | 
|
| 50298 | 11  | 
import java.util.Locale  | 
12  | 
||
13  | 
||
| 
40848
 
8662b9b1f123
more abstract/uniform handling of time, preferring seconds as Double;
 
wenzelm 
parents: 
40393 
diff
changeset
 | 
14  | 
object Time  | 
| 40393 | 15  | 
{
 | 
| 47993 | 16  | 
def seconds(s: Double): Time = new Time((s * 1000.0).round)  | 
| 
44699
 
5199ee17c7d7
property "tooltip-dismiss-delay" is edited in ms, not seconds;
 
wenzelm 
parents: 
40852 
diff
changeset
 | 
17  | 
def ms(m: Long): Time = new Time(m)  | 
| 51587 | 18  | 
val zero: Time = ms(0)  | 
| 51533 | 19  | 
|
20  | 
def print_seconds(s: Double): String =  | 
|
21  | 
String.format(Locale.ROOT, "%.3f", s.asInstanceOf[AnyRef])  | 
|
| 40393 | 22  | 
}  | 
23  | 
||
| 56351 | 24  | 
final class Time private(val ms: Long) extends AnyVal  | 
| 
40848
 
8662b9b1f123
more abstract/uniform handling of time, preferring seconds as Double;
 
wenzelm 
parents: 
40393 
diff
changeset
 | 
25  | 
{
 | 
| 51587 | 26  | 
def + (t: Time): Time = new Time(ms + t.ms)  | 
27  | 
||
| 
40848
 
8662b9b1f123
more abstract/uniform handling of time, preferring seconds as Double;
 
wenzelm 
parents: 
40393 
diff
changeset
 | 
28  | 
def seconds: Double = ms / 1000.0  | 
| 40852 | 29  | 
|
30  | 
def min(t: Time): Time = if (ms < t.ms) this else t  | 
|
31  | 
def max(t: Time): Time = if (ms > t.ms) this else t  | 
|
32  | 
||
| 
53292
 
f567c1c7b180
option to insert unique completion immediately into buffer;
 
wenzelm 
parents: 
51587 
diff
changeset
 | 
33  | 
def is_zero: Boolean = ms == 0  | 
| 46768 | 34  | 
def is_relevant: Boolean = ms >= 1  | 
35  | 
||
| 51533 | 36  | 
override def toString = Time.print_seconds(seconds)  | 
| 46768 | 37  | 
|
| 
40848
 
8662b9b1f123
more abstract/uniform handling of time, preferring seconds as Double;
 
wenzelm 
parents: 
40393 
diff
changeset
 | 
38  | 
def message: String = toString + "s"  | 
| 
 
8662b9b1f123
more abstract/uniform handling of time, preferring seconds as Double;
 
wenzelm 
parents: 
40393 
diff
changeset
 | 
39  | 
}  | 
| 
 
8662b9b1f123
more abstract/uniform handling of time, preferring seconds as Double;
 
wenzelm 
parents: 
40393 
diff
changeset
 | 
40  |