The OpenD Programming Language

CommandEvent

Command Events are used with a widget wants to issue a higher-level, yet loosely coupled command do its parents and other interested listeners, for example, "scroll up".

More...
class CommandEvent : Event {
enum EventString;
}

Inherited Members

From Event

getPropertiesList
void getPropertiesList(void delegate(string name) sink)
getPropertyAsString
void getPropertyAsString(string name, void delegate(string name, scope const(char)[] value, bool valueIsJson) sink)
setPropertyFromString
SetPropertyResult setPropertyFromString(string name, const(char)[] str, bool strIsJson)

Implementations for the ReflectableProperties interface/

propagates
bool propagates()

Events should generally follow the propagation model, but there's some exceptions to that rule. If so, they should override this to return false. In that case, only bubbling event handlers on the target itself and capturing event handlers on the containing window will be called. (That is, dispatch will call sendDirectly instead of doing the normal capture -> target -> bubble process.)

cancelable
bool cancelable()

hints as to whether preventDefault will actually do anything. not entirely reliable.

Register
mixintemplate Register()

You can mix this into child class to register some boilerplate. It includes the EventString member, a constructor, and implementations of the dynamic get data interfaces.

source
Widget source;
target
alias target = source
srcElement
alias srcElement = source

This is the widget that emitted the event.

relatedTarget
Widget relatedTarget;

Note: likely to be deprecated at some point.

preventDefault
void preventDefault()

Prevents the default event handler (if there is one) from being called

stopPropagation
void stopPropagation()

Stops the event propagation immediately.

adjustScrolling
void adjustScrolling()
adjustClientCoordinates
void adjustClientCoordinates(int deltaX, int deltaY)

This is an internal implementation detail you should not use. It would be private if the language allowed it and it may be removed without notice.

sendDirectly
void sendDirectly()

this sends it only to the target. If you want propagation, use dispatch() instead.

dispatch
void dispatch()

this dispatches the element using the capture -> target -> bubble process

intValue
int intValue [@property getter]
stringValue
string stringValue [@property getter]

Detailed Description

Command Events are a bit special in the way they're used. You don't typically refer to them by object, but instead by a name string and a set of arguments. The expectation is that they will be delegated to a parent, which "consumes" the command - it handles it and stops its propagation upward. The consumesCommand method will call your handler with the arguments, then stop the command event's propagation for you, meaning you don't have to call Event.stopPropagation. A command event should have no default behavior, so calling Event.preventDefault is not necessary either.

Meta

History

Added on May 13, 2021. Prior to that, you'd most likely addEventListener(EventType.triggered, ...) to handle similar things.