equal
deleted
inserted
replaced
|
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 } |