comparison 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
comparison
equal deleted inserted replaced
2:efd9fe2d70d7 3:19c381c536ec
1 /*
2 * The main application window.
3 */
4 package name.blackcap.exifwasher
5
6 import java.awt.Dimension
7 import java.awt.datatransfer.DataFlavor
8 import java.awt.datatransfer.Transferable
9 import java.awt.datatransfer.UnsupportedFlavorException
10 import java.io.File
11 import java.io.IOException
12 import javax.swing.JFrame
13 import javax.swing.TransferHandler
14
15 class MainFrame: JFrame {
16
17 /* the main frame itself */
18 class MainFrame : JFrame(Application.MYNAME) {
19 /* default size */
20 val WIDTH = 512
21 val HEIGHT = 384
22
23 /* does a system exit when needed */
24 private class KillIt() : WindowListener {
25 /* events we don't care about */
26 override fun windowActivated(e: WindowEvent) {}
27 override fun windowClosed(e: WindowEvent) {}
28 override fun windowDeactivated(e: WindowEvent) {}
29 override fun windowDeiconified(e: WindowEvent) {}
30 override fun windowIconified(e: WindowEvent) {}
31 override fun windowOpened(e: WindowEvent) {}
32
33 /* and the one we do */
34 override fun windowClosing(e: WindowEvent) {
35 LOGGER.log(Level.INFO, "execution complete")
36 System.exit(0)
37 }
38 }
39
40 /* acts on dragged files */
41 private class MyTransferHandler : TransferHandler {
42 override fun canImport(support: TransferHandler.TransferSupport): Boolean {
43 return support.isDataFlavorSupported(DataFlavor.javaFileListFlavor)
44 }
45
46 override fun importData(support: TransferHandler.TransferSupport): Boolean {
47 if (!canImport(support)) {
48 return false
49 }
50 val files = try {
51 support.transferable.getTransferData(DataFlavor.javaFileListFlavor) as java.util.List<File>
52 } catch (e: UnsupportedFlavorException) {
53 return false
54 } catch (e: IOException) {
55 return false
56 }
57 for (file in files) {
58 WashDialog().wash(file)
59 }
60 return true
61 }
62 }
63
64 init {
65 contentPane.add(
66 JLabel("Drag image files into this window or choose Fileā€¦ Open from menu.").apply {
67 horizontalAlignment = JLabel.CENTER
68 verticalAlignment = JLabel.CENTER
69 })
70 preferredSize = Dimension(WIDTH, HEIGHT)
71 transferHandler = MyTransferHandler()
72 pack()
73 addWindowListener(KillIt())
74 }
75 }
76