deal with null events being fired (a common way to just fire actions) and allow optional description and icon parameters to be specified

This commit is contained in:
James Strachan
2012-09-21 15:48:01 +01:00
parent a9a7d599ca
commit 962a3d29f5
@@ -3,17 +3,25 @@ package kotlin.swing
import java.awt.event.ActionEvent
import javax.swing.AbstractAction
import javax.swing.Action
import javax.swing.Action.*
import javax.swing.Icon
/**
* Helper method to create an action from a function
*/
fun action(text: String, icon: Icon? = null, fn: (ActionEvent) -> Unit): Action {
return object: AbstractAction(text, icon) {
fun action(text: String, description: String? = null, mnemonic: Int? = null, icon: Icon? = null, fn: (ActionEvent) -> Unit): Action {
val answer = object: AbstractAction(text, icon) {
public override fun actionPerformed(e: ActionEvent?) {
if (e != null) {
(fn)(e)
val event: ActionEvent = if (e != null) {
e
} else {
// lets create a dummy event
ActionEvent(this, ActionEvent.ACTION_PERFORMED, text)
}
(fn)(event)
}
}
if (description != null) answer.putValue(SHORT_DESCRIPTION, description)
if (mnemonic != null) answer.putValue(MNEMONIC_KEY, mnemonic)
return answer
}