annotate src/name/blackcap/clipman/SettingsDialog.kt @ 41:33fbe3a78d84

Got the settings stuff compiling (untested).
author David Barts <n5jrn@me.com>
date Sat, 08 Feb 2020 22:10:01 -0700
parents
children 339e2da5bf83
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
41
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
1 /*
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
2 * The dialog that controls font corecion.
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
3 */
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
4 package name.blackcap.clipman
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
5
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
6 import java.awt.Color
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
7 import java.awt.Container
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
8 import java.awt.Dimension
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
9 import java.awt.Font
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
10 import java.awt.GraphicsEnvironment
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
11 import java.awt.Toolkit
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
12 import java.awt.event.ActionEvent
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
13 import java.awt.event.ActionListener
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
14 import java.io.BufferedWriter
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
15 import java.io.FileOutputStream
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
16 import java.io.IOException
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
17 import java.io.OutputStreamWriter
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
18 import java.util.Hashtable
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
19 import java.util.Properties
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
20 import java.util.logging.Level
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
21 import java.util.logging.Logger
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
22 import javax.swing.*
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
23 import javax.swing.event.ChangeEvent
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
24 import javax.swing.event.ChangeListener
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
25 import kotlin.math.log10
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
26 import kotlin.math.pow
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
27 import kotlin.math.roundToInt
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
28 import kotlin.text.toFloat
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
29 import kotlin.text.toInt
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
30
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
31 /* work around name shadowing */
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
32 private val _PROPS = PROPERTIES
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
33
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
34 class SettingsDialog: JDialog(frame.v), ActionListener, ChangeListener {
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
35 /* the proportional font family */
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
36 private val _pFamily = JComboBox<String>(FONTS).apply {
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
37 selectedItem = _PROPS.getString("prop.family")
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
38 alignmentX = JComboBox.LEFT_ALIGNMENT
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
39 }
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
40 val pFamily: String
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
41 get() {
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
42 return _pFamily.selectedItem as String
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
43 }
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
44
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
45 /* the proportional font size */
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
46 private val _pSize = JComboBox<Float>(SIZES).also {
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
47 it.selectedItem = _PROPS.getFloat("prop.size")
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
48 it.alignmentX = JComboBox.LEFT_ALIGNMENT
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
49 it.setEditable(true)
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
50 }
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
51 val pSize: Float
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
52 get() {
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
53 return _pSize.selectedItem as Float
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
54 }
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
55
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
56 /* the monospaced font family */
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
57 private val _mFamily = JComboBox<String>(FONTS).apply {
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
58 selectedItem = _PROPS.getString("mono.family")
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
59 alignmentX = JComboBox.LEFT_ALIGNMENT
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
60 }
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
61 val mFamily: String
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
62 get() {
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
63 return _mFamily.selectedItem as String
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
64 }
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
65
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
66 /* the monospaced font size */
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
67 private val _mSize = JComboBox<Float>(SIZES).also {
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
68 it.selectedItem = _PROPS.getFloat("mono.size")
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
69 it.alignmentX = JComboBox.LEFT_ALIGNMENT
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
70 it.setEditable(true)
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
71 }
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
72 val mSize: Float
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
73 get() {
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
74 return _mSize.selectedItem as Float
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
75 }
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
76
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
77 /* max queue length */
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
78 private val _qLength = _PROPS.getInt("queue.length")
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
79 private val _qlSlider = JSlider(10000, 30000, spinToSlide(_qLength)).also {
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
80 it.majorTickSpacing = 10000
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
81 it.paintTicks = true
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
82 it.labelTable = Hashtable<Int, String>().apply {
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
83 put(10000, "10")
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
84 put(20000, "100")
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
85 put(30000, "1000")
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
86 }
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
87 it.addChangeListener(this)
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
88 }
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
89 private val _qlSpinner = JSpinner(SpinnerNumberModel(_qLength, 10, 1000, 1)).also {
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
90 it.addChangeListener(this)
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
91 }
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
92 val qLength: Int
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
93 get() {
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
94 return _qlSpinner.value as Int
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
95 }
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
96
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
97 /* standard spacing between elements (10 pixels ≅ 1/7") and half that */
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
98 private val BW = 5
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
99 private val BW2 = 10
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
100
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
101 /* buttons */
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
102 private val _ok = JButton("OK").also {
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
103 it.actionCommand = "OK"
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
104 it.addActionListener(this)
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
105 }
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
106
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
107 private val _cancel = JButton("Cancel").also {
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
108 it.actionCommand = "Cancel"
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
109 it.addActionListener(this)
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
110 }
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
111
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
112 private val _rad = JButton("Restore All Defaults").also {
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
113 it.actionCommand = "Restore"
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
114 it.addActionListener(this)
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
115 }
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
116
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
117 /* initializer */
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
118 init {
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
119 title = "Preferences"
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
120 contentPane.apply {
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
121 add(Box(BoxLayout.Y_AXIS).apply {
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
122 add(Box(BoxLayout.Y_AXIS).apply {
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
123 border = BorderFactory.createEmptyBorder(BW2, BW2, BW, BW2)
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
124 alignmentX = Box.CENTER_ALIGNMENT
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
125 add(leftLabel("Default proportionally-spaced font:"))
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
126 add(Box.createVerticalStrut(BW))
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
127 add(Box(BoxLayout.X_AXIS).apply {
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
128 alignmentX = Box.LEFT_ALIGNMENT
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
129 add(Box.createGlue())
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
130 add(Box(BoxLayout.Y_AXIS).apply {
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
131 add(leftLabel("Family:"))
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
132 add(_pFamily)
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
133 })
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
134 add(Box.createGlue())
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
135 add(Box(BoxLayout.Y_AXIS).apply {
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
136 add(leftLabel("Size:"))
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
137 add(_pSize)
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
138 })
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
139 add(Box.createGlue())
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
140 })
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
141 })
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
142 add(JSeparator())
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
143 add(Box(BoxLayout.Y_AXIS).apply {
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
144 alignmentX = Box.CENTER_ALIGNMENT
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
145 border = BorderFactory.createEmptyBorder(BW, BW2, BW, BW2)
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
146 add(leftLabel("Default monospaced font:"))
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
147 add(Box.createVerticalStrut(BW))
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
148 add(Box(BoxLayout.X_AXIS).apply {
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
149 alignmentX = Box.LEFT_ALIGNMENT
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
150 add(Box.createGlue())
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
151 add(Box(BoxLayout.Y_AXIS).apply {
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
152 add(leftLabel("Family:"))
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
153 add(_mFamily)
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
154 })
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
155 add(Box.createGlue())
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
156 add(Box(BoxLayout.Y_AXIS).apply {
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
157 add(leftLabel("Size:"))
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
158 add(_mSize)
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
159 })
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
160 add(Box.createGlue())
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
161 })
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
162 })
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
163 add(JSeparator())
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
164 add(Box(BoxLayout.Y_AXIS).apply {
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
165 alignmentX = Box.CENTER_ALIGNMENT
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
166 border = BorderFactory.createEmptyBorder(BW, BW2, BW, BW2)
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
167 add(leftLabel("Maximum queue size:"))
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
168 add(Box.createVerticalStrut(BW))
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
169 add(Box(BoxLayout.X_AXIS).apply {
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
170 alignmentX = Box.LEFT_ALIGNMENT
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
171 add(Box.createGlue())
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
172 add(_qlSlider)
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
173 add(Box.createGlue())
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
174 add(_qlSpinner)
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
175 add(Box.createGlue())
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
176 })
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
177 })
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
178 add(JSeparator())
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
179 add(Box(BoxLayout.X_AXIS).apply {
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
180 alignmentX = Box.CENTER_ALIGNMENT
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
181 border = BorderFactory.createEmptyBorder(BW, BW2, BW, BW2)
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
182 add(Box.createGlue())
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
183 add(_rad)
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
184 add(Box.createGlue())
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
185 add(_cancel)
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
186 add(Box.createGlue())
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
187 add(_ok)
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
188 add(Box.createGlue())
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
189 })
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
190 })
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
191 }
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
192 rootPane.setDefaultButton(_ok)
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
193 pack()
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
194 setResizable(false)
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
195 }
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
196
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
197 override fun actionPerformed(e: ActionEvent) {
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
198 when (e.actionCommand) {
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
199 "OK" -> {
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
200 writeProperties()
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
201 queue.v.maxSize = qLength
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
202 setVisible(false)
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
203 }
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
204 "Cancel" -> setVisible(false)
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
205 "Restore" -> revertProperties()
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
206 }
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
207 }
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
208
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
209 override fun stateChanged(e: ChangeEvent) {
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
210 when (val source = e.source) {
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
211 source === _qlSlider ->
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
212 _qlSpinner.value = (10.0).pow(_qlSlider.value.toDouble() / 10000.0).roundToInt()
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
213 source === _qlSpinner ->
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
214 _qlSlider.value = spinToSlide(_qlSpinner.value as Int)
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
215 }
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
216 }
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
217
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
218 private fun spinToSlide(value: Int): Int =
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
219 (log10(value.toDouble()) * 10000.0).roundToInt()
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
220
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
221 private fun leftLabel(text: String) = JLabel(text).apply {
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
222 alignmentX = JLabel.LEFT_ALIGNMENT
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
223 }
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
224
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
225 private fun badSize(control: JComboBox<Float>, default: Float, fontType: String): Boolean {
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
226 val size = control.selectedItem as? Float
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
227 if (size == null || size < 1.0f) {
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
228 JOptionPane.showMessageDialog(frame.v,
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
229 "Invalid ${fontType} font size.",
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
230 "Error",
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
231 JOptionPane.ERROR_MESSAGE)
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
232 control.selectedItem = default
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
233 return true
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
234 }
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
235 return false
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
236 }
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
237
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
238 private fun revertProperties()
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
239 {
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
240 val params = arrayOf("mono.family", "mono.size", "prop.family", "prop.size", "queue.length")
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
241 for (param in params) {
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
242 _PROPS.put(param, DPROPERTIES.get(param))
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
243 }
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
244 _mFamily.selectedItem = _PROPS.getString("mono.family")
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
245 _mSize.selectedItem = _PROPS.getFloat("mono.size")
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
246 _pFamily.selectedItem = _PROPS.getString("prop.family")
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
247 _pSize.selectedItem = _PROPS.getFloat("prop.size")
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
248 val ql = _PROPS.getInt("queue.length")
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
249 _qlSpinner.value = ql
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
250 _qlSlider.value = spinToSlide(ql)
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
251 }
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
252
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
253 private fun writeProperties()
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
254 {
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
255 try {
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
256 BufferedWriter(OutputStreamWriter(FileOutputStream(PROP_FILE), CHARSET)).use {
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
257 _PROPS.put("mono.family", mFamily)
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
258 _PROPS.put("mono.size", mSize.toString())
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
259 _PROPS.put("prop.family", pFamily)
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
260 _PROPS.put("prop.size", pSize.toString())
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
261 _PROPS.put("queue.length", qLength.toString())
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
262 _PROPS.store(it, null)
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
263 }
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
264 } catch (e: IOException) {
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
265 LOGGER.log(Level.WARNING, "IOException writing properties file")
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
266 val message = e.message
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
267 if (message != null && !message.isEmpty()) {
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
268 LOGGER.log(Level.WARNING, message)
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
269 }
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
270 JOptionPane.showMessageDialog(frame.v,
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
271 "Unable to write settings.",
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
272 "Error",
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
273 JOptionPane.ERROR_MESSAGE)
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
274 }
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
275 }
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
276 }
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
277
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
278 val settingsDialog = SettingsDialog()
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
279
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
280 fun Properties.getString(key: String): String = get(key) as String
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
281
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
282 fun Properties.getInt(key: String): Int = getString(key).toInt()
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
283
33fbe3a78d84 Got the settings stuff compiling (untested).
David Barts <n5jrn@me.com>
parents:
diff changeset
284 fun Properties.getFloat(key: String): Float = getString(key).toFloat()