src/Tools/jEdit/src/utils/Delay.scala
author immler@in.tum.de
Sun, 11 Jan 2009 13:16:35 +0100
changeset 34465 ccadbf63e320
parent 34407 aad6834ba380
child 34503 7d0726f19d04
permissions -rw-r--r--
added EventBus for new command- or keyword-declarations
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 {
a67a4eaebcff added 'delay or ignore'
immler@in.tum.de
parents:
diff changeset
    15
      override def actionPerformed(e:ActionEvent){
a67a4eaebcff added 'delay or ignore'
immler@in.tum.de
parents:
diff changeset
    16
        action ()
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
a67a4eaebcff added 'delay or ignore'
immler@in.tum.de
parents:
diff changeset
    21
  def delay_or_ignore () = {
a67a4eaebcff added 'delay or ignore'
immler@in.tum.de
parents:
diff changeset
    22
    if (! timer.isRunning()){
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
}