view src/name/blackcap/imageprep/MainFrame.kt @ 31:99a0eb385c9a
default tip
Work around annoying Swing glitch.
author |
David Barts <n5jrn@me.com> |
date |
Sat, 20 Aug 2022 09:19:49 -0700 (2022-08-20) |
parents |
5fa5d15b4a7b |
children |
|
line source
/*
* The main application window.
*/
package name.blackcap.imageprep
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) {
RotateDialog.makeDialog(file, Application.settingsDialog.maxDimension)
}
return true
}
}
init {
contentPane.add(
JLabel("Drag image files into this window or choose File… Open & Scale from menu.").apply {
horizontalAlignment = JLabel.CENTER
verticalAlignment = JLabel.CENTER
})
preferredSize = Dimension(WIDTH, HEIGHT)
transferHandler = MyTransferHandler()
pack()
addWindowListener(KillIt())
}
}