|
|
(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}}
| + | |