Studio Developer Manual / Version 2107
Table Of Contents
Studio dashboard widgets are organized in three columns of equal width that span the entire
work area. Each widget may fill one or more fixed-height rows, depending on its rowspan
attribute. Widgets cannot span multiple columns. Users can adjust the height of each
individual widget when they adjust their widget configuration.
There may be many fundamentally different widget types for various purposes. Generally, widgets are used to display current information that a user is likely to be interested in, without requiring immediate action. However, there may also be widgets that allow the user to make simple updates or interact with other users. Due to the limited size of a widget, complex interactions are likely moved to a tab or a separate dialog.
Each widget type must provide a user interface that displays the actual information for this widget. Additionally, each widget type may opt to provide a user interface to configure a particular instance of the widget type on the user's dashboard. Users can choose a "configuration mode" for each widget, and in this mode, the configuration UI is displayed, which can be used to modify the appearance and functionality of the widget. Multiple widgets of the same type may be shown on the dashboard and each such widget can be in a different configuration state. Note the "configurability" of a widget is optional. For non-configurable widget types, the widget may just show an explanatory text describing its functionality.
For each user, the set of widgets, their positions, sizes, and states are stored persistently, allowing you to restore the widgets when the dashboard is closed and reopened. Many widget types provide a corresponding state class that allows you to define the state of the widget when configuring an initial dashboard. Widget state object and widget types are matched with each other by means of a widget type id.
Besides creating the user interfaces, the widget type in the form of an object implementing
the WidgetType
interface is also responsible for providing a type name,
description, icon, default rowspan
, and for computing a title, possibly depending on the
current widget state. Optionally, the widget type may also provide tools to be included in the
header bar of the widget. Tools can allow the user to start operations based on the current
widget state.