src/Pure/System/gui_setup.scala
author wenzelm
Sat, 17 Apr 2010 20:42:26 +0200
changeset 36193 067a01827fca
parent 34050 bc71778a327d
child 36195 9c098598db2a
permissions -rw-r--r--
improved ISABELLE_JAVA, based on THIS_JAVA of the actually running JVM;
wenzelm@31836
     1
/*  Title:      Pure/System/gui_setup.scala
wenzelm@31836
     2
    Author:     Makarius
wenzelm@31836
     3
wenzelm@31836
     4
GUI for basic system setup.
wenzelm@31836
     5
*/
wenzelm@31836
     6
wenzelm@31836
     7
package isabelle
wenzelm@31836
     8
wenzelm@31837
     9
import javax.swing.UIManager
wenzelm@31837
    10
wenzelm@31836
    11
import scala.swing._
wenzelm@31836
    12
import scala.swing.event._
wenzelm@31836
    13
wenzelm@31836
    14
wenzelm@31837
    15
object GUI_Setup extends GUIApplication
wenzelm@31836
    16
{
wenzelm@31837
    17
  def main(args: Array[String]) =
wenzelm@31837
    18
  {
wenzelm@31884
    19
    Swing_Thread.later {
wenzelm@31837
    20
      UIManager.setLookAndFeel(Platform.look_and_feel)
wenzelm@31837
    21
      top.pack()
wenzelm@31837
    22
      top.visible = true
wenzelm@31837
    23
    }
wenzelm@31837
    24
  }
wenzelm@31837
    25
wenzelm@31836
    26
  def top = new MainFrame {
wenzelm@31836
    27
    title = "Isabelle setup"
wenzelm@31836
    28
wenzelm@31843
    29
    // components
wenzelm@31843
    30
    val text = new TextArea {
wenzelm@31843
    31
      editable = false
wenzelm@31859
    32
      columns = 80
wenzelm@31859
    33
      rows = 20
wenzelm@31843
    34
      xLayoutAlignment = 0.5
wenzelm@31843
    35
    }
wenzelm@31843
    36
    val ok = new Button {
wenzelm@31843
    37
      text = "OK"
wenzelm@31843
    38
      xLayoutAlignment = 0.5
wenzelm@31843
    39
    }
wenzelm@31836
    40
    contents = new BoxPanel(Orientation.Vertical) {
wenzelm@31843
    41
      contents += text
wenzelm@31836
    42
      contents += ok
wenzelm@31836
    43
    }
wenzelm@31836
    44
wenzelm@31843
    45
    // values
wenzelm@31843
    46
    Platform.defaults match {
wenzelm@31843
    47
      case None =>
wenzelm@31844
    48
      case Some((name, None)) => text.append("Platform: " + name + "\n")
wenzelm@31843
    49
      case Some((name1, Some(name2))) =>
wenzelm@31844
    50
        text.append("Main platform: " + name1 + "\n")
wenzelm@31844
    51
        text.append("Alternative platform: " + name2 + "\n")
wenzelm@31843
    52
    }
wenzelm@31928
    53
    if (Platform.is_windows) {
wenzelm@34050
    54
      text.append("Cygwin root: " + Cygwin.check_root() + "\n")
wenzelm@31928
    55
    }
wenzelm@31928
    56
    try {
wenzelm@31928
    57
      val isabelle_system = new Isabelle_System
wenzelm@31928
    58
      text.append("Isabelle home: " + isabelle_system.getenv("ISABELLE_HOME") + "\n")
wenzelm@36193
    59
      text.append("Isabelle java: " + isabelle_system.this_java())
wenzelm@31928
    60
    } catch {
wenzelm@31928
    61
      case e: RuntimeException => text.append(e.getMessage + "\n")
wenzelm@31928
    62
    }
wenzelm@31843
    63
wenzelm@31843
    64
    // reactions
wenzelm@31836
    65
    listenTo(ok)
wenzelm@31836
    66
    reactions += {
wenzelm@31836
    67
      case ButtonClicked(`ok`) => System.exit(0)
wenzelm@31836
    68
    }
wenzelm@31836
    69
  }
wenzelm@31836
    70
}
wenzelm@31836
    71