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 java.awt.event.ActionEvent
import javax.swing.AbstractAction import javax.swing.AbstractAction
import javax.swing.Action import javax.swing.Action
import javax.swing.Action.*
import javax.swing.Icon import javax.swing.Icon
/** /**
* Helper method to create an action from a function * Helper method to create an action from a function
*/ */
fun action(text: String, icon: Icon? = null, fn: (ActionEvent) -> Unit): Action { fun action(text: String, description: String? = null, mnemonic: Int? = null, icon: Icon? = null, fn: (ActionEvent) -> Unit): Action {
return object: AbstractAction(text, icon) { val answer = object: AbstractAction(text, icon) {
public override fun actionPerformed(e: ActionEvent?) { public override fun actionPerformed(e: ActionEvent?) {
if (e != null) { val event: ActionEvent = if (e != null) {
(fn)(e) 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
} }