12 import scala.actors.Actor._ |
12 import scala.actors.Actor._ |
13 |
13 |
14 import scala.swing.{FlowPanel, Button, CheckBox} |
14 import scala.swing.{FlowPanel, Button, CheckBox} |
15 import scala.swing.event.ButtonClicked |
15 import scala.swing.event.ButtonClicked |
16 |
16 |
17 import javax.swing.JPanel |
17 import java.awt.BorderLayout |
18 import java.awt.{BorderLayout, Dimension} |
|
19 import java.awt.event.{ComponentEvent, ComponentAdapter} |
18 import java.awt.event.{ComponentEvent, ComponentAdapter} |
20 |
19 |
21 import org.gjt.sp.jedit.View |
20 import org.gjt.sp.jedit.View |
22 import org.gjt.sp.jedit.gui.DockableWindowManager |
|
23 |
21 |
24 |
22 |
25 |
23 class Output_Dockable(view: View, position: String) extends Dockable(view, position) |
26 class Output_Dockable(view: View, position: String) extends JPanel(new BorderLayout) |
|
27 { |
24 { |
28 if (position == DockableWindowManager.FLOATING) |
|
29 setPreferredSize(new Dimension(500, 250)) |
|
30 |
|
31 val html_panel = new HTML_Panel(Isabelle.system, scala.math.round(Isabelle.font_size())) |
25 val html_panel = new HTML_Panel(Isabelle.system, scala.math.round(Isabelle.font_size())) |
32 add(html_panel, BorderLayout.CENTER) |
26 add(html_panel, BorderLayout.CENTER) |
33 |
27 |
34 |
28 |
35 /* controls */ |
29 /* controls */ |
79 Document_Model(view.getBuffer) match { |
73 Document_Model(view.getBuffer) match { |
80 case Some(model) => |
74 case Some(model) => |
81 val document = model.recent_document |
75 val document = model.recent_document |
82 document.command_at(view.getTextArea.getCaretPosition) match { |
76 document.command_at(view.getTextArea.getCaretPosition) match { |
83 case Some((cmd, _)) => |
77 case Some((cmd, _)) => |
84 output_actor ! Render(filtered_results(document, cmd)) |
78 main_actor ! Render(filtered_results(document, cmd)) |
85 case None => |
79 case None => |
86 } |
80 } |
87 case None => |
81 case None => |
88 } |
82 } |
89 } |
83 } |
112 case None => |
106 case None => |
113 case Some(model) => |
107 case Some(model) => |
114 html_panel.render(filtered_results(model.recent_document, cmd)) |
108 html_panel.render(filtered_results(model.recent_document, cmd)) |
115 } |
109 } |
116 |
110 |
117 case bad => System.err.println("output_actor: ignoring bad message " + bad) |
111 case bad => System.err.println("Output_Dockable: ignoring bad message " + bad) |
118 } |
112 } |
119 } |
113 } |
120 } |
114 } |
121 |
115 |
122 override def addNotify() |
116 override def init() |
123 { |
117 { |
124 super.addNotify() |
118 Isabelle.session.results += main_actor |
125 Isabelle.session.results += output_actor |
119 Isabelle.session.global_settings += main_actor |
126 Isabelle.session.global_settings += output_actor |
|
127 } |
120 } |
128 |
121 |
129 override def removeNotify() |
122 override def exit() |
130 { |
123 { |
131 Isabelle.session.results -= output_actor |
124 Isabelle.session.results -= main_actor |
132 Isabelle.session.global_settings -= output_actor |
125 Isabelle.session.global_settings -= main_actor |
133 super.removeNotify() |
|
134 } |
126 } |
135 |
127 |
136 |
128 |
137 /* resize */ |
129 /* resize */ |
138 |
130 |