view src/name/blackcap/exifwasher/HelpDialog.kt @ 50:fb407182ba76

Add help menu item, UNTESTED.
author David Barts <davidb@stashtea.com>
date Thu, 07 May 2020 08:29:58 -0700
parents
children 39895d44a287
line wrap: on
line source

/*
 * The dialog that displays the Exif data in a single file (display only,
 * no changing). We do this after washing.
 */
package name.blackcap.exifwasher

import java.awt.Color
import java.awt.Dimension
import java.awt.event.ActionEvent
import java.awt.event.ActionListener
import java.io.File
import java.io.IOException
import java.io.BufferedReader
import java.io.InputStream
import java.io.InputStreamReader
import java.util.logging.Level
import java.util.logging.Logger
import javax.swing.*
import javax.swing.table.DefaultTableModel
import javax.swing.table.TableColumn
import javax.swing.table.TableColumnModel

import name.blackcap.exifwasher.exiv2.*

class HelpDialog : JDialog(Application.mainFrame) {
    private val BW = 9
    private val BW2 = BW * 2
    private val WIDTH = 640
    private val HEIGHT = 480

    private val dismissButton = JButton("Dismiss").also {
        it.addActionListener(ActionListener { setVisible(false) })
    }

    private val helpPane = JTextPane().also {
        it.contentType = "text/html";
        it.text = ::class.java.getResourceAsStream("help.html").bufferedReader().use { it.readText() }
    }

    init {
        setVisible(false)
        title = "Help"
        contentPane.apply {
            layout = BoxLayout(this, BoxLayout.Y_AXIS)
            add(JScrollPane(helpPane).apply {
                alignmentX = JScrollPane.CENTER_ALIGNMENT
                border = BorderFactory.createEmptyBorder(BW2, BW2, BW, BW2)
                verticalScrollBarPolicy = ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS
                horizontalScrollBarPolicy = ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER
                preferredSize = Dimension(WIDTH, HEIGHT)
                background = Application.mainFrame.background
            })
            add(Box(BoxLayout.X_AXIS).apply {
                alignmentX = Box.CENTER_ALIGNMENT
                border = BorderFactory.createEmptyBorder(BW, BW2, BW2, BW2)
                add(Box.createHorizontalGlue())
                add(dismissButton)
            })
        }
        pack()
    }
}