src/Tools/jEdit/src/utils/Delay.scala
author wenzelm
Tue, 27 Jan 2009 19:27:59 +0100
changeset 34503 7d0726f19d04
parent 34407 aad6834ba380
permissions -rw-r--r--
tuned whitespace;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
34407
aad6834ba380 added some headers and comments;
wenzelm
parents: 34405
diff changeset
     1
/*
aad6834ba380 added some headers and comments;
wenzelm
parents: 34405
diff changeset
     2
 * Delayed actions
aad6834ba380 added some headers and comments;
wenzelm
parents: 34405
diff changeset
     3
 *
aad6834ba380 added some headers and comments;
wenzelm
parents: 34405
diff changeset
     4
 * @author Fabian Immler, TU Munich
aad6834ba380 added some headers and comments;
wenzelm
parents: 34405
diff changeset
     5
 */
aad6834ba380 added some headers and comments;
wenzelm
parents: 34405
diff changeset
     6
34405
a67a4eaebcff added 'delay or ignore'
immler@in.tum.de
parents:
diff changeset
     7
package isabelle.utils
a67a4eaebcff added 'delay or ignore'
immler@in.tum.de
parents:
diff changeset
     8
a67a4eaebcff added 'delay or ignore'
immler@in.tum.de
parents:
diff changeset
     9
import javax.swing.Timer
a67a4eaebcff added 'delay or ignore'
immler@in.tum.de
parents:
diff changeset
    10
import java.awt.event.{ActionListener, ActionEvent}
a67a4eaebcff added 'delay or ignore'
immler@in.tum.de
parents:
diff changeset
    11
a67a4eaebcff added 'delay or ignore'
immler@in.tum.de
parents:
diff changeset
    12
class Delay(amount : Int, action : () => Unit) {
a67a4eaebcff added 'delay or ignore'
immler@in.tum.de
parents:
diff changeset
    13
a67a4eaebcff added 'delay or ignore'
immler@in.tum.de
parents:
diff changeset
    14
  val timer : Timer = new Timer(amount, new ActionListener {
34503
7d0726f19d04 tuned whitespace;
wenzelm
parents: 34407
diff changeset
    15
      override def actionPerformed(e:ActionEvent) {
7d0726f19d04 tuned whitespace;
wenzelm
parents: 34407
diff changeset
    16
        action()
34405
a67a4eaebcff added 'delay or ignore'
immler@in.tum.de
parents:
diff changeset
    17
      }
a67a4eaebcff added 'delay or ignore'
immler@in.tum.de
parents:
diff changeset
    18
    })
a67a4eaebcff added 'delay or ignore'
immler@in.tum.de
parents:
diff changeset
    19
  // if called very often, action is executed at most once
a67a4eaebcff added 'delay or ignore'
immler@in.tum.de
parents:
diff changeset
    20
  // in amount milliseconds
34503
7d0726f19d04 tuned whitespace;
wenzelm
parents: 34407
diff changeset
    21
  def delay_or_ignore() = {
7d0726f19d04 tuned whitespace;
wenzelm
parents: 34407
diff changeset
    22
    if (!timer.isRunning()) {
34405
a67a4eaebcff added 'delay or ignore'
immler@in.tum.de
parents:
diff changeset
    23
      timer.setRepeats(false)
a67a4eaebcff added 'delay or ignore'
immler@in.tum.de
parents:
diff changeset
    24
      timer.start()
a67a4eaebcff added 'delay or ignore'
immler@in.tum.de
parents:
diff changeset
    25
    }
a67a4eaebcff added 'delay or ignore'
immler@in.tum.de
parents:
diff changeset
    26
  }
a67a4eaebcff added 'delay or ignore'
immler@in.tum.de
parents:
diff changeset
    27
}