src/Pure/GUI/gui.scala
changeset 75852 fcc25bb49def
parent 75839 29441f2bfe81
child 75853 f981111768ec
--- a/src/Pure/GUI/gui.scala	Sat Aug 13 21:43:45 2022 +0200
+++ b/src/Pure/GUI/gui.scala	Sat Aug 13 22:41:45 2022 +0200
@@ -13,8 +13,8 @@
 import java.awt.geom.AffineTransform
 import javax.swing.{ImageIcon, JButton, JDialog, JFrame, JLabel, JLayeredPane, JOptionPane,
   JTextField, JWindow, LookAndFeel, UIManager, SwingUtilities}
-import scala.swing.{ComboBox, ScrollPane, TextArea}
-import scala.swing.event.SelectionChanged
+import scala.swing.{CheckBox, ComboBox, ScrollPane, TextArea}
+import scala.swing.event.{ButtonClicked, SelectionChanged}
 
 
 object GUI {
@@ -111,7 +111,15 @@
     }
 
 
-  /* variations on ComboBox */
+  /* basic GUI components */
+
+  class Bool(label: String, init: Boolean = false) extends CheckBox(label) {
+    def clicked(state: Boolean): Unit = {}
+    def clicked(): Unit = {}
+
+    selected = init
+    reactions += { case ButtonClicked(_) => clicked(selected); clicked() }
+  }
 
   class Selector[A](val entries: List[A]) extends ComboBox[A](entries) {
     def changed(): Unit = {}
@@ -120,6 +128,9 @@
     reactions += { case SelectionChanged(_) => changed() }
   }
 
+
+  /* zoom factor */
+
   private val Zoom_Factor = "([0-9]+)%?".r
 
   class Zoom extends Selector[String](