src/Tools/jEdit/src/jedit/history_dockable.scala
author wenzelm
Tue, 08 Dec 2009 16:30:20 +0100
changeset 34760 dc7f5e0d9d27
parent 34759 src/Tools/jEdit/src/jedit/browse_version_dockable.scala@bfea7839d9e1
child 34777 91d6089cef88
permissions -rw-r--r--
misc modernization of names;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
34652
5fe5e00ec430 gui element to set current document version
immler@in.tum.de
parents:
diff changeset
     1
/*
34760
dc7f5e0d9d27 misc modernization of names;
wenzelm
parents: 34759
diff changeset
     2
 * Dockable window for navigating through the document history
34652
5fe5e00ec430 gui element to set current document version
immler@in.tum.de
parents:
diff changeset
     3
 *
5fe5e00ec430 gui element to set current document version
immler@in.tum.de
parents:
diff changeset
     4
 * @author Fabian Immler, TU Munich
5fe5e00ec430 gui element to set current document version
immler@in.tum.de
parents:
diff changeset
     5
 */
5fe5e00ec430 gui element to set current document version
immler@in.tum.de
parents:
diff changeset
     6
5fe5e00ec430 gui element to set current document version
immler@in.tum.de
parents:
diff changeset
     7
package isabelle.jedit
5fe5e00ec430 gui element to set current document version
immler@in.tum.de
parents:
diff changeset
     8
34760
dc7f5e0d9d27 misc modernization of names;
wenzelm
parents: 34759
diff changeset
     9
34660
e0561943bfc9 Change consisting of a list of Edits
immler@in.tum.de
parents: 34654
diff changeset
    10
import isabelle.proofdocument.Change
34652
5fe5e00ec430 gui element to set current document version
immler@in.tum.de
parents:
diff changeset
    11
5fe5e00ec430 gui element to set current document version
immler@in.tum.de
parents:
diff changeset
    12
import java.awt.Dimension
5fe5e00ec430 gui element to set current document version
immler@in.tum.de
parents:
diff changeset
    13
import scala.swing.{ListView, FlowPanel}
5fe5e00ec430 gui element to set current document version
immler@in.tum.de
parents:
diff changeset
    14
import scala.swing.event.ListSelectionChanged
5fe5e00ec430 gui element to set current document version
immler@in.tum.de
parents:
diff changeset
    15
5fe5e00ec430 gui element to set current document version
immler@in.tum.de
parents:
diff changeset
    16
import org.gjt.sp.jedit.View
5fe5e00ec430 gui element to set current document version
immler@in.tum.de
parents:
diff changeset
    17
import org.gjt.sp.jedit.gui.DockableWindowManager
5fe5e00ec430 gui element to set current document version
immler@in.tum.de
parents:
diff changeset
    18
5fe5e00ec430 gui element to set current document version
immler@in.tum.de
parents:
diff changeset
    19
34760
dc7f5e0d9d27 misc modernization of names;
wenzelm
parents: 34759
diff changeset
    20
class History_Dockable(view: View, position: String) extends FlowPanel
34686
f075ac82aae9 no busy waiting
immler@in.tum.de
parents: 34680
diff changeset
    21
{
34652
5fe5e00ec430 gui element to set current document version
immler@in.tum.de
parents:
diff changeset
    22
  if (position == DockableWindowManager.FLOATING)
5fe5e00ec430 gui element to set current document version
immler@in.tum.de
parents:
diff changeset
    23
    preferredSize = new Dimension(500, 250)
5fe5e00ec430 gui element to set current document version
immler@in.tum.de
parents:
diff changeset
    24
34760
dc7f5e0d9d27 misc modernization of names;
wenzelm
parents: 34759
diff changeset
    25
  def prover_setup(): Option[Prover_Setup] = Isabelle.prover_setup(view.getBuffer)
34724
b1079c3ba1da Prover: keep command_change/document_change event buses here, not in ProofDocument, Command, State, Plugin;
wenzelm
parents: 34686
diff changeset
    26
  def get_versions() =
b1079c3ba1da Prover: keep command_change/document_change event buses here, not in ProofDocument, Command, State, Plugin;
wenzelm
parents: 34686
diff changeset
    27
    prover_setup() match {
b1079c3ba1da Prover: keep command_change/document_change event buses here, not in ProofDocument, Command, State, Plugin;
wenzelm
parents: 34686
diff changeset
    28
      case None => Nil
b1079c3ba1da Prover: keep command_change/document_change event buses here, not in ProofDocument, Command, State, Plugin;
wenzelm
parents: 34686
diff changeset
    29
      case Some(setup) => setup.theory_view.changes
b1079c3ba1da Prover: keep command_change/document_change event buses here, not in ProofDocument, Command, State, Plugin;
wenzelm
parents: 34686
diff changeset
    30
    }
b1079c3ba1da Prover: keep command_change/document_change event buses here, not in ProofDocument, Command, State, Plugin;
wenzelm
parents: 34686
diff changeset
    31
34660
e0561943bfc9 Change consisting of a list of Edits
immler@in.tum.de
parents: 34654
diff changeset
    32
  val list = new ListView[Change]
34652
5fe5e00ec430 gui element to set current document version
immler@in.tum.de
parents:
diff changeset
    33
  list.fixedCellWidth = 500
34686
f075ac82aae9 no busy waiting
immler@in.tum.de
parents: 34680
diff changeset
    34
  list.listData = get_versions()
f075ac82aae9 no busy waiting
immler@in.tum.de
parents: 34680
diff changeset
    35
  contents += list
34652
5fe5e00ec430 gui element to set current document version
immler@in.tum.de
parents:
diff changeset
    36
5fe5e00ec430 gui element to set current document version
immler@in.tum.de
parents:
diff changeset
    37
  listenTo(list.selection)
5fe5e00ec430 gui element to set current document version
immler@in.tum.de
parents:
diff changeset
    38
  reactions += {
5fe5e00ec430 gui element to set current document version
immler@in.tum.de
parents:
diff changeset
    39
    case ListSelectionChanged(source, range, false) =>
34760
dc7f5e0d9d27 misc modernization of names;
wenzelm
parents: 34759
diff changeset
    40
      prover_setup().map(_.theory_view.set_version(list.listData(range.start)))
dc7f5e0d9d27 misc modernization of names;
wenzelm
parents: 34759
diff changeset
    41
  }
34686
f075ac82aae9 no busy waiting
immler@in.tum.de
parents: 34680
diff changeset
    42
34724
b1079c3ba1da Prover: keep command_change/document_change event buses here, not in ProofDocument, Command, State, Plugin;
wenzelm
parents: 34686
diff changeset
    43
  prover_setup.foreach(_.prover.document_change += (_ => list.listData = get_versions()))
34652
5fe5e00ec430 gui element to set current document version
immler@in.tum.de
parents:
diff changeset
    44
}