annotate src/name/blackcap/exifwasher/HelpDialog.kt @ 53:61a06e050bac

Fix help dialog.
author David Barts <n5jrn@me.com>
date Thu, 07 May 2020 12:33:52 -0700
parents 39895d44a287
children 40911898ed23
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
50
fb407182ba76 Add help menu item, UNTESTED.
David Barts <davidb@stashtea.com>
parents:
diff changeset
1 /*
fb407182ba76 Add help menu item, UNTESTED.
David Barts <davidb@stashtea.com>
parents:
diff changeset
2 * The dialog that displays the Exif data in a single file (display only,
fb407182ba76 Add help menu item, UNTESTED.
David Barts <davidb@stashtea.com>
parents:
diff changeset
3 * no changing). We do this after washing.
fb407182ba76 Add help menu item, UNTESTED.
David Barts <davidb@stashtea.com>
parents:
diff changeset
4 */
fb407182ba76 Add help menu item, UNTESTED.
David Barts <davidb@stashtea.com>
parents:
diff changeset
5 package name.blackcap.exifwasher
fb407182ba76 Add help menu item, UNTESTED.
David Barts <davidb@stashtea.com>
parents:
diff changeset
6
53
61a06e050bac Fix help dialog.
David Barts <n5jrn@me.com>
parents: 52
diff changeset
7 import java.awt.Color
50
fb407182ba76 Add help menu item, UNTESTED.
David Barts <davidb@stashtea.com>
parents:
diff changeset
8 import java.awt.Dimension
53
61a06e050bac Fix help dialog.
David Barts <n5jrn@me.com>
parents: 52
diff changeset
9 import java.awt.Font
50
fb407182ba76 Add help menu item, UNTESTED.
David Barts <davidb@stashtea.com>
parents:
diff changeset
10 import java.awt.event.ActionEvent
fb407182ba76 Add help menu item, UNTESTED.
David Barts <davidb@stashtea.com>
parents:
diff changeset
11 import java.awt.event.ActionListener
53
61a06e050bac Fix help dialog.
David Barts <n5jrn@me.com>
parents: 52
diff changeset
12 import java.io.BufferedReader
50
fb407182ba76 Add help menu item, UNTESTED.
David Barts <davidb@stashtea.com>
parents:
diff changeset
13 import java.io.File
fb407182ba76 Add help menu item, UNTESTED.
David Barts <davidb@stashtea.com>
parents:
diff changeset
14 import java.io.IOException
fb407182ba76 Add help menu item, UNTESTED.
David Barts <davidb@stashtea.com>
parents:
diff changeset
15 import java.io.InputStream
fb407182ba76 Add help menu item, UNTESTED.
David Barts <davidb@stashtea.com>
parents:
diff changeset
16 import java.io.InputStreamReader
fb407182ba76 Add help menu item, UNTESTED.
David Barts <davidb@stashtea.com>
parents:
diff changeset
17 import java.util.logging.Level
fb407182ba76 Add help menu item, UNTESTED.
David Barts <davidb@stashtea.com>
parents:
diff changeset
18 import java.util.logging.Logger
fb407182ba76 Add help menu item, UNTESTED.
David Barts <davidb@stashtea.com>
parents:
diff changeset
19 import javax.swing.*
53
61a06e050bac Fix help dialog.
David Barts <n5jrn@me.com>
parents: 52
diff changeset
20 import javax.swing.UIManager
61a06e050bac Fix help dialog.
David Barts <n5jrn@me.com>
parents: 52
diff changeset
21 import javax.swing.text.html.HTMLEditorKit
61a06e050bac Fix help dialog.
David Barts <n5jrn@me.com>
parents: 52
diff changeset
22 import javax.swing.text.html.StyleSheet
50
fb407182ba76 Add help menu item, UNTESTED.
David Barts <davidb@stashtea.com>
parents:
diff changeset
23
fb407182ba76 Add help menu item, UNTESTED.
David Barts <davidb@stashtea.com>
parents:
diff changeset
24 import name.blackcap.exifwasher.exiv2.*
fb407182ba76 Add help menu item, UNTESTED.
David Barts <davidb@stashtea.com>
parents:
diff changeset
25
fb407182ba76 Add help menu item, UNTESTED.
David Barts <davidb@stashtea.com>
parents:
diff changeset
26 class HelpDialog : JDialog(Application.mainFrame) {
fb407182ba76 Add help menu item, UNTESTED.
David Barts <davidb@stashtea.com>
parents:
diff changeset
27 private val BW = 9
fb407182ba76 Add help menu item, UNTESTED.
David Barts <davidb@stashtea.com>
parents:
diff changeset
28 private val BW2 = BW * 2
fb407182ba76 Add help menu item, UNTESTED.
David Barts <davidb@stashtea.com>
parents:
diff changeset
29 private val WIDTH = 640
fb407182ba76 Add help menu item, UNTESTED.
David Barts <davidb@stashtea.com>
parents:
diff changeset
30 private val HEIGHT = 480
fb407182ba76 Add help menu item, UNTESTED.
David Barts <davidb@stashtea.com>
parents:
diff changeset
31
fb407182ba76 Add help menu item, UNTESTED.
David Barts <davidb@stashtea.com>
parents:
diff changeset
32 private val dismissButton = JButton("Dismiss").also {
fb407182ba76 Add help menu item, UNTESTED.
David Barts <davidb@stashtea.com>
parents:
diff changeset
33 it.addActionListener(ActionListener { setVisible(false) })
fb407182ba76 Add help menu item, UNTESTED.
David Barts <davidb@stashtea.com>
parents:
diff changeset
34 }
fb407182ba76 Add help menu item, UNTESTED.
David Barts <davidb@stashtea.com>
parents:
diff changeset
35
53
61a06e050bac Fix help dialog.
David Barts <n5jrn@me.com>
parents: 52
diff changeset
36 /*
61a06e050bac Fix help dialog.
David Barts <n5jrn@me.com>
parents: 52
diff changeset
37 * The stock HTMLEditorKit shares all style sheet data between all its
61a06e050bac Fix help dialog.
David Barts <n5jrn@me.com>
parents: 52
diff changeset
38 * instances. How unbelievably braindamaged. Correct that.
61a06e050bac Fix help dialog.
David Barts <n5jrn@me.com>
parents: 52
diff changeset
39 */
61a06e050bac Fix help dialog.
David Barts <n5jrn@me.com>
parents: 52
diff changeset
40 private class MyEditorKit: HTMLEditorKit() {
61a06e050bac Fix help dialog.
David Barts <n5jrn@me.com>
parents: 52
diff changeset
41 private var _styleSheet: StyleSheet = defaultStyleSheet
61a06e050bac Fix help dialog.
David Barts <n5jrn@me.com>
parents: 52
diff changeset
42 override fun getStyleSheet() = _styleSheet
61a06e050bac Fix help dialog.
David Barts <n5jrn@me.com>
parents: 52
diff changeset
43 override fun setStyleSheet(value: StyleSheet) {
61a06e050bac Fix help dialog.
David Barts <n5jrn@me.com>
parents: 52
diff changeset
44 _styleSheet = value
61a06e050bac Fix help dialog.
David Barts <n5jrn@me.com>
parents: 52
diff changeset
45 }
61a06e050bac Fix help dialog.
David Barts <n5jrn@me.com>
parents: 52
diff changeset
46
61a06e050bac Fix help dialog.
David Barts <n5jrn@me.com>
parents: 52
diff changeset
47 /**
61a06e050bac Fix help dialog.
David Barts <n5jrn@me.com>
parents: 52
diff changeset
48 * Return the default style sheet that all HTMLEditorKit's come with.
61a06e050bac Fix help dialog.
David Barts <n5jrn@me.com>
parents: 52
diff changeset
49 */
61a06e050bac Fix help dialog.
David Barts <n5jrn@me.com>
parents: 52
diff changeset
50 val defaultStyleSheet: StyleSheet
61a06e050bac Fix help dialog.
David Barts <n5jrn@me.com>
parents: 52
diff changeset
51 get() {
61a06e050bac Fix help dialog.
David Barts <n5jrn@me.com>
parents: 52
diff changeset
52 return super.getStyleSheet()
61a06e050bac Fix help dialog.
David Barts <n5jrn@me.com>
parents: 52
diff changeset
53 }
61a06e050bac Fix help dialog.
David Barts <n5jrn@me.com>
parents: 52
diff changeset
54 }
61a06e050bac Fix help dialog.
David Barts <n5jrn@me.com>
parents: 52
diff changeset
55
52
39895d44a287 Get help working on Linux.
David Barts <n5jrn@me.com>
parents: 50
diff changeset
56 private val helpPane = JScrollPane(JTextPane().also {
53
61a06e050bac Fix help dialog.
David Barts <n5jrn@me.com>
parents: 52
diff changeset
57 UIManager.getFont("Panel.font")?.let { pFont ->
61a06e050bac Fix help dialog.
David Barts <n5jrn@me.com>
parents: 52
diff changeset
58 it.editorKit = MyEditorKit().also { ek ->
61a06e050bac Fix help dialog.
David Barts <n5jrn@me.com>
parents: 52
diff changeset
59 ek.styleSheet = StyleSheet().apply {
61a06e050bac Fix help dialog.
David Barts <n5jrn@me.com>
parents: 52
diff changeset
60 addRule("body { font-family: \"${pFont.family}\"; font-size: ${pFont.size}; }")
61a06e050bac Fix help dialog.
David Barts <n5jrn@me.com>
parents: 52
diff changeset
61 addStyleSheet(ek.defaultStyleSheet)
61a06e050bac Fix help dialog.
David Barts <n5jrn@me.com>
parents: 52
diff changeset
62 }
61a06e050bac Fix help dialog.
David Barts <n5jrn@me.com>
parents: 52
diff changeset
63 }
61a06e050bac Fix help dialog.
David Barts <n5jrn@me.com>
parents: 52
diff changeset
64 }
52
39895d44a287 Get help working on Linux.
David Barts <n5jrn@me.com>
parents: 50
diff changeset
65 it.text = this::class.java.getResourceAsStream("help.html").bufferedReader().use { it.readText() }
53
61a06e050bac Fix help dialog.
David Barts <n5jrn@me.com>
parents: 52
diff changeset
66 it.setEditable(false)
52
39895d44a287 Get help working on Linux.
David Barts <n5jrn@me.com>
parents: 50
diff changeset
67 }).apply {
39895d44a287 Get help working on Linux.
David Barts <n5jrn@me.com>
parents: 50
diff changeset
68 alignmentX = JScrollPane.CENTER_ALIGNMENT
53
61a06e050bac Fix help dialog.
David Barts <n5jrn@me.com>
parents: 52
diff changeset
69 border = BorderFactory.createCompoundBorder(
61a06e050bac Fix help dialog.
David Barts <n5jrn@me.com>
parents: 52
diff changeset
70 BorderFactory.createEmptyBorder(BW2, BW2, BW, BW2),
61a06e050bac Fix help dialog.
David Barts <n5jrn@me.com>
parents: 52
diff changeset
71 UIManager.getBorder("ScrollPane.border") ?: BorderFactory.createLineBorder(Color.GRAY))
52
39895d44a287 Get help working on Linux.
David Barts <n5jrn@me.com>
parents: 50
diff changeset
72 verticalScrollBarPolicy = ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS
39895d44a287 Get help working on Linux.
David Barts <n5jrn@me.com>
parents: 50
diff changeset
73 horizontalScrollBarPolicy = ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER
39895d44a287 Get help working on Linux.
David Barts <n5jrn@me.com>
parents: 50
diff changeset
74 preferredSize = Dimension(WIDTH, HEIGHT)
39895d44a287 Get help working on Linux.
David Barts <n5jrn@me.com>
parents: 50
diff changeset
75 background = Application.mainFrame.background
39895d44a287 Get help working on Linux.
David Barts <n5jrn@me.com>
parents: 50
diff changeset
76 }
39895d44a287 Get help working on Linux.
David Barts <n5jrn@me.com>
parents: 50
diff changeset
77
39895d44a287 Get help working on Linux.
David Barts <n5jrn@me.com>
parents: 50
diff changeset
78 override fun setVisible(vis: Boolean) {
39895d44a287 Get help working on Linux.
David Barts <n5jrn@me.com>
parents: 50
diff changeset
79 if (vis)
39895d44a287 Get help working on Linux.
David Barts <n5jrn@me.com>
parents: 50
diff changeset
80 helpPane.verticalScrollBar.run { value = minimum }
39895d44a287 Get help working on Linux.
David Barts <n5jrn@me.com>
parents: 50
diff changeset
81 super.setVisible(vis)
50
fb407182ba76 Add help menu item, UNTESTED.
David Barts <davidb@stashtea.com>
parents:
diff changeset
82 }
fb407182ba76 Add help menu item, UNTESTED.
David Barts <davidb@stashtea.com>
parents:
diff changeset
83
fb407182ba76 Add help menu item, UNTESTED.
David Barts <davidb@stashtea.com>
parents:
diff changeset
84 init {
fb407182ba76 Add help menu item, UNTESTED.
David Barts <davidb@stashtea.com>
parents:
diff changeset
85 setVisible(false)
fb407182ba76 Add help menu item, UNTESTED.
David Barts <davidb@stashtea.com>
parents:
diff changeset
86 title = "Help"
fb407182ba76 Add help menu item, UNTESTED.
David Barts <davidb@stashtea.com>
parents:
diff changeset
87 contentPane.apply {
fb407182ba76 Add help menu item, UNTESTED.
David Barts <davidb@stashtea.com>
parents:
diff changeset
88 layout = BoxLayout(this, BoxLayout.Y_AXIS)
52
39895d44a287 Get help working on Linux.
David Barts <n5jrn@me.com>
parents: 50
diff changeset
89 add(helpPane)
50
fb407182ba76 Add help menu item, UNTESTED.
David Barts <davidb@stashtea.com>
parents:
diff changeset
90 add(Box(BoxLayout.X_AXIS).apply {
fb407182ba76 Add help menu item, UNTESTED.
David Barts <davidb@stashtea.com>
parents:
diff changeset
91 alignmentX = Box.CENTER_ALIGNMENT
fb407182ba76 Add help menu item, UNTESTED.
David Barts <davidb@stashtea.com>
parents:
diff changeset
92 border = BorderFactory.createEmptyBorder(BW, BW2, BW2, BW2)
fb407182ba76 Add help menu item, UNTESTED.
David Barts <davidb@stashtea.com>
parents:
diff changeset
93 add(Box.createHorizontalGlue())
fb407182ba76 Add help menu item, UNTESTED.
David Barts <davidb@stashtea.com>
parents:
diff changeset
94 add(dismissButton)
fb407182ba76 Add help menu item, UNTESTED.
David Barts <davidb@stashtea.com>
parents:
diff changeset
95 })
fb407182ba76 Add help menu item, UNTESTED.
David Barts <davidb@stashtea.com>
parents:
diff changeset
96 }
fb407182ba76 Add help menu item, UNTESTED.
David Barts <davidb@stashtea.com>
parents:
diff changeset
97 pack()
fb407182ba76 Add help menu item, UNTESTED.
David Barts <davidb@stashtea.com>
parents:
diff changeset
98 }
fb407182ba76 Add help menu item, UNTESTED.
David Barts <davidb@stashtea.com>
parents:
diff changeset
99 }