class fwt::Command
sys::Obj fwt::Command
@Js
Command packages up the diplay name, icon, execution, and undo support for a user command. You can create a command two ways:
If the command supports undo, then you must create a a subclass and override undo.
Commands are often used to centralize control of multiple widgets. For example if a Command is associated with both a menu item and a toolbar button, then disabling the command will disable both the menu item and toolbar button.
See pod doc for details.
- accelerator
-
Key? acceleratorAccelerator of the command or null.
- enabled
-
Bool enabled := trueThe enable state of the command automatically controls the enabled state of all the registered widgets.
- icon
-
Image? iconIcon of the command or null. Typically a 16x16.
- invoke
-
Invoke the command. If the user event is known then is passed, otherwise it might be null.
- invoked
-
protected virtual Void invoked(Event? event)Subclass hook to handle invoke event.
- make
-
new make(Str name := "", Image? icon := null, |Event|? onInvoke := null)Construct a command with the specified onInvoke function. If onInvoke is not specified, then the
invokemethod must be overridden to execute the command. - makeLocale
-
new makeLocale(Pod pod, Str keyBase, |Event|? onInvoke := null)Construct a localized command using the specified pod name and keyBase. The command is initialized from the following
localizedproperties:- "{keyBase}.name.{plat}": text string for the command
- "{keyBase}.icon.{plat}": uri for the icon image
- "{keyBase}.accelerator.{plat}": string representation of Key
The
{plat}string comes fromDesktop.platform. If the paltform specific key is not found, then we attempt to fallback to a generic key. For example:back.name=Back back.accelerator=Alt+Left back.accelerator.mac=Command+[
On all platforms the command name would be "Back". On Macs the accelerator would be
Command+[, and all others it would beAlt+Left. If running on a Mac and an explicit ".mac" property was not specified, then we automatically swizzle Ctrl to Command. - mode
-
CommandMode mode := CommandMode.pushThe command mode determines who associated widgets are visualized. The CommandMode maps to the
ButtonModeandMenuItemMode. The default ispush. - name
-
Str nameName of the command.
- onInvoke
-
EventListeners onInvoke()The function to invoke when the command is executed. If empty, then
invokemust be overridden. - onInvokeErr
-
protected virtual Void onInvokeErr(Event? event, Err err)Subclass hook to handle when an exception is raised by invoke. Default implementation raises an error dialog.
- redo
-
virtual Void redo()This method is invoked when the command invoked as a redo. It is not called on the first invocation. Default calls
invokewith a null event. - register
-
Register a widget with this command. This is done automatically by the widget. You only need to call this method if you are developing a custom widget.
- selected
-
Bool selected := falseIf this command is using toggle mode, then set the selected state and update all the registered widgets.
- toStr
-
virtual override Str toStr()Return name.
- undo
-
virtual Void undo()This method is invoked to undo the command. This method is only used if
undoablereturns true. - undoable
-
virtual Bool undoable()Return if the command can be undone. Default implementation returns true if the
undomethod has been overridden. - unregister
-
Unregister a widget with this command. This is done automatically by the widget. You only need to call this method if you are developing a custom widget.
- widgets
-
Widget[] widgets()Get the associated widgets with this command. Widgets are automatically associated with their command field is set.
- window
-
Window? window()Get the window associated with this command. If this command is being used as the action of a dialog, then return the dialog. Otherwise try to map to a window via one of the widgets bound to this command. Return null if no associated window can be found.