Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Papyrus/Papyrus User Guide/Table Documentation

< Papyrus‎ | Papyrus User Guide
Revision as of 09:54, 16 December 2014 by Vincent.lorenzo.cea.fr (Talk | contribs) (Views Table)

Since Papyrus 0.10 (Eclipse Kepler), Papyrus provides a new version of the tabular editors. This version replaces the previous version in Eclipse Luna.
Since Papyrus 1.1.0 (Eclipse Mars), Papyrus provides hierarchical table too.

Vocabulary

  • category : in tree table, a category is a feature to listen : ownedAttributes for example.
  • context : the element on which the table is created. Thhis word is used in this documentation and in the table metamodel
      • The context will often be used as parent element in case of creation of a new element inside a table.
      • The context is used in synchronized table to provide the rows, according to the implementation of the table
  • depth : word used for tree table, its means the distance between the context of the table and the showed element. It starts to 0 with direct children's context.
  • Drag and Drop (DnD) : the action to select an element with the mouse and to move it to another located, could be done in the same Eclipse View or from an Eclipse View to another one. Always inside the same instance of Eclipse
  • DnD : see Drag And Drop
  • owner : the graphical parent of the table. it is used in the Model Explorer View to display the table to the wanted location. After creating a new table, in the general case, the owner field has the same value than the root field. This word is used in the Property View of the table (see Viewpoint documentation for further information)
  • root : the same thing than the context. This word is used in the Property View of the Table (see Viewpoint documentation for further information)
  • type : the type of the table is given a a field string owned by the object TableConfiguration. This field is used by the Tabular editors to know how to open and manage the instance of the tables. The type of a table can't be changed by the user. Example of known types :
    • PapyrusGenericTable : the type of UML Generic Table. This table is filled by DnD and accepts all UML Elements
    • PapyrusSysMLRequirementTable : the type of the Table used to edit Requirement. This table is synchronized and shows only Class stereotyped by Requirements directly owned by the context of the table.
    • PapyrusClassTreeTable : the type of the Class Tree Table. In this provided configuration, this table is fully synchronized. Its shows :
      • on first level (depth=0), the classes directly owned by the context of the table
      • on the second level (depth=1), the owned attributes, the owned operations and the nested classes of the classes displayed on the first level.
      • on the third level (depth=2), the parameters of the operations dsiplay on the the second level

General presentation

Papyrus provides tabular editors to allow to the user to edit their models with a new way as well than the Diagram editors and the Property View. So, in the table, the user can create/destroy model's element and edit their features.

Papyrus provides to main kinds of tabular editors :

  1. normal table (also called flat table)
  2. tree table (also called hierarchical table)

Moreover the contents (most often the rows) of the table, can be synchronized on the context of the table.

Normal table and synchronization

  1. Normal table can be synchronized or not, it depends of the type of the table. The switch between synchronization and no synchronization is not allowed.
  2. if the table is not synchronized, it is filled by the user using Drag and Drop. The user selects an element displayed in the Model Explorer and drop it into an opened table (in the row header area).

This action will create a new row, if the dropped element is allowed by the table implementation.

  1. if the table is synchronized, the user can't drop element to add rows. The rows are calculated according to the table context and the table implementation. The user can't change the allowed context of the rows.

Tree Table and synchronization

The contents of the tree table is always synchronized, excepted for the first level (depth=0), which can be synchronized of filled by the user by Drag and Drop from the ModelExplorer, as for normal table. The Tree Table provides a way to choose :

  • the filling of the first level (DnD or synchronization)
  • the number of levels (depths) to listen and what to listen

examples of table

an example of normal table (UML Generic table)

an example of tree table, with the hierarchy displayed on several columns, and categories visible (UML Tree Class table)

an example of tree table, with the hierarchy displayed on several columns, and categories hidden (UML Tree Class table)

an example of tree table, with the hierarchy displayed on one column, and categories visible (UML Tree Class table)


Existing Tables in small words

  • UML Generic Table
  • SysML Allocation Table
  • SysML Requirement Table
  • Views Table
  • UML Class Tree Table


UML Generic Table

Elements Accepted : UML Element only (all of them)

Filling Way : User, by Drag&Drop from the Model Explorer

Possible Context : all UML Element.

Save : All rows displayed in the table are saved in the model

