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