src/Tools/Graphview/src/dockable.scala
author wenzelm
Tue, 25 Sep 2012 20:28:47 +0200
changeset 49565 ea4308b7ef0f
parent 49557 61988f9df94d
permissions -rw-r--r--
ML support for generic graph display, with browser and graphview backends (via print modes); reverse graph layout (again), according to the graph orientation provided by ML; simplified scala types -- eliminated unused type parameters; more explicit Model.Info, Model.Graph; renamed isabelle.graphview.Graphview_Frame to isabelle.graphview.Frame in accordance to file name; removed obsolete Graph_XML and Tooltips; tuned graphview command line; more generous JVM resources via GRAPHVIEW_JAVA_OPTIONS;

/*  Title:      Tools/Graphview/src/dockable.scala
    Author:     Markus Kaiser, TU Muenchen

Graphview jEdit dockable.
*/

package isabelle.graphview


import isabelle._
import isabelle.jedit._

import scala.actors.Actor._
import scala.swing.{FileChooser}

import java.io.File
import org.gjt.sp.jedit.View


class Graphview_Dockable(view: View, position: String)
extends Dockable(view, position)
{
  //FIXME: How does the xml get here?
  val xml: XML.Tree =
  try {
    val chooser = new FileChooser()
    val path: File = chooser.showOpenDialog(null) match {
        case FileChooser.Result.Approve =>
          chooser.selectedFile
        case _ => new File("~/local_deps.graph")
    }
    YXML.parse_body(Symbol.decode(io.Source.fromFile(path).mkString)).head
  } catch {
    case ex: Exception => System.err.println(ex.getMessage); null
  }


  set_content(new Main_Panel(xml))

  /* main actor */

  private val main_actor = actor {
    loop {
      react {
        case result: Isabelle_Process.Output =>
        case bad => System.err.println("Protocol_Dockable: ignoring bad message " + bad)
      }
    }
  }

  override def init() { }
  override def exit() { }
}