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

Difference between revisions of "Scout/Concepts/Table"

(Summary Cell, Primary Columns)
(Replaced content with "The Scout documentation has been moved to https://eclipsescout.github.io/.")
 
(4 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{ScoutPage|cat=Component Model}}
+
The Scout documentation has been moved to https://eclipsescout.github.io/.
 
+
A table is data structure that can be represented in a {{ScoutLink|Concepts|TablePage|TablePage}} or a {{ScoutLink|Concepts|TableField|TableField}}.
+
 
+
* implements: {{ScoutJavadoc|ITable|I}}
+
* extends: {{ScoutJavadoc|AbstractTable|C}}
+
 
+
== Description ==
+
Table can contains a set of structured data: the structure of the entity is defined by the {{ScoutLink|Concepts|Column|columns}}. Each entity contained in the table is a {{ScoutLink|Concepts|TableRow| row}}. At the intersection of a column and a row is a {{ScoutLink|Concepts|Cell|Cell}}. A Cell describes how the value is represented (displayed text, colors, style, icon...).
+
 
+
== Example ==
+
Imagine that you want to have a table of persons that are structured as followed:
+
* Name (String)
+
* First name (String)
+
* Age (Integer)
+
* Date of birth (Date)
+
 
+
A such table needs to contains 4 columns :
+
* <code>NameColumn</code> a {{ScoutLink|Concepts|StringColumn|String Column}}
+
* <code>FirstNameColumn</code> a {{ScoutLink|Concepts|StringColumn|String Column}}
+
* <code>AgeColumn</code> a {{ScoutLink|Concepts|IntegerColumn|Integer Column}}
+
* <code>BirthDateColumn</code> a {{ScoutLink|Concepts|DateColumn|Date Column}}
+
 
+
Here is how this table looks like in the {{ScoutLink|SDK|Explorer View|Explorer View of the SDK}}:
+
 
+
[[Image:Scout sdk example table.png]]
+
 
+
=== Access to the data ===
+
To access a value of a table, the common pattern is to go throw the column. For example if you want to access the age of a person, at a precise row index r, the code is:
+
<source lang="java">
+
  private Integer getAgeOfPersonAtRow(int r){
+
    return getTable().getAgeColumn().getValue(r);
+
  }
+
</source>
+
 
+
=== Add a rows in the table ===
+
The table API (client-side) offers different ways to add rows in the table:
+
 
+
1: One row, with type check on set value. (you get compile error if you change something in your table):
+
<source lang="java">
+
ITableRow row = getTable().createRow();
+
getTable().getNameColumn().setValue(row, "Smith");
+
getTable().getFirstNameColumn().setValue(row, "John");
+
getTable().getAgeColumn().setValue(row, 42);
+
getTable().getBirthDateColumn().setValue(row, DateUtility.parse("14.12.1970", "dd.MM.yyyy"));
+
getTable().addRow(row, true);
+
</source>
+
The second parameter correspond to "mark as inserted". <code>false</code> (default value - if the parameter is omitted) the row will be insterted with a row Status: <code>ITableRow.STATUS_NON_CHANGED</code>. If <code>true</code>, the row will be inserted with the status <code>ITableRow.STATUS_INSERTED</code>.
+
 
+
2: One row as Object[] array.
+
<source lang="java">
+
getTable().addRowsByArray(
+
    new Object[]{"Johnny", "Mcgee", 26, DateUtility.parse("25.05.1986", "dd.MM.yyyy")},
+
    ITableRow.STATUS_INSERTED);
+
</source>
+
The second parameter indicate the status of the new row. <code>ITableRow.STATUS_INSERTED</code> is the default status (it could be omitted in this example).
+
 
+
3: Multiple rows as Object[][] array.
+
<source lang="java">
+
getTable().addRowsByMatrix(new Object[][]{
+
    new Object[]{"Isabella", "Barton", 32, DateUtility.parse("21.01.1980", "dd.MM.yyyy")},
+
    new Object[]{"Dana", "Reyes", 56, DateUtility.parse("16.08.1956", "dd.MM.yyyy")}
+
}, ITableRow.STATUS_INSERTED);
+
</source>
+
The second parameter indicate the status of the new row. <code>ITableRow.STATUS_INSERTED</code> is the default status (it could be omitted in this example).
+
 
+
For method 2 and 3 you need to be ensure that the array elements order match with the order of your table columns.
+
 
+
== TODO ==
+
{{note|TODO| Organize these subsections in section + subsection. Add description }}
+
 
+
=== deleteRow(..) / discardRow(..) ===
+
see: http://www.eclipse.org/forums/index.php/mv/msg/441016/988922/#msg_988922
+
 
+
 
+
=== Display/Hide the data (Organize Table) ===
+
Table provides support to sort, to filter how the content is represented.
+
 
+
 
+
=== Sorting possibility ===
+
properties
+
 
+
 
+
=== Selection ===
+
Table also manages selection.
+
 
+
properties
+
 
+
=== Menu ===
+
Table can also contains Menus, to provide a possibility to trigger some actions (Menus are displayed in the context menu of the table).
+
 
+
 
+
=== Checkable ===
+
 
+
 
+
=== Summary Cell ===
+
 
+
{{note|TODO|Merge this post: [http://www.eclipse.org/forums/index.php/mv/msg/452690/1007940/#msg_1007940 Summary Cell]. It explain how the summary cell is used to represent the child pages in the page tree.}}
+
 
+
=== Primary Columns ===
+
{{note|TODO|Describe this here or in the [[Scout/Concepts/Column#Properties|Column property]]}}
+
 
+
== See Also ==
+
* {{ScoutLink|Concepts|TablePage|TablePage}}
+
* {{ScoutLink|Concepts|TableField|TableField}}
+
 
+
* {{ScoutLink|Concepts|Column|Column}}
+
* {{ScoutLink|Concepts|TableRow|Table row}}
+
* {{ScoutLink|Concepts|Cell|Cell}}
+

Latest revision as of 05:00, 14 March 2024

The Scout documentation has been moved to https://eclipsescout.github.io/.

Back to the top