1/* Title: Tools/jEdit/src/isabelle_options.scala 2 Author: Makarius 3 4Editor pane for plugin options. 5*/ 6 7package isabelle.jedit 8 9 10import isabelle._ 11 12import org.gjt.sp.jedit.{jEdit, AbstractOptionPane} 13 14 15abstract class Isabelle_Options(name: String) extends AbstractOptionPane(name) 16{ 17 protected val components: List[(String, List[Option_Component])] 18 19 override def _init() 20 { 21 val dummy_property = "options.isabelle.dummy" 22 23 for ((s, cs) <- components) { 24 if (s != "") { 25 jEdit.setProperty(dummy_property, s) 26 addSeparator(dummy_property) 27 jEdit.setProperty(dummy_property, null) 28 } 29 cs.foreach(c => addComponent(c.title, c.peer)) 30 } 31 } 32 33 override def _save() 34 { 35 for ((_, cs) <- components) cs.foreach(_.save()) 36 } 37} 38 39 40class Isabelle_Options1 extends Isabelle_Options("isabelle-general") 41{ 42 val options = PIDE.options 43 44 private val predefined = 45 List(JEdit_Sessions.logic_selector(options, false), 46 JEdit_Spell_Checker.dictionaries_selector()) 47 48 protected val components = 49 options.make_components(predefined, 50 (for ((name, opt) <- options.value.options.iterator if opt.public) yield name).toSet) 51} 52 53 54class Isabelle_Options2 extends Isabelle_Options("isabelle-rendering") 55{ 56 private val predefined = 57 (for { 58 (name, opt) <- PIDE.options.value.options.toList 59 if (name.endsWith("_color") && opt.section == JEdit_Options.RENDERING_SECTION) 60 } yield PIDE.options.make_color_component(opt)) 61 62 assert(predefined.nonEmpty) 63 64 protected val components = PIDE.options.make_components(predefined, _ => false) 65} 66 67