Element Creation : All UML Elements


SysML Allocation Table

Elements Accepted : SysML Allocation only

Filling Way : Automatic, by Synchronization on the context of the model. Only the Allocation directly owned by the context of the table are displayed.

Possible Context : UML Package, with the SysML Profile Allocations applied.

Save : The Rows are not serialized in the model, because they are derived of the UML Model.

Element Creation : SysML Allocation


SysML Requirement Table

Elements Accepted : SysML Requirement only

Filling Way : Automatic, by Synchronization on the context of the model. Only the Requirements directly owned by the context of the table are displayed.

Possible Context : UML Package, with the SysML Profile Requirement applied.

Save : The Rows are not serialized in the model, because they are derived of the UML Model.

Element Creation : SysML Requirement


Views Table

  • Elements Accepted : Papyrus Views (Table/Diagram/...) only
  • Filling Way : Automatic, by Synchronization on the context of the model.
  • Possible Context : All UML Elements
  • Save : The Rows are not serialized in the model, because they are derived of the notation Model.
  • Element Creation None


UML Class Tree Table

  • Element accepted : Classes (depth=0 and depth=1), Properties (depth=1), Operations (depth=1), Parameters (depth=2)
  • Filling way : Automatic, synchronized on the context of the table
  • Possible context : Package or Class
  • Save : The rows are not serialized in the model, because they are derivied from the context of the classes

Table Features

The table framework provides a large number of features. Here we will describe all existing features supported by the framework, but not necessarly by all the tables.

  1. Edit Cell Values
  2. Change Axis (Columns/Row) Order
  3. Invert Axis (Exchange Column And Row)
  4. Add Axis (Column/Row) Element by Drag&Drop from another view (ModelExplorer)
  5. Remove Column/Row
  6. Destroy Column/Row Element
  7. Rename Column/Row Header
  8. Choose the Displayed Columns/Rows
  9. Choose the Displayed Columns/Rows for Stereotype Property in the popup menu
  10. Paste Columns/Rows From External Spreadsheet
  11. Display Index Column/Row Header
  12. Display Label Column/Row Header
  13. Configure Index Header Style (A, B, C...Z, AA, AB, ... or 0,1,2,3)
  14. Configure Label Header Style : select the information to Display in the Header Label (Name, Multiplicity, Type, Icon, isDerived)
  15. Export table into the Excel Format
  16. Print table
  17. Sort Column/Row Axis by Alphabetic order
  18. Sort Rows selecting one or several column header
  19. Save and restore Table Axis Configuration
  20. Select All
  21. AutoResize axis


Edit Cell Values

Double Click on a cell or selecting a cell then pressing F2, excepted for derived features

Change Axis Order

Click on the axis to move and drop it to its new location.

Invert Axis

Select the action Invert Axis in the popup menu or change it into the Table Property View.

Add Axis (Column/Row) Element by Drag&Drop

Select your element and drop it into the table, in the column region or in the row region to add it.

Remove Column/Row

Select the header of the axis to remove then right click and select Remove Column/Row. The axis will be remove of the table, but the represented element will continue to be in the model.

Destroy Column/Row Element

Select the header of the axis element to destroy then right click and select Destroy Column/Row Element. The represented element will be destroyed and its axis will be removed from the table.

Rename Column/Row Header

This function can do 2 things according to the usecase :

  • Rename the element represented by the axis, when the element is owned by your model
  • Define an alias to the axis, when the element is not owned by your model (UML Feature for example)

Select the header of the axis element to rename then right click and select Rename Header.

Choose the Displayed Columns/Rows

