src/Tools/jEdit/src/sledgehammer_dockable.scala
changeset 75393 87ebf5a50283
parent 73987 fc363a3b690a
child 75809 1dd5d4f4b69e
equal deleted inserted replaced
75388:b3ca4a6ed74b 75393:87ebf5a50283
    17 
    17 
    18 import org.gjt.sp.jedit.View
    18 import org.gjt.sp.jedit.View
    19 import org.gjt.sp.jedit.gui.HistoryTextField
    19 import org.gjt.sp.jedit.gui.HistoryTextField
    20 
    20 
    21 
    21 
    22 class Sledgehammer_Dockable(view: View, position: String) extends Dockable(view, position)
    22 class Sledgehammer_Dockable(view: View, position: String) extends Dockable(view, position) {
    23 {
       
    24   GUI_Thread.require {}
    23   GUI_Thread.require {}
    25 
    24 
    26 
    25 
    27   /* text area */
    26   /* text area */
    28 
    27 
    34 
    33 
    35   /* query operation */
    34   /* query operation */
    36 
    35 
    37   private val process_indicator = new Process_Indicator
    36   private val process_indicator = new Process_Indicator
    38 
    37 
    39   private def consume_status(status: Query_Operation.Status.Value): Unit =
    38   private def consume_status(status: Query_Operation.Status.Value): Unit = {
    40   {
       
    41     status match {
    39     status match {
    42       case Query_Operation.Status.WAITING =>
    40       case Query_Operation.Status.WAITING =>
    43         process_indicator.update("Waiting for evaluation of context ...", 5)
    41         process_indicator.update("Waiting for evaluation of context ...", 5)
    44       case Query_Operation.Status.RUNNING =>
    42       case Query_Operation.Status.RUNNING =>
    45         process_indicator.update("Sledgehammering ...", 15)
    43         process_indicator.update("Sledgehammering ...", 15)
    62   addComponentListener(new ComponentAdapter {
    60   addComponentListener(new ComponentAdapter {
    63     override def componentResized(e: ComponentEvent): Unit = delay_resize.invoke()
    61     override def componentResized(e: ComponentEvent): Unit = delay_resize.invoke()
    64     override def componentShown(e: ComponentEvent): Unit = delay_resize.invoke()
    62     override def componentShown(e: ComponentEvent): Unit = delay_resize.invoke()
    65   })
    63   })
    66 
    64 
    67   private def handle_resize(): Unit =
    65   private def handle_resize(): Unit = {
    68   {
       
    69     GUI_Thread.require {}
    66     GUI_Thread.require {}
    70 
    67 
    71     pretty_text_area.resize(
    68     pretty_text_area.resize(
    72       Font_Info.main(PIDE.options.real("jedit_font_scale") * zoom.factor / 100))
    69       Font_Info.main(PIDE.options.real("jedit_font_scale") * zoom.factor / 100))
    73   }
    70   }
    74 
    71 
    75 
    72 
    76   /* controls */
    73   /* controls */
    77 
    74 
    78   private def clicked: Unit =
    75   private def clicked: Unit = {
    79   {
       
    80     provers.addCurrentToHistory()
    76     provers.addCurrentToHistory()
    81     PIDE.options.string("sledgehammer_provers") = provers.getText
    77     PIDE.options.string("sledgehammer_provers") = provers.getText
    82     sledgehammer.apply_query(
    78     sledgehammer.apply_query(
    83       List(provers.getText, isar_proofs.selected.toString, try0.selected.toString))
    79       List(provers.getText, isar_proofs.selected.toString, try0.selected.toString))
    84   }
    80   }
    89         "Automatic provers as space-separated list, e.g.\n" +
    85         "Automatic provers as space-separated list, e.g.\n" +
    90           PIDE.options.value.check_name("sledgehammer_provers").default_value)
    86           PIDE.options.value.check_name("sledgehammer_provers").default_value)
    91   }
    87   }
    92 
    88 
    93   private val provers = new HistoryTextField("isabelle-sledgehammer-provers") {
    89   private val provers = new HistoryTextField("isabelle-sledgehammer-provers") {
    94     override def processKeyEvent(evt: KeyEvent): Unit =
    90     override def processKeyEvent(evt: KeyEvent): Unit = {
    95     {
       
    96       if (evt.getID == KeyEvent.KEY_PRESSED && evt.getKeyCode == KeyEvent.VK_ENTER) clicked
    91       if (evt.getID == KeyEvent.KEY_PRESSED && evt.getKeyCode == KeyEvent.VK_ENTER) clicked
    97       super.processKeyEvent(evt)
    92       super.processKeyEvent(evt)
    98     }
    93     }
    99     setToolTipText(provers_label.tooltip)
    94     setToolTipText(provers_label.tooltip)
   100     setColumns(30)
    95     setColumns(30)
   101   }
    96   }
   102 
    97 
   103   private def update_provers(): Unit =
    98   private def update_provers(): Unit = {
   104   {
       
   105     val new_provers = PIDE.options.string("sledgehammer_provers")
    99     val new_provers = PIDE.options.string("sledgehammer_provers")
   106     if (new_provers != provers.getText) {
   100     if (new_provers != provers.getText) {
   107       provers.setText(new_provers)
   101       provers.setText(new_provers)
   108       if (provers.getCaret != null)
   102       if (provers.getCaret != null)
   109         provers.getCaret.setDot(0)
   103         provers.getCaret.setDot(0)
   152   private val main =
   146   private val main =
   153     Session.Consumer[Session.Global_Options](getClass.getName) {
   147     Session.Consumer[Session.Global_Options](getClass.getName) {
   154       case _: Session.Global_Options => GUI_Thread.later { update_provers(); handle_resize() }
   148       case _: Session.Global_Options => GUI_Thread.later { update_provers(); handle_resize() }
   155     }
   149     }
   156 
   150 
   157   override def init(): Unit =
   151   override def init(): Unit = {
   158   {
       
   159     PIDE.session.global_options += main
   152     PIDE.session.global_options += main
   160     update_provers()
   153     update_provers()
   161     handle_resize()
   154     handle_resize()
   162     sledgehammer.activate()
   155     sledgehammer.activate()
   163   }
   156   }
   164 
   157 
   165   override def exit(): Unit =
   158   override def exit(): Unit = {
   166   {
       
   167     sledgehammer.deactivate()
   159     sledgehammer.deactivate()
   168     PIDE.session.global_options -= main
   160     PIDE.session.global_options -= main
   169     delay_resize.revoke()
   161     delay_resize.revoke()
   170   }
   162   }
   171 }
   163 }