Mercurial > cgi-bin > hgweb.cgi > JpegWasher
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 |