Right click in the table (not in the header) and select Columns ->  Create/Destroy Columns. (the same thing for rows

Choose the Displayed Columns/Rows for Stereotype Property in the popup menu

Right click in the table (not in the header) and select Select Stereotype Properties Columns (or Rows)


Features/Tables, when the Axis are NOT inverted.


UML Generic Table
SysML Allocation Table
SysML Requirement Table
Views Table
Content synchronized on table context
No
Yes
Yes
Yes
Edit Cell Value
Yes
Change Axis Order
Add Column Axis By Drag & Drop No
Add Row Axis By Drag & Drop All UML Elements
No (Synchronized table)
Remove Column
Yes
Remove Row
Yes
Destroy Column Element
Yes
Yes
Yes

Destroy Row Element
Yes
Yes
Yes

Rename Column Header




Rename Row Header




Choose the Displayed Columns
Yes
Choose the Displayed Columns for Stereotype Property in the popup menu

Choose the Displayed Rows
No
No
No

Choose the Displayed Rows for Stereotype Property in the popup menu
No
Paste Column From Spreadsheet
No
No
No

Paste Row From Spreadsheet
Yes
Display Index Column/Row Header
Display Label Column/Row Header
Configure Index Header Style
Configure Label Header Style
Export to Excel
Print table
Sort Column Axis By Name
Sort Row Axis By Name




Save and restore Table Axis Configuration
Yes
Select All
AutoResize axis
Yes








Paste From Spreadsheet in a Table

General

  • Tables support the paste from Spreadsheet (Excel for example).
  • This feature is already configured for SysML Requirements Table and SysML Allocations Table.
  • For Generic Table, the user must configure the paste himself.
  • Stereotype application :
    • If your table displays columns representing stereotype's properties, the required stereotypes will be applied if there is a value to paste in the cell.
    • If you want force stereotype application on all pasted elements, you must use post-actions
  • Name Resolution
      • Papyrus table tries to resolve the text pasted from the external spreadsheet. That is to say if the text is pasted in a column representing a boolean, text will be converted in boolean value, if the text is pasted in a column representing a UML NamedElement, we try to find this NamedElement in the exising model to set the value.
      • if the resolution of the pasted text failed, we create a CellProblem, to store the pasted value. This value is displayed in the table, underlined in red.
  • If the pasted spreadsheet as more columns than the current table, the too many columns will be ignored.
  • If the pasted spreadsheet as less columns than the current table there is no problem to do the paste.
  • In the mixed case, some rows have too many columns and others not enough, there is no problem to do the paste.

Steps to paste in a Generic Table

We assume that the user wants to paste rows (and not columns).

  • Create a new Generic table
  • Select the columns to display in your table.
  • Select the table in the ModelExplorer View in order to display its Property View
  • In the Property View goes into the Paste Tab. 4 informations must be completed by the user:
    • Detached Mode (when true, paste is faster but actions done by service edit will be ignored.
      • if false, Paste action uses the service edit (initialize default values, apply stereotypes required by element id).
      • if true, stereotype required by the element id will be ignored.
    • Pasted Element Id : defines the pasted element: org.eclipse.papyrus.uml.Class will create a UML Class
      • org.eclipse.papyrus.sysml.Requirement will create a uml.Class stereotyped Requirement, called Requirement0 if Detached mode=false.
      • org.eclipse.papyrus.sysml.Requirement will create a uml.Class the name will be initialized only if the user pastes a name value and the steroetype will be applied only if a column requires it or if it is defined by opst actions)
    • ContainementFeature : the feature owning the pasted elements
    • Post Actions : a way to define 2 kinds of actions:
      • actions done just after the element creation
      • actions done after have pasting all cell values
      • currently, Papyrus provides Post Action only for stereotype application
      • currently, Post Actions are ignored when detached mode=false

Paste In Table Configuration Property View

Import From Spreadsheet in a Table (CSV File)

The mecanism used for import in the same than for the Paste, so previous rules are always available. In the popup menu of the table, you will find a menu called "Import From File". This menu allows to import a CSV file, managing the columns separators and the text delimiter. Import Dialog - Configuring Import

Table Property View

The Property View of the table is accessible selecting the table in the ModelExplorer.


Synchronization between tables and model explorer

Generalities

As illustrated below this feature is enabled when the Link With Editor button is activated :

ModelExplorerLinkWithEditor

This link the active diagram, in the multi editor view, with the model explorer view. This link works bidirectionally.
As shown below, more than one element can be selected in one view and their counterparts, if present in the other, will be automatically selected as well.

SelectionWithDiagram

It is to be noted that, when changing pages, the selection for each of them remain in memory and handled by setInput in tabbedPropertySheetPage

Row selections

The default behavior of the tables, and their representation, is to list the appropriate elements as rows with each property indicated by a column as illustrated below.

GenericSelection
RequirementSelection
AllocationSelection
ViewsSelection

Column selections

The axis of the table can also be inverted and the elements represented as columns with their properties as rows :

ColumnSelection

Both those selections are achieved either by clicking on the element in the model explorer or the element's row or Column tag in the table.

Cell selections

Wether the axis of the table is inverted or not, the user can select elements represented as cells inside a row or column of the table and see its counterpart selected as well.
It is important to remember that the cell selection is a one way behavior, from cell to model explorer, as the table cannot know what the user wants to select, row or cell, based on a selection in the model explorer.

CellSelection
CellSelectionInvertAxis

Mixed Selections

A behavior worthy of notice is that elements represented as cells, for example elements owned, if selected in conjunction with a row or a column, in the event of an inverted axis, produces a mixed selection of all the elements in the model explorer.

MixedSelection
MixedSelectionReq

From the model explorer

As a reminder, selections initiated by the model explorer will only result in column or row selections as the table has no means of knowing what type of selection is required by the user.


Styles in Papyrus' tables

It is important to note that the changes below are coming into eclipse Mars as they are dependant on a modification of the model.

Styles in the resize of a table's components

NamedStyles are used to introduce those changes and intValues ares used to mark the resizing of table elements.
Below is the default model used for the table used to demonstrate the changes when styles are written and/or applied in a table.

defaultTable

Resize of the Headers

Sliding the header's cell frontier will result in the creation of a localHeaderAxisConfiguration and to it will be add the new values of the header's width and/or height. Both sets of headers can have stored values for heoght and width as the table can be inverted and if so the row and the column headers will be too.
Below is the state of the model during the first change: resizing the row headers' index and label.

In this case the local header created is the RowHeader but if the column headers are changed the model gets a ColumnHeader as illustrated by the image below.

resizeRowHeaders
resizeAllHeaders

Resize of the Axis

The values carried by the localHeaders only affect the headerLayer of the table and therefore the height or width of the Axis (columns and/or rows) will not be affected by them. For those to change, new values will be carried by the Axis themselves as can be seen in the following image. Of course, the method used to change the values is the same sliding of the frontier used when resizing the headers.

resizeAxis

In this example one row and two columns were changed and they all bear the corresponding value in their Axis element.

Styles in the merge of Axis elements

For this type of change the NamedStyles used are booleanValues, indicating if the Axis are to be merged or not.
The behavior has been copied from the previous one and the booleans will be caried by the Axis, in case of a user selecting the axis to be merged, or the localHeaders if the user chooses to merge all the rows or columns of the table in one go.
To initiate the merge, the user has access to a merge menu and chooses between the four types of merge the one best suited to the task (as illustrated below). The programm then proceeds to merge the cells of same value inside the selection.

mergeOptions

Merge selected Axis

As mentionned above, in case of a merge of a selected axis, the boolean will be caried by the Axis element in the model.

booleanMergeSelectedColumn

The other choices will then be greyed-out and a toggle will be displayed on the selected option to notify the user that this is (or these are) the axis merge.

mergeSelectedColumns2

If the user selects a cell or an axis that has not been part of the previously merged selection, the toggle will not be displayed but the option will still be visible as the other will still be greyed-out.
It is important to note that, if the user so chooses, the merge option can be reapplied to the new selection and the merge span will consist of the newly selected axis. A cautionary note however as only full rows or columns will be merged.

mergeSelectedColumns
mergeSelectedRow
mergeSelectedRows2
mergeSelectedRows3

Merge All row/column Axis

The user can merge all the rows in the table and the result will look like this.

booleanMergeAllRows
mergeAllRows2

Edition of merged Cells

Once the cells are merged, the user might want to edit them. This edition can be problematic as the merge only takes into account the values of the cells and not their types when applying the merge option. This is shown in the example below asa classifier can be an activity but not the other way around.
The first image illustrates the model and the profile's stereotype, applied on both classes, containing the three attributes activity and classifiers.

tableProfileElements

When the user clicks on the left most part of the merged area, under the activity label, the editing tool only shows activity1 as a possible choice. But if the user selects the right side, under the classifier label, then the choices are many. In this example the choice is to apply the interface type to the merged cells and handle the editing behavior as illustrated by the three next images.

activity edition
classifier edition
edition's result

The tool will then automatically detect the possibility, or impossibility, of the edition and split the merge accordingly.
Please note that the merge selection will not be changed and the selected axis will still carry their merge booleans as other values might still be equal and therefore the user might still want those merged.

Back to the top