Requirements

GUI Application

The application has the following forms of representation:

The main window:

  • In the main window, the user selects an extent, and all items therein should be displayed in a list. However, it can already be filtered by different views (e.g., by specific object types or special representations). Here, the input of the view is a collection of objects.

  • In the main window, the user selects an element, and it should be displayed. In the first tab, the detail properties or the sub-elements can be displayed. Here too, filtering of elements or special representations can take place in further sub-windows. Here, the input of the view is a single object.

The detail window:

  • If the user double-clicks on an item, a sub-window is opened. Several tabs can also be displayed here. This can be different from the previous use case. Here, the input of the view is a single object.

The control elements:

  • If a property is displayed that can have several associated objects, a table is displayed. This table is not subdivided and does not consist of sub-tables. Here, the input of the view is an element and a property.

A form is required for the following elements:

  • The elements of an extent =⇒ Listing of elements. Here, only lists of elements can be displayed, as there is no single object from which the property values can be queried.

  • The object itself =⇒ The properties of the object are displayed.

  • The elements of an object property =⇒ Here, an object and the property are passed. The individual elements are displayed via a list view.

With these requirements, the following design is chosen:

Design

There are three types of main forms:

  • Object Form: This form consists of several sub-forms and is designed for displaying a single item.

    • This can be queried via an object or a metaclass.

  • Collection Form: This form consists of several sub-forms and is designed for displaying a collection of elements.

    • This can be queried via a collection of elements or an extent.

  • Row Form: Here, each field is displayed in its own row.

    • This can be queried via a metaclass.

  • Table Form: Here, many elements are displayed in a table. These elements are defined in the context of the object to be displayed.

    • This can be queried via a collection of objects, a metaclass, or a property of an object.

The ViewMode determines the context in which the object is displayed.

Form

The form in general supports the following properties. All derivations must also support these properties.

Name Meaning

name

Name of the form

title

Title as it is displayed

isReadOnly

Flag indicating whether the form is displayed in read-only mode

hideMetaInformation

True if the meta-information of an object should not be automatically displayed in the form.

originalUri

Since the form is cloned upon display, this property contains the URL before the cloning process.

isAutoGenerated

Value indicating whether this form was automatically generated from object properties.

creationProtocol

A debugging aid that explains how the form was created.

ObjectForm

An object form consists of several sub-forms and serves to display a single element. It is derived from Form.

Additional properties:

Name Meaning

tab

A list of sub-forms

autoTabs

Value indicating whether sub-forms should be automatically generated

ExtentForm

An extent form contains a set of forms to display a specific object.

The extent form is basically used in the main window when viewing the elements of an extent or when the user has selected a specific object in the main window.

Extent Form for Package

A special form is the list view of the package objects. Here, the user can determine via the 'preferredTypes' property which class instances can preferably be created in this package.

Implementation

The evaluation takes place in the FormsPlugin via FormsModificationPlugin, which contains a special set of rules here.

Various plugins can register here, which are allowed to change a form afterwards.

ListForm

The list form describes a table or pure listing of a collection of objects:

Name Meaning

property

n/a

metaClass

n/a

includeDescendents

n/a

noItemsWithMetaClass

n/a

inhibitNewItems

n/a

inhibitDeleteItems

n/a

defaultTypesForNewElements

n/a

fastViewFilters

n/a

duplicatePerType

Value indicating whether the list item should be duplicated for each type in the list. This property is used for ExtentForms so that the lists can be displayed per type.

field

This list contains the fields that should be displayed in the list. Usually, these are the columns of the table.

sortingOrder

The order in which the items should be displayed.

viewNode

In this form, filtering or modification can be more specific via a data view. The actual list is passed as a dynamic data collection input.

FormModificationPlugins

The following FormModificationPlugins exist:

PackageFormModificationPlugin

Here, the following elements are added to the UML type 'Package' in the detail view: - DefaultTypeForNewElement for creating buttons for generating new elements.

BasicNavigationForFormsAndItemsPlugin

Through this, as an IDatenMeisterPlugin, the following ActionButtons are added to the forms:

Code Name Meaning

Extent.NavigateTo

View Extent

Metaclass: Management.Extent

Item.Delete

Delete Item

FormType: TreeItemDetail

Item.New

New Item

FormType: TreeItemExtent, MetaClass: Management.Extent

ExtentsList.ViewItem

View Item

FormType: TreeItemExtent

ExtentsList.DeleteItem

Delete Item

FormType: TreeItemExtent

Field Element

The DatenMeister forms support different types of field forms. This chapter contains a description of these.

FieldData

This base class provides the generic properties that should be supported by every field.

Name Meaning

name

Name of the field and the underlying property of the object

title

Title displayed in the form

isEnumeration

Flag indicating whether the content behind the property is an enumeration or a single element. This property is used by some field types for automatic design.

defaultValue

If the value is not set, the value of the default property can be defined here.

isReadOnly

Flag indicating whether the field is not writable.

