wenzelm@34765: /* wenzelm@34765: * HTML panel based on Lobo/Cobra wenzelm@34765: * wenzelm@34765: * @author Makarius wenzelm@34765: */ wenzelm@34765: wenzelm@34765: package isabelle.proofdocument wenzelm@34765: wenzelm@34765: wenzelm@34765: import java.io.StringReader wenzelm@34765: import java.awt.{BorderLayout, Dimension} wenzelm@34775: import java.awt.event.MouseEvent wenzelm@34775: wenzelm@34765: import javax.swing.{JButton, JPanel, JScrollPane} wenzelm@34765: import java.util.logging.{Logger, Level} wenzelm@34765: wenzelm@34765: import org.w3c.dom.Document wenzelm@34775: import org.w3c.dom.html2.HTMLElement wenzelm@34765: wenzelm@34765: import org.lobobrowser.html.parser.{DocumentBuilderImpl, InputSourceImpl} wenzelm@34765: import org.lobobrowser.html.gui.HtmlPanel wenzelm@34765: import org.lobobrowser.html.domimpl.{HTMLDocumentImpl, HTMLStyleElementImpl, NodeImpl} wenzelm@34765: import org.lobobrowser.html.test.{SimpleHtmlRendererContext, SimpleUserAgentContext} wenzelm@34765: wenzelm@34765: import scala.io.Source wenzelm@34765: import scala.actors.Actor._ wenzelm@34765: wenzelm@34765: wenzelm@34775: object HTML_Panel wenzelm@34775: { wenzelm@34775: sealed abstract class Event { val element: HTMLElement; val mouse: MouseEvent } wenzelm@34775: case class Context_Menu(val element: HTMLElement, mouse: MouseEvent) extends Event wenzelm@34775: case class Mouse_Click(val element: HTMLElement, mouse: MouseEvent) extends Event wenzelm@34775: case class Double_Click(val element: HTMLElement, mouse: MouseEvent) extends Event wenzelm@34775: case class Mouse_Over(val element: HTMLElement, mouse: MouseEvent) extends Event wenzelm@34775: case class Mouse_Out(val element: HTMLElement, mouse: MouseEvent) extends Event wenzelm@34775: } wenzelm@34775: wenzelm@34775: wenzelm@34775: class HTML_Panel( wenzelm@34775: sys: Isabelle_System, wenzelm@34775: initial_font_size: Int, wenzelm@34775: handler: PartialFunction[HTML_Panel.Event, Unit]) extends HtmlPanel wenzelm@34765: { wenzelm@34765: // global logging wenzelm@34765: Logger.getLogger("org.lobobrowser").setLevel(Level.WARNING) wenzelm@34765: wenzelm@34765: wenzelm@34765: /* document template */ wenzelm@34765: wenzelm@34765: private def try_file(name: String): String = wenzelm@34765: { wenzelm@34765: val file = sys.platform_file(name) wenzelm@34765: if (file.exists) Source.fromFile(file).mkString else "" wenzelm@34765: } wenzelm@34765: wenzelm@34765: private def template(font_size: Int): String = wenzelm@34765: """ wenzelm@34765: wenzelm@34765: wenzelm@34765:
wenzelm@34770: wenzelm@34765: wenzelm@34765: