src/Tools/jEdit/src/jedit/browse_version_dockable.scala
changeset 34759 bfea7839d9e1
parent 34724 b1079c3ba1da
equal deleted inserted replaced
34758:710e3a9a4c95 34759:bfea7839d9e1
       
     1 /*
       
     2  * Dockable window for navigating through the document-versions
       
     3  *
       
     4  * @author Fabian Immler, TU Munich
       
     5  */
       
     6 
       
     7 package isabelle.jedit
       
     8 
       
     9 import isabelle.proofdocument.Change
       
    10 
       
    11 import java.awt.Dimension
       
    12 import scala.swing.{ListView, FlowPanel}
       
    13 import scala.swing.event.ListSelectionChanged
       
    14 
       
    15 import org.gjt.sp.jedit.View
       
    16 import org.gjt.sp.jedit.gui.DockableWindowManager
       
    17 
       
    18 
       
    19 class BrowseVersionDockable(view: View, position: String) extends FlowPanel
       
    20 {
       
    21   if (position == DockableWindowManager.FLOATING)
       
    22     preferredSize = new Dimension(500, 250)
       
    23 
       
    24   def prover_setup(): Option[ProverSetup] = Isabelle.prover_setup(view.getBuffer)
       
    25   def get_versions() =
       
    26     prover_setup() match {
       
    27       case None => Nil
       
    28       case Some(setup) => setup.theory_view.changes
       
    29     }
       
    30 
       
    31   val list = new ListView[Change]
       
    32   list.fixedCellWidth = 500
       
    33   list.listData = get_versions()
       
    34   contents += list
       
    35 
       
    36   listenTo(list.selection)
       
    37   reactions += {
       
    38     case ListSelectionChanged(source, range, false) =>
       
    39         prover_setup().map(_.theory_view.set_version(list.listData(range.start)))
       
    40     }
       
    41 
       
    42   prover_setup.foreach(_.prover.document_change += (_ => list.listData = get_versions()))
       
    43 }