Mercurial > cgi-bin > hgweb.cgi > JpegWasher
diff src/name/blackcap/exifwasher/MainFrame.kt @ 3:19c381c536ec
Code to make it a proper Mac GUI app. Untested!
author | David Barts <n5jrn@me.com> |
---|---|
date | Wed, 08 Apr 2020 20:29:12 -0700 |
parents | |
children | dc1f4359659d |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/name/blackcap/exifwasher/MainFrame.kt Wed Apr 08 20:29:12 2020 -0700 @@ -0,0 +1,76 @@ +/* + * The main application window. + */ +package name.blackcap.exifwasher + +import java.awt.Dimension +import java.awt.datatransfer.DataFlavor +import java.awt.datatransfer.Transferable +import java.awt.datatransfer.UnsupportedFlavorException +import java.io.File +import java.io.IOException +import javax.swing.JFrame +import javax.swing.TransferHandler + +class MainFrame: JFrame { + +/* the main frame itself */ +class MainFrame : JFrame(Application.MYNAME) { + /* default size */ + val WIDTH = 512 + val HEIGHT = 384 + + /* does a system exit when needed */ + private class KillIt() : WindowListener { + /* events we don't care about */ + override fun windowActivated(e: WindowEvent) {} + override fun windowClosed(e: WindowEvent) {} + override fun windowDeactivated(e: WindowEvent) {} + override fun windowDeiconified(e: WindowEvent) {} + override fun windowIconified(e: WindowEvent) {} + override fun windowOpened(e: WindowEvent) {} + + /* and the one we do */ + override fun windowClosing(e: WindowEvent) { + LOGGER.log(Level.INFO, "execution complete") + System.exit(0) + } + } + + /* acts on dragged files */ + private class MyTransferHandler : TransferHandler { + override fun canImport(support: TransferHandler.TransferSupport): Boolean { + return support.isDataFlavorSupported(DataFlavor.javaFileListFlavor) + } + + override fun importData(support: TransferHandler.TransferSupport): Boolean { + if (!canImport(support)) { + return false + } + val files = try { + support.transferable.getTransferData(DataFlavor.javaFileListFlavor) as java.util.List<File> + } catch (e: UnsupportedFlavorException) { + return false + } catch (e: IOException) { + return false + } + for (file in files) { + WashDialog().wash(file) + } + return true + } + } + + init { + contentPane.add( + JLabel("Drag image files into this window or choose Fileā¦ Open from menu.").apply { + horizontalAlignment = JLabel.CENTER + verticalAlignment = JLabel.CENTER + }) + preferredSize = Dimension(WIDTH, HEIGHT) + transferHandler = MyTransferHandler() + pack() + addWindowListener(KillIt()) + } +} +