Abstract

This is the only true information document. What is not here in the document, does not exists at all!

Notes

All description is for MIDP-2.0 by default. All differences between MIDP-1.0 and MIDP-2.0 will be marked in place.

All properties, setters, actions and presenters are inherited from super component descriptor if not mentioned otherwise.

Deleting of a second component by a first component described in a "Actions|Delete" section means: to run the full deletion task using DeleteSupport.deleteComponent(component,setOfComponentsToDelete). This method at the any automatically removes the component from its parent.

Delete of component takes cares of the component deletion and unregistering the component from the structure around e.g.: DisplayableCD does not modify the commands property directly but CommandEventSourceCD does modify the commands property.

Reset-to-default functionality is available only if a property has non-null property value or its property descriptor allows null values.

ControllersCategoryCD

class: api.midp.components.categories.ControllersCategoryCD

type: final #ControllersCategory <- #Category

palette: none

version: forever

Created in a file template only. Contains all available EventListenerCD and dispathers components. Initially there are just EventListenerCD related to the class itself. Later there will be EventListenerCD related to other file e.g. commandAction would be generated to another file.

Actions

New -

Add -

Delete -

Move Up/Down -

Go-to-source -

Edit -

Presenters

Accept - EventListenerCD

Code -

General -

Info - category_controllers_16.png, Controllers

Inspector - TBD

Flow -

Screen - TBD

Validator - TBD

DisplayablesCategoryCD

class: api.midp.components.categories.DisplayablesCategoryCD

type: final #DisplayablesCategory <- #Category

palette: none

version: forever

Created in a file template only. Contains all DisplayableCDs in a file.

Actions

New - DisplayableCD

Add -

Delete -

Move Up/Down -

Go-to-source -

Edit -

Presenters

Accept - DisplayableCD

Code -

General -

Info - category_displayables_16.png, Displayables

Inspector - TBD

Flow -

Screen - TBD

Validator - TBD

PointsCategoryCD

class: api.midp.components.categories.PointsCategoryCD

type: final #PointsCategory <- #Category

palette: none

version: forever

Created in a file template only. Contains all available PointsCDs in a file.

Actions

New - PointCD

Add -

Delete -

Move Up/Down -

Go-to-source -

Edit -

Presenters

Accept - PointCD

Code -

General -

Info - category_points_16.png, Points

Inspector - TBD

Flow -

Screen - TBD

Validator - TBD

ResourcesCategoryCD

class: api.midp.components.categories.ResourcesCategoryCD

type: final #ResourcesCategory <- #Category

palette: none

version: forever

Created in a file template only. Contains all available ResourceCDs in a file.

Actions

New - ResourceCD

Add -

Delete -

Move Up/Down -

Go-to-source -

Edit -

Presenters

Accept - ResourceCD

Code -

General -

Info - category_resources_16.png, Resources

Inspector - TBD

Flow -

Screen - TBD

Validator - TBD

Displayable Component Descriptors

These components are location under DisplayablesCategoryCD only and represents a Displayable-based classes in MIDP.

A special GaugeCD used as a alert indicator is placed under the Alert component.

Properties

Name

TypeID

Default Value

IsNull

IsUserCode

Values

Is basic

Is advanced

Version

timeout

int

vary across implementation -> null

no

yes

FOREVER (-2) or any positive value (time in millis)

no

yes

MIDP

image

ImageCD

null

yes

yes

no

yes

MIDP

indicator

GaugeCD

null (the gauge component is under the alert)

yes

yes

the special "under" Gauge or null

no

yes

MIDP-2.0

string

String

null

yes

yes

yes

yes

MIDP

type

AlertCD.TYPEID_ALERT_TYPE

null

yes

yes

null (no specific type), ALARM, CONFIRMATION, ERROR, INFO, WARNING

yes

yes

MIDP

Post-init: timeout has some value -2 forever.

The indicator property will be shown as a check-box property (false = null, true = special "under" Gauge).

The GaugeCD as indicator will be created when the check-box is set to true. The indicator GaugeCD cannot be used anywhere else then just in the Alert under which it is placed. The GaugeCD.usedByAlert property of the indicator will be set to true. When the check-box is set to false, the indicator GuageCD is deleted.

The GaugeCD indicator component must be initialized that as: it must be non-interactive; it must not be owned by another container (Alert or Form); it must not have any Commands; it must not have an ItemCommandListener; it must not have a label (that is, its label must be null; its preferred width and height must both be unlocked; and its layout value must be LAYOUT_DEFAULT.

Flow - TBD - depends on the anomalies described in the header of the description of this component

Screen - TBD - string, image, selected, font within ChoiceGroupCD

Validator - TBD

Command Component Decriptors

Commands are used by DisplayableCD, ItemCD, ... There is a repository of commands available in the document. All usages within the document are just referencing particular command component.

Some commands are "different" and cannot be used as a regular commands e.g List.SELECT_COMMAND. The CommandCD.ordinary == false then the command is "different" and is excluded from a set of regular commands, therefore it should not be visible as a option for setting/using.

When maxValue == INDEFINITE then value must be one of GaugeCD.CONTINUOUS_IDLE, GaugeCD.INCREMENTAL_IDLE, GaugeCD.CONTINUOUS_RUNNING, GaugeCD.INCREMENTAL_UPDATING.

If usedByAlert is set then: it must be non-interactive; it must not be owned by another container (Alert or Form); it must not have any Commands; it must not have an ItemCommandListener; it must not have a label (means its label must be null); its preferred width and height must both be unlocked; and its layout value must be LAYOUT_DEFAULT.

TODO

How about mixing Commands and other sub-nodes in the Inspector. For example: a TextBox does have commands only so the commands should be shown directly underneath. But later there should by a MySpecialTextBox with a special elements underneath. Then the commands should be shown under a category. But dynamic categories is a hell to implement and understand.

How to resolve the Alert.DISMISS_COMMAND replacement? For now it is not modelled/used at all. Maybe it could be done the same way as the List.SELECT_COMMAND, which is in a document but is not available as a command for regular usage.

How to resolve SwitchDisplayableThroughtAlert event handler?

AlertType has to be changed from Enum to another value because it is a class and there could be other valid values/constructions available in the future.

Notes

Alert: An application may set a Ticker with Displayable.setTicker on an Alert, however it may not be displayed due to implementation restrictions.

Alert: If content is too long to be displayed on the screen then it automatically becomes modal (getTimeout() returns FOREVER) independently of setted value for timeout.

Alert: We had workaround in VMD1 about indicator (Gauge) - now property could be only "indicator" but not "use indicator".

Form: If the application attempts to place an item into a Form, and the item is already owned by this or another Form, an IllegalStateException is thrown. The application must remove the item from its currently containing Form before inserting it into the new Form.

List: there is another constructor List(String title, int listType, String... stringElements, Image... imageElements), but we are using ListElementCD instead stringElements/imageElements.

Spacer: Since the presence of a label on an Item may affect layout in device-specific ways, the label of a Spacer is restricted to always be null, and the application is not allowed to change it.

Proposals

java.util.Timer, java.util.TimerTask - maybe we should use it in WaitScreen