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.
|
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. |