Mercurial > cgi-bin > hgweb.cgi > JpegWasher
view 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 source
/* * 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()) } }