src/Tools/jEdit/src/isabelle_options.scala
author wenzelm
Mon, 10 Sep 2012 15:20:50 +0200
changeset 49245 cb70157293c0
parent 44699 5199ee17c7d7
child 49246 248e66e8321f
permissions -rw-r--r--
manage Isabelle/jEdit options as Isabelle/Scala options (with persistent preferences);

/*  Title:      Tools/jEdit/src/isabelle_options.scala
    Author:     Johannes Hölzl, TU Munich

Editor pane for plugin options.
*/

package isabelle.jedit


import isabelle._

import javax.swing.{JSpinner, JTextField}

import scala.swing.CheckBox

import org.gjt.sp.jedit.AbstractOptionPane


class Isabelle_Options extends AbstractOptionPane("isabelle")
{
  private val logic_selector = Isabelle.logic_selector(Isabelle.options.string("jedit_logic"))
  private val auto_start = new CheckBox()
  private val relative_font_size = new JSpinner()
  private val tooltip_font_size = new JSpinner()
  private val tooltip_margin = new JSpinner()
  private val tooltip_dismiss_delay = new JTextField()

  override def _init()
  {
    addComponent(Isabelle.options.title("jedit_logic"),
      logic_selector.peer.asInstanceOf[java.awt.Component])

    addComponent(Isabelle.options.title("jedit_auto_start"), auto_start.peer)
    auto_start.selected = Isabelle.options.bool("jedit_auto_start")

    addComponent(Isabelle.options.title("jedit_relative_font_size"), relative_font_size)
    relative_font_size.setValue(Isabelle.options.int("jedit_relative_font_size"))

    tooltip_font_size.setValue(Isabelle.options.int("jedit_tooltip_font_size"))
    addComponent(Isabelle.options.title("jedit_tooltip_font_size"), tooltip_font_size)

    tooltip_margin.setValue(Isabelle.options.int("jedit_tooltip_margin"))
    addComponent(Isabelle.options.title("jedit_tooltip_margin"), tooltip_margin)

    // FIXME InputVerifier for Double
    tooltip_dismiss_delay.setText(Isabelle.options.real("jedit_tooltip_dismiss_delay").toString)
    addComponent(Isabelle.options.title("jedit_tooltip_dismiss_delay"), tooltip_dismiss_delay)
  }

  override def _save()
  {
    Isabelle.options.string("jedit_logic") = logic_selector.selection.item.name

    Isabelle.options.bool("jedit_auto_start") = auto_start.selected

    Isabelle.options.int("jedit_relative_font_size") =
      relative_font_size.getValue().asInstanceOf[Int]

    Isabelle.options.int("jedit_tooltip_font_size") =
      tooltip_font_size.getValue().asInstanceOf[Int]

    Isabelle.options.int("jedit_tooltip_margin") =
      tooltip_margin.getValue().asInstanceOf[Int]

    Isabelle.options + ("jedit_tooltip_dismiss_delay", tooltip_dismiss_delay.getText)
  }
}