isAttached

Flag indicating whether the field is attached to the object itself rather than being a property of the object.

TextFieldData

This field represents a text input field in which the user can enter free text.

In addition to the properties of FieldData, the following properties are supported:

Name Meaning

lineHeight

Number of lines that should be displayed by default. If it is 1 or empty, a simple input field is shown. If it is larger than 1, a textarea is shown.

width

Width in logical pixels (size/cols) that the field should have by default.

shortenTextLength

If set and greater than 0, the text will be truncated to this length in read-only mode.

supportClipboardCopy

If true, a "Copy to Clipboard" button is shown in read-only mode.

EvalTextFieldData

This extension of the text field supports the dynamic evaluation of content. This is particularly relevant for report creation, as the format and other properties can be evaluated dynamically here.

In addition to the properties of TextFieldData, the following properties are supported:

Name Meaning

evalCellProperties

The script evaluated for creating the cell.

  • The variable 'i' describes the element currently being considered.

  • The variable 'c' is the current cell. The cell’s properties depend on the report used.

  • The variable 'r' is the state of the current row, as can be defined in the ListForm in the 'evalRowProperties' property.

AnyDataFieldData

A generic field that can display different types of data. It is often used as a fallback.

CheckboxFieldData

Displays a checkbox for boolean values.

Name Meaning

lineHeight

Can be used to define the height of the field.

ActionFieldData

Displays a button that triggers a specific action when clicked.

Name Meaning

actionName

Name of the action to be executed.

parameter

Parameter passed to the action.

buttonText

Text displayed on the button.

DateTimeFieldData

Provides a field to input date and time.

Name Meaning

hideDate

If true, only the time part is shown.

hideTime

If true, only the date part is shown.

DropDownFieldData

Displays a dropdown menu with predefined values.

Name Meaning

values

A list of ValuePairs (name and value) to be displayed in the dropdown.

valuesByEnumeration

An enumeration of values to be used for the dropdown.

DropDownByCollection

A dropdown where the options are retrieved from a collection in a workspace.

Name Meaning

defaultWorkspace

The ID of the workspace containing the collection.

collection

The path or URI to the collection containing the items.

DropDownByQueryData

A dropdown where the options are retrieved via a query.

Name Meaning

query

The query string used to retrieve the options.

MetaClassElementFieldData

A field that displays or allows display of a metaclass element.

ReferenceFieldData

Allows the selection of a reference to another element in the DatenMeister.

Name Meaning

isSelectionInline

If true, the selection is made inline, e.g., via a dropdown or search field, rather than a separate dialog.

defaultWorkspace

Default workspace to search for references.

defaultItemUri

Default URI of the item to be referenced.

showAllChildren

If true, all children are shown in the selection dialog.

showWorkspaceSelection

If true, the user can select the workspace.

showExtentSelection

If true, the user can select the extent.

metaClassFilter

A filter to restrict the selectable elements to a certain metaclass.

UriReferenceFieldData

A field to store a reference as a URI string.

Name Meaning

defaultWorkspace

Default workspace for the reference.

defaultExtent

Default extent for the reference.

SubElementFieldData

Through this field element, the user can assign several sub-elements to a property. This field expresses a 1:n relationship between the property and its sub-elements.

In addition to the properties of FieldData, the following properties are supported:

Name Meaning

metaClass

The metaclass of the sub-elements.

form

A ListForm used to build the SubForm. If this is empty, the metaclass is used to build the form. If the metaclass is also empty, the form is created depending on the properties contained.

allowOnlyExistingElements

True if only references to existing elements should be allowed.

defaultTypesForNewElements

Contains a list of metaclasses used to enable easy creation of items.

includeSpecializationsForDefaultTypes

If true, specialized types of the default types are also allowed.

defaultWorkspaceOfNewElements

Workspace where new elements are created.

defaultExtentOfNewElements

Extent where new elements are created.

actionName

Name of an action to be executed when a sub-element is manipulated.

FileSelectionFieldData

Allows the selection of a file from the file system.

Name Meaning

defaultExtension

Default file extension (e.g., .txt).

isSaving

If true, a "Save As" dialog is shown; otherwise, an "Open" dialog is shown.

initialPathToDirectory

The initial directory shown in the dialog.

filter

File filter (e.g., "Text files (.txt)|.txt").

FileNameFieldData

Similar to FileSelectionFieldData, but specifically for file names.

FullNameFieldData

Displays the full name of an element.

CheckboxListTaggingFieldData

Displays a list of checkboxes to tag an element with multiple values.

Name Meaning

values

Possible values for tagging.

separator

Separator used when storing multiple values in a single string property.

containsFreeText

If true, the user can also enter free text tags.

NumberFieldData

A field for numeric input.

Name Meaning

format

The format string for displaying the number.

isInteger

If true, only integer values are allowed.

SeparatorLineFieldData

Displays a horizontal separator line in the form.

Name Meaning

Height

The height of the separator line.