added a start of a work around for KT-1752 not being implemented yet so folks can write nicer swing programs
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
package kotlin.swing
|
||||
|
||||
import javax.swing.*
|
||||
import java.awt.event.*
|
||||
import java.awt.*
|
||||
|
||||
// TODO this file may be deleted when this issue is implemented
|
||||
// http://youtrack.jetbrains.com/issue/KT-1752
|
||||
|
||||
/**
|
||||
* Creates a [[ActionListener]] for the given function for processing each [[ActionEvent]]
|
||||
*/
|
||||
inline fun actionListener(fn: (ActionEvent) -> Unit): ActionListener = FunctionActionListener(fn)
|
||||
|
||||
private class FunctionActionListener(val fn: (ActionEvent) -> Unit) : ActionListener {
|
||||
public override fun actionPerformed(e: ActionEvent?) {
|
||||
if (e != null) {
|
||||
(fn)(e)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
inline fun Button.addActionListener(fn: (ActionEvent) -> Unit): Unit {
|
||||
addActionListener(actionListener(fn))
|
||||
}
|
||||
|
||||
inline fun List.addActionListener(fn: (ActionEvent) -> Unit): Unit {
|
||||
addActionListener(actionListener(fn))
|
||||
}
|
||||
|
||||
inline fun MenuItem.addActionListener(fn: (ActionEvent) -> Unit): Unit {
|
||||
addActionListener(actionListener(fn))
|
||||
}
|
||||
|
||||
inline fun TextField.addActionListener(fn: (ActionEvent) -> Unit): Unit {
|
||||
addActionListener(actionListener(fn))
|
||||
}
|
||||
|
||||
inline fun TrayIcon.addActionListener(fn: (ActionEvent) -> Unit): Unit {
|
||||
addActionListener(actionListener(fn))
|
||||
}
|
||||
|
||||
inline fun AbstractButton.addActionListener(fn: (ActionEvent) -> Unit): Unit {
|
||||
addActionListener(actionListener(fn))
|
||||
}
|
||||
|
||||
inline fun ButtonModel.addActionListener(fn: (ActionEvent) -> Unit): Unit {
|
||||
addActionListener(actionListener(fn))
|
||||
}
|
||||
|
||||
inline fun ComboBoxEditor.addActionListener(fn: (ActionEvent) -> Unit): Unit {
|
||||
addActionListener(actionListener(fn))
|
||||
}
|
||||
|
||||
inline fun DefaultButtonModel.addActionListener(fn: (ActionEvent) -> Unit): Unit {
|
||||
addActionListener(actionListener(fn))
|
||||
}
|
||||
|
||||
inline fun JComboBox.addActionListener(fn: (ActionEvent) -> Unit): Unit {
|
||||
addActionListener(actionListener(fn))
|
||||
}
|
||||
|
||||
inline fun JFileChooser.addActionListener(fn: (ActionEvent) -> Unit): Unit {
|
||||
addActionListener(actionListener(fn))
|
||||
}
|
||||
|
||||
inline fun JTextField.addActionListener(fn: (ActionEvent) -> Unit): Unit {
|
||||
addActionListener(actionListener(fn))
|
||||
}
|
||||
|
||||
inline fun Timer.addActionListener(fn: (ActionEvent) -> Unit): Unit {
|
||||
addActionListener(actionListener(fn))
|
||||
}
|
||||
@@ -16,13 +16,3 @@ fun panel(init: JPanel.() -> Unit): JPanel {
|
||||
p.init()
|
||||
return p
|
||||
}
|
||||
|
||||
fun button(text: String, action: (ActionEvent) -> Unit): JButton {
|
||||
val result = JButton(text)
|
||||
result.addActionListener(object : ActionListener {
|
||||
public override fun actionPerformed(e: ActionEvent?) {
|
||||
action(e!!)
|
||||
}
|
||||
})
|
||||
return result
|
||||
}
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
package kotlin.swing
|
||||
|
||||
import javax.swing.*
|
||||
import java.awt.event.*
|
||||
import java.awt.*
|
||||
|
||||
fun button(text: String, action: (ActionEvent) -> Unit): JButton {
|
||||
val result = JButton(text)
|
||||
result.addActionListener(action)
|
||||
return result
|
||||
}
|
||||
@@ -0,0 +1,101 @@
|
||||
package kotlin.swing
|
||||
|
||||
import java.awt.*
|
||||
import java.awt.event.*
|
||||
import javax.swing.*
|
||||
import javax.swing.colorchooser.*
|
||||
import javax.swing.event.*
|
||||
import javax.swing.text.*
|
||||
|
||||
// TODO this file may be deleted when this issue is implemented
|
||||
// http://youtrack.jetbrains.com/issue/KT-1752
|
||||
|
||||
/**
|
||||
* Creates a [[ChangeListener]] for the given function for processing each [[ChangeEvent]]
|
||||
*/
|
||||
inline fun changeListener(fn: (ChangeEvent) -> Unit): ChangeListener = FunctionChangeListener(fn)
|
||||
|
||||
private class FunctionChangeListener(val fn: (ChangeEvent) -> Unit) : ChangeListener {
|
||||
public override fun stateChanged(e: ChangeEvent?) {
|
||||
if (e != null) {
|
||||
(fn)(e)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
inline fun AbstractButton.addChangeListener(fn: (ChangeEvent) -> Unit): Unit {
|
||||
addChangeListener(changeListener(fn))
|
||||
}
|
||||
|
||||
inline fun AbstractSpinnerModel.addChangeListener(fn: (ChangeEvent) -> Unit): Unit {
|
||||
addChangeListener(changeListener(fn))
|
||||
}
|
||||
|
||||
inline fun BoundedRangeModel.addChangeListener(fn: (ChangeEvent) -> Unit): Unit {
|
||||
addChangeListener(changeListener(fn))
|
||||
}
|
||||
|
||||
inline fun ButtonModel.addChangeListener(fn: (ChangeEvent) -> Unit): Unit {
|
||||
addChangeListener(changeListener(fn))
|
||||
}
|
||||
|
||||
inline fun ColorSelectionModel.addChangeListener(fn: (ChangeEvent) -> Unit): Unit {
|
||||
addChangeListener(changeListener(fn))
|
||||
}
|
||||
|
||||
inline fun DefaultColorSelectionModel.addChangeListener(fn: (ChangeEvent) -> Unit): Unit {
|
||||
addChangeListener(changeListener(fn))
|
||||
}
|
||||
|
||||
inline fun DefaultSingleSelectionModel.addChangeListener(fn: (ChangeEvent) -> Unit): Unit {
|
||||
addChangeListener(changeListener(fn))
|
||||
}
|
||||
|
||||
inline fun JProgressBar.addChangeListener(fn: (ChangeEvent) -> Unit): Unit {
|
||||
addChangeListener(changeListener(fn))
|
||||
}
|
||||
|
||||
inline fun DefaultButtonModel.addChangeListener(fn: (ChangeEvent) -> Unit): Unit {
|
||||
addChangeListener(changeListener(fn))
|
||||
}
|
||||
|
||||
inline fun JSlider.addChangeListener(fn: (ChangeEvent) -> Unit): Unit {
|
||||
addChangeListener(changeListener(fn))
|
||||
}
|
||||
|
||||
inline fun JSpinner.addChangeListener(fn: (ChangeEvent) -> Unit): Unit {
|
||||
addChangeListener(changeListener(fn))
|
||||
}
|
||||
|
||||
inline fun JViewport.addChangeListener(fn: (ChangeEvent) -> Unit): Unit {
|
||||
addChangeListener(changeListener(fn))
|
||||
}
|
||||
|
||||
inline fun MenuSelectionManager.addChangeListener(fn: (ChangeEvent) -> Unit): Unit {
|
||||
addChangeListener(changeListener(fn))
|
||||
}
|
||||
|
||||
inline fun SingleSelectionModel.addChangeListener(fn: (ChangeEvent) -> Unit): Unit {
|
||||
addChangeListener(changeListener(fn))
|
||||
}
|
||||
|
||||
inline fun SpinnerModel.addChangeListener(fn: (ChangeEvent) -> Unit): Unit {
|
||||
addChangeListener(changeListener(fn))
|
||||
}
|
||||
|
||||
inline fun Caret.addChangeListener(fn: (ChangeEvent) -> Unit): Unit {
|
||||
addChangeListener(changeListener(fn))
|
||||
}
|
||||
|
||||
inline fun DefaultCaret.addChangeListener(fn: (ChangeEvent) -> Unit): Unit {
|
||||
addChangeListener(changeListener(fn))
|
||||
}
|
||||
|
||||
inline fun Style.addChangeListener(fn: (ChangeEvent) -> Unit): Unit {
|
||||
addChangeListener(changeListener(fn))
|
||||
}
|
||||
|
||||
inline fun StyleContext.addChangeListener(fn: (ChangeEvent) -> Unit): Unit {
|
||||
addChangeListener(changeListener(fn))
|
||||
}
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
package kotlin.swing
|
||||
|
||||
import kotlin.beans.*
|
||||
|
||||
import javax.swing.*
|
||||
import java.awt.event.*
|
||||
import java.awt.*
|
||||
import java.beans.*
|
||||
|
||||
// TODO this file may be deleted when this issue is implemented
|
||||
// http://youtrack.jetbrains.com/issue/KT-1752
|
||||
|
||||
inline fun Component.addPropertyChangeListener(fn: (PropertyChangeEvent) -> Unit): Unit {
|
||||
addPropertyChangeListener(propertyChangeListener(fn))
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package kotlin.beans
|
||||
|
||||
import java.beans.*
|
||||
|
||||
// TODO this file may be deleted when this issue is implemented
|
||||
// http://youtrack.jetbrains.com/issue/KT-1752
|
||||
|
||||
/**
|
||||
* Creates a [[PropertyChangeListener]] for the given function for processing each [[PropertyChangeEvent]]
|
||||
*/
|
||||
inline fun propertyChangeListener(fn: (PropertyChangeEvent) -> Unit): PropertyChangeListener = FunctionPropertyChangeListener(fn)
|
||||
|
||||
private class FunctionPropertyChangeListener(val fn: (PropertyChangeEvent) -> Unit) : PropertyChangeListener {
|
||||
public override fun propertyChange(e: PropertyChangeEvent?) {
|
||||
if (e != null) {
|
||||
(fn)(e)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user