no busy waiting
authorimmler@in.tum.de
Thu, 27 Aug 2009 16:41:36 +0200
changeset 34686 f075ac82aae9
parent 34685 93f4978fe2a8
child 34687 c3693cca5a04
no busy waiting
src/Tools/jEdit/src/jedit/BrowseVersionDockable.scala
--- a/src/Tools/jEdit/src/jedit/BrowseVersionDockable.scala	Thu Aug 27 16:41:33 2009 +0200
+++ b/src/Tools/jEdit/src/jedit/BrowseVersionDockable.scala	Thu Aug 27 16:41:36 2009 +0200
@@ -16,24 +16,21 @@
 import org.gjt.sp.jedit.gui.DockableWindowManager
 
 
-class BrowseVersionDockable(view : View, position : String) extends FlowPanel {
+class BrowseVersionDockable(view : View, position : String) extends FlowPanel
+{
+
+  def get_versions() =
+    Isabelle.prover_setup(view.getBuffer).map(_.theory_view.changes).getOrElse(Nil)
 
   if (position == DockableWindowManager.FLOATING)
     preferredSize = new Dimension(500, 250)
 
   val list = new ListView[Change]
   list.fixedCellWidth = 500
+  list.listData = get_versions()
+  contents += list
 
-  new javax.swing.Timer(1000, new java.awt.event.ActionListener {
-    override def actionPerformed(evt: java.awt.event.ActionEvent) {
-      list.listData = Isabelle.prover_setup(view.getBuffer).map(_.
-        theory_view.changes).getOrElse(Nil)
-    }
-  }).start()
-
-  contents += list
   listenTo(list.selection)
-
   reactions += {
     case ListSelectionChanged(source, range, false) =>
       Swing_Thread.now {
@@ -41,4 +38,10 @@
           theory_view.set_version(list.listData(range.start)))
       }
   }
+
+  private var num_changes = 0
+  Isabelle.plugin.document_change += {_ =>
+    list.listData = get_versions()
+  }
+
 }