Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Sirius/Tutorials/Mindstorms/PropertiesViews
Contents
Properties Views
Objectives
Provide custom properties views for a modeling tool that allows the user to define the choreography of a Mindstorms robot.
- GoForward’s properties view
- Specific background color if Cm value is negative
- Warning if Cm value is null
- Rotate’s properties view
- Random checkbox and Degrees field aligned on the same row
- Degrees field disabled if Random is checked
- Validation rule of type Warning, testing if Degrees is equal to 0 and Random is not checked
- Two quick fixes on this rule to propose solutions
- Choreography’s properties view
- Editable list of instructions
- Validation rule of type Error, testing if Name is already used by another Choreography at the same level
Sirius concepts
During this step, you will mainly use these Sirius concepts:
- Properties Views Description
- Describes how model element are shown and edited in the Eclipse Properties Views
- Page
- Corresponds to a tab in the Properties View
- Group
- Represents a group of widgets in a tab
- Container
- Allows to specify alternate layouts
- Fill Layout
- Organizes elements inside the container either horizontally or vertically
- Text widget
- Represents a single line text
- Checkbox widget
- Represents a checkbox
- References widget
- Represents the value of a reference in the model
- Property validation
- Defines a validation rule linked to a specific widget.
- Semantic validation
- Define a validation rule linked to a group
- Audit
- Evaluates if a validation rule has been broken
Video
Watch the video (16'45)
Detailed script
Create a Properties View for GoForward instructions
- At the root of the modeler definition create a New Properties View to define custom properties views for the
instructions- Metamodels =
mindstorms - Update the Page named
Default Page(already created by default)- Domain Class =
mindstorms::Instruction - Label Expression =
General
- Domain Class =
- Metamodels =
- Update the Group named Default Group to display and edit the cm property of GoForward
- Id =
GoForward - Domain Class =
mindstorms::GoForward - Label Expression =
Properties - Add a Text for the cm property
- Id =
CmText - Label Expression =
Cm - Value Expression =
feature:cm - Under Begin add a Set operation (set
var:newValueto cm)
- Id =
- Create a Conditional Style for CmText in order to color the text background when cm is lower than 0
- Precondition Expression =
aql:self.cm<0 - Update the Style with Background Color =
MindstormsColor1
- Precondition Expression =
- Id =
Now, if you select a GoForward instruction and enter a negative Cm value, you should see:
- Add a Property Validation Rule to warn the user when cm is null (useless instruction).
- Targets =
CmText - Id =
UselessGoForward - Level =
Warning - Message =
This instruction is useless - Create an Audit
- Audit Expression =
aql:self.oclAsType(mindstorms::GoForward).cm<>0
- Audit Expression =
- Targets =
Now, if you select a GoForward instruction and enter a null Cm value, you should see:
Create a Properties View for Rotate instructions
- Create a Group to display and edit the degrees and random properties of Rotate
- Id =
Rotate - Domain Class =
mindstorms::Rotate - Label Expression =
Properties - Add this new group to the Default page (Groups property on this page)
- Id =
- Create a Container to put the widgets in the same line
- Create a Fill Layout with Orientation =
HORIZONTAL
- Create a Fill Layout with Orientation =
- Add a Checkbox for the random property
- Id =
RandomCheckbox - Label Expression =
Random - Value Expression =
feature:random - Under Begin create a Set operation (set
var:newValueto random)
- Id =
- Add a Text for the degrees property
- Id =
DegreesText - Label Expression =
Degrees - Is Enabled Expression =
aql:not self.random - Value Expression =
feature:degrees - Under Begin create a Set operation (set
var:newValueto degrees)
- Id =
Now, if you select a Rotate instruction, the checkbox and the field should be aligned, and the check of Random should disable the Degrees field:
- Add a Semantic Validation Rule to warn the user when degrees is null and random is false (useless rotate instruction).
- Id =
UselessRotation - Level =
Warning - Message =
This instruction is useless - Create an Audit
- Audit Expression =
aql:self.degrees<>0 or self.random
- Audit Expression =
- Id =
Create a Properties View for Choreographies instructions
- Create a Group to display and edit the name and instructions properties of Choreography
- Id =
Choreography - Domain Class =
mindstorms::Choreography - Label Expression =
Properties
- Id =
- Add this new Group to the Default page (Groups property on this page)
- Add a Text for the name property
- Id =
NameText - Label Expression =
Name - Value Expression =
feature:name - Under Begin create a Set operation (set
var:newValueto name)
- Id =
- Add a Reference for the instructions property
- Id =
InstructionsRef - Label Expression =
Instructions - Reference Owner Expression =
var:self - Reference Name Expression =
instructions
- Id =
Now, if you select a Choreography instruction, the properties view contains a list with action buttons:
- Add a Property Validation Rule to warn the user when the name is already used by a sibling choreography.
- Targets =
NameText - Id =
UniqueName - Level =
Error - Message =
Name must be unique - Create an Audit
- Audit Expression =
aql:not self.siblings()->filter(mindstorms::Choreography)->collect(i|i.name)->includes(self.name)
- Audit Expression =
- Targets =
Installing the solution
The solution of this step is provided in solution4.zip
Warning: If you delete your current design project and load the solution, you should close the sample project and reopen it, in order the new version to be taken into account





