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:
@@ -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
|
||||
}
|
||||
Reference in New Issue
Block a user