Mercurial > cgi-bin > hgweb.cgi > JpegWasher
view src/name/blackcap/exifwasher/MainFrame.kt @ 57:94cd2d486adc
Tabs to spaces (argh).
author | davidb |
---|---|
date | Thu, 07 May 2020 17:15:43 -0700 |
parents | aa9ab6cbaa26 |
children |
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.awt.event.WindowEvent import java.awt.event.WindowListener import java.io.File import java.io.IOException import java.util.logging.Level import java.util.logging.Logger import javax.swing.* import javax.imageio.ImageIO /* 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 List<File> } catch (e: UnsupportedFlavorException) { return false } catch (e: IOException) { return false } for (file in files) { WashDialog().wash(file) } return true } } init { if (OS.type != OS.MAC) { setIconImage(ImageIO.read(this::class.java.getResourceAsStream("icon_48x48.png"))) } contentPane.add( JLabel("Drag image files into this window or choose Fileā¦ Wash from menu.").apply { horizontalAlignment = JLabel.CENTER verticalAlignment = JLabel.CENTER }) preferredSize = Dimension(WIDTH, HEIGHT) transferHandler = MyTransferHandler() pack() addWindowListener(KillIt()) } }