Interface for input widgets. An input widget is intended to harvest user
input for a particular ModuleItem. They are used by the
InputHarvester preprocessor to collect module input values.

Widgets discoverable at runtime must implement this interface and be
annotated with @Plugin with attribute Plugin.type() =
InputWidget.class. While it possible to create a widget merely by
implementing this interface, it is encouraged to instead extend
AbstractInputWidget, for convenience.

isMessage

default boolean isMessage()

Returns true iff the widget should be considered a read-only "message"
rather than a bidirectional input widget. The
InputPanel.isMessageOnly() method will return true iff this method
returns true for all of its widgets.