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