simplified dockables using class Dockable;
authorwenzelm
Sat, 22 May 2010 22:05:41 +0200
changeset 3710731093f3687b5
parent 37106 28e6cd90c1ea
child 37108 07936a4efe93
simplified dockables using class Dockable;
src/Tools/jEdit/src/jedit/dockable.scala
src/Tools/jEdit/src/jedit/output_dockable.scala
src/Tools/jEdit/src/jedit/protocol_dockable.scala
src/Tools/jEdit/src/jedit/raw_output_dockable.scala
     1.1 --- a/src/Tools/jEdit/src/jedit/dockable.scala	Sat May 22 21:48:01 2010 +0200
     1.2 +++ b/src/Tools/jEdit/src/jedit/dockable.scala	Sat May 22 22:05:41 2010 +0200
     1.3 @@ -21,7 +21,8 @@
     1.4    if (position == DockableWindowManager.FLOATING)
     1.5      setPreferredSize(new Dimension(500, 250))
     1.6  
     1.7 -  def set_content(c: Component) = add(c, BorderLayout.CENTER)
     1.8 +  def set_content(c: Component) { add(c, BorderLayout.CENTER) }
     1.9 +  def set_content(c: scala.swing.Component) { add(c.peer, BorderLayout.CENTER) }
    1.10  
    1.11    protected def init() { }
    1.12    protected def exit() { }
     2.1 --- a/src/Tools/jEdit/src/jedit/output_dockable.scala	Sat May 22 21:48:01 2010 +0200
     2.2 +++ b/src/Tools/jEdit/src/jedit/output_dockable.scala	Sat May 22 22:05:41 2010 +0200
     2.3 @@ -14,20 +14,14 @@
     2.4  import scala.swing.{FlowPanel, Button, CheckBox}
     2.5  import scala.swing.event.ButtonClicked
     2.6  
     2.7 -import javax.swing.JPanel
     2.8 -import java.awt.{BorderLayout, Dimension}
     2.9 +import java.awt.BorderLayout
    2.10  import java.awt.event.{ComponentEvent, ComponentAdapter}
    2.11  
    2.12  import org.gjt.sp.jedit.View
    2.13 -import org.gjt.sp.jedit.gui.DockableWindowManager
    2.14  
    2.15  
    2.16 -
    2.17 -class Output_Dockable(view: View, position: String) extends JPanel(new BorderLayout)
    2.18 +class Output_Dockable(view: View, position: String) extends Dockable(view, position)
    2.19  {
    2.20 -  if (position == DockableWindowManager.FLOATING)
    2.21 -    setPreferredSize(new Dimension(500, 250))
    2.22 -
    2.23    val html_panel = new HTML_Panel(Isabelle.system, scala.math.round(Isabelle.font_size()))
    2.24    add(html_panel, BorderLayout.CENTER)
    2.25  
    2.26 @@ -81,7 +75,7 @@
    2.27            val document = model.recent_document
    2.28            document.command_at(view.getTextArea.getCaretPosition) match {
    2.29              case Some((cmd, _)) =>
    2.30 -              output_actor ! Render(filtered_results(document, cmd))
    2.31 +              main_actor ! Render(filtered_results(document, cmd))
    2.32              case None =>
    2.33            }
    2.34          case None =>
    2.35 @@ -97,9 +91,9 @@
    2.36      }
    2.37  
    2.38  
    2.39 -  /* actor wiring */
    2.40 +  /* main actor */
    2.41  
    2.42 -  private val output_actor = actor {
    2.43 +  private val main_actor = actor {
    2.44      loop {
    2.45        react {
    2.46          case Session.Global_Settings => handle_resize()
    2.47 @@ -114,23 +108,21 @@
    2.48                html_panel.render(filtered_results(model.recent_document, cmd))
    2.49            }
    2.50  
    2.51 -        case bad => System.err.println("output_actor: ignoring bad message " + bad)
    2.52 +        case bad => System.err.println("Output_Dockable: ignoring bad message " + bad)
    2.53        }
    2.54      }
    2.55    }
    2.56  
    2.57 -  override def addNotify()
    2.58 +  override def init()
    2.59    {
    2.60 -    super.addNotify()
    2.61 -    Isabelle.session.results += output_actor
    2.62 -    Isabelle.session.global_settings += output_actor
    2.63 +    Isabelle.session.results += main_actor
    2.64 +    Isabelle.session.global_settings += main_actor
    2.65    }
    2.66  
    2.67 -  override def removeNotify()
    2.68 +  override def exit()
    2.69    {
    2.70 -    Isabelle.session.results -= output_actor
    2.71 -    Isabelle.session.global_settings -= output_actor
    2.72 -    super.removeNotify()
    2.73 +    Isabelle.session.results -= main_actor
    2.74 +    Isabelle.session.global_settings -= main_actor
    2.75    }
    2.76  
    2.77  
     3.1 --- a/src/Tools/jEdit/src/jedit/protocol_dockable.scala	Sat May 22 21:48:01 2010 +0200
     3.2 +++ b/src/Tools/jEdit/src/jedit/protocol_dockable.scala	Sat May 22 22:05:41 2010 +0200
     3.3 @@ -1,7 +1,7 @@
     3.4  /*  Title:      Tools/jEdit/src/jedit/protocol_dockable.scala
     3.5      Author:     Makarius
     3.6  
     3.7 -Dockable window for raw protocol messages.
     3.8 +Dockable window for protocol messages.
     3.9  */
    3.10  
    3.11  package isabelle.jedit
    3.12 @@ -10,45 +10,30 @@
    3.13  import isabelle._
    3.14  
    3.15  import scala.actors.Actor._
    3.16 -
    3.17 -import java.awt.{Dimension, Graphics, BorderLayout}
    3.18 -import javax.swing.{JPanel, JTextArea, JScrollPane}
    3.19 +import scala.swing.{TextArea, ScrollPane}
    3.20  
    3.21  import org.gjt.sp.jedit.View
    3.22 -import org.gjt.sp.jedit.gui.DockableWindowManager
    3.23  
    3.24  
    3.25 -class Protocol_Dockable(view: View, position: String) extends JPanel(new BorderLayout)
    3.26 +class Protocol_Dockable(view: View, position: String) extends Dockable(view, position)
    3.27  {
    3.28 -  if (position == DockableWindowManager.FLOATING)
    3.29 -    setPreferredSize(new Dimension(500, 250))
    3.30 +  private val text_area = new TextArea
    3.31 +  set_content(new ScrollPane(text_area))
    3.32  
    3.33 -  private val text_area = new JTextArea
    3.34 -  add(new JScrollPane(text_area), BorderLayout.CENTER)
    3.35  
    3.36 +  /* main actor */
    3.37  
    3.38 -  /* actor wiring */
    3.39 -
    3.40 -  private val protocol_actor = actor {
    3.41 +  private val main_actor = actor {
    3.42      loop {
    3.43        react {
    3.44          case result: Isabelle_Process.Result =>
    3.45            Swing_Thread.now { text_area.append(result.message.toString + "\n") }
    3.46  
    3.47 -        case bad => System.err.println("protocol_actor: ignoring bad message " + bad)
    3.48 +        case bad => System.err.println("Protocol_Dockable: ignoring bad message " + bad)
    3.49        }
    3.50      }
    3.51    }
    3.52  
    3.53 -  override def addNotify()
    3.54 -  {
    3.55 -    super.addNotify()
    3.56 -    Isabelle.session.raw_results += protocol_actor
    3.57 -  }
    3.58 -
    3.59 -  override def removeNotify()
    3.60 -  {
    3.61 -    Isabelle.session.raw_results -= protocol_actor
    3.62 -    super.removeNotify()
    3.63 -  }
    3.64 +  override def init() { Isabelle.session.raw_results += main_actor }
    3.65 +  override def exit() { Isabelle.session.raw_results -= main_actor }
    3.66  }
     4.1 --- a/src/Tools/jEdit/src/jedit/raw_output_dockable.scala	Sat May 22 21:48:01 2010 +0200
     4.2 +++ b/src/Tools/jEdit/src/jedit/raw_output_dockable.scala	Sat May 22 22:05:41 2010 +0200
     4.3 @@ -10,45 +10,31 @@
     4.4  import isabelle._
     4.5  
     4.6  import scala.actors.Actor._
     4.7 -
     4.8 -import java.awt.{Dimension, Graphics, BorderLayout}
     4.9 -import javax.swing.{JPanel, JTextArea, JScrollPane}
    4.10 +import scala.swing.{TextArea, ScrollPane}
    4.11  
    4.12  import org.gjt.sp.jedit.View
    4.13 -import org.gjt.sp.jedit.gui.DockableWindowManager
    4.14  
    4.15  
    4.16 -class Raw_Output_Dockable(view: View, position: String) extends JPanel(new BorderLayout)
    4.17 +class Raw_Output_Dockable(view: View, position: String)
    4.18 +  extends Dockable(view: View, position: String)
    4.19  {
    4.20 -  if (position == DockableWindowManager.FLOATING)
    4.21 -    setPreferredSize(new Dimension(500, 250))
    4.22 +  private val text_area = new TextArea
    4.23 +  set_content(new ScrollPane(text_area))
    4.24  
    4.25 -  private val text_area = new JTextArea
    4.26 -  add(new JScrollPane(text_area), BorderLayout.CENTER)
    4.27  
    4.28 +  /* main actor */
    4.29  
    4.30 -  /* actor wiring */
    4.31 -
    4.32 -  private val raw_output_actor = actor {
    4.33 +  private val main_actor = actor {
    4.34      loop {
    4.35        react {
    4.36          case result: Isabelle_Process.Result =>
    4.37            Swing_Thread.now { text_area.append(XML.content(result.message).mkString) }
    4.38  
    4.39 -        case bad => System.err.println("raw_output_actor: ignoring bad message " + bad)
    4.40 +        case bad => System.err.println("Raw_Output_Dockable: ignoring bad message " + bad)
    4.41        }
    4.42      }
    4.43    }
    4.44  
    4.45 -  override def addNotify()
    4.46 -  {
    4.47 -    super.addNotify()
    4.48 -    Isabelle.session.raw_output += raw_output_actor
    4.49 -  }
    4.50 -
    4.51 -  override def removeNotify()
    4.52 -  {
    4.53 -    Isabelle.session.raw_output -= raw_output_actor
    4.54 -    super.removeNotify()
    4.55 -  }
    4.56 +  override def init() { Isabelle.session.raw_output += main_actor }
    4.57 +  override def exit() { Isabelle.session.raw_output -= main_actor }
    4.58  }