|
1 | 1 | /* |
2 | | - * Copyright (c) 2010, 2023 BSI Business Systems Integration AG |
| 2 | + * Copyright (c) 2010, 2026 BSI Business Systems Integration AG |
3 | 3 | * |
4 | 4 | * This program and the accompanying materials are made |
5 | 5 | * available under the terms of the Eclipse Public License 2.0 |
|
26 | 26 | import org.eclipse.scout.rt.client.ui.basic.table.ITableRow; |
27 | 27 | import org.eclipse.scout.rt.client.ui.basic.table.ITableRowFilter; |
28 | 28 | import org.eclipse.scout.rt.client.ui.basic.table.TableEvent; |
| 29 | +import org.eclipse.scout.rt.client.ui.basic.table.TableOrganizer; |
29 | 30 | import org.eclipse.scout.rt.client.ui.basic.table.columns.AbstractStringColumn; |
30 | 31 | import org.eclipse.scout.rt.client.ui.basic.table.columns.IColumn; |
| 32 | +import org.eclipse.scout.rt.client.ui.basic.table.organizer.ITableOrganizer; |
31 | 33 | import org.eclipse.scout.rt.client.ui.basic.table.userfilter.UserTableRowFilter; |
| 34 | +import org.eclipse.scout.rt.platform.util.ImmutablePair; |
| 35 | +import org.eclipse.scout.rt.platform.util.Pair; |
32 | 36 | import org.eclipse.scout.rt.platform.util.StringUtility; |
33 | 37 | import org.eclipse.scout.rt.shared.services.lookup.ILookupRow; |
34 | 38 | import org.eclipse.scout.rt.shared.services.lookup.LookupRow; |
@@ -1621,6 +1625,93 @@ public void testTriggerStructureChangesDuringInitColumn() { |
1621 | 1625 | .anyMatch(p -> "columnStructureChanged".equals(p.getType()))); |
1622 | 1626 | } |
1623 | 1627 |
|
| 1628 | + @Test |
| 1629 | + public void testColumnOrganizeAction() { |
| 1630 | + List<Pair<String, IColumn>> organizeActions = new ArrayList<>(); |
| 1631 | + Table table = new Table() { |
| 1632 | + @Override |
| 1633 | + protected ITableOrganizer createTableOrganizer() { |
| 1634 | + return new TableOrganizer(this) { |
| 1635 | + |
| 1636 | + @Override |
| 1637 | + public void addColumn(IColumn column) { |
| 1638 | + organizeActions.add(ImmutablePair.of("add", column)); |
| 1639 | + } |
| 1640 | + |
| 1641 | + @Override |
| 1642 | + public void removeColumn(IColumn column) { |
| 1643 | + organizeActions.add(ImmutablePair.of("remove", column)); |
| 1644 | + } |
| 1645 | + |
| 1646 | + @Override |
| 1647 | + public void modifyColumn(IColumn column) { |
| 1648 | + organizeActions.add(ImmutablePair.of("modify", column)); |
| 1649 | + } |
| 1650 | + }; |
| 1651 | + } |
| 1652 | + }; |
| 1653 | + table.init(); |
| 1654 | + |
| 1655 | + IColumn col = table.getColumns().getFirst(); |
| 1656 | + |
| 1657 | + JsonTable<ITable> jsonTable = m_uiSession.createJsonAdapter(table, new JsonAdapterMock()); |
| 1658 | + jsonTable.toJson(); |
| 1659 | + |
| 1660 | + String validColumnId = jsonTable.getColumnId(col); |
| 1661 | + assertNotNull(validColumnId); |
| 1662 | + assertEquals(0, organizeActions.size()); |
| 1663 | + |
| 1664 | + // ---------- |
| 1665 | + |
| 1666 | + JsonEvent addValidColumnEvent = createJsonColumnOrganizeActionEvent("add", validColumnId); |
| 1667 | + jsonTable.handleUiEvent(addValidColumnEvent); |
| 1668 | + |
| 1669 | + assertEquals(1, organizeActions.size()); |
| 1670 | + assertEquals("add", organizeActions.getFirst().getLeft()); |
| 1671 | + assertSame(col, organizeActions.getFirst().getRight()); |
| 1672 | + organizeActions.clear(); |
| 1673 | + |
| 1674 | + JsonEvent addInvalidColumnEvent = createJsonColumnOrganizeActionEvent("add", "INVALID_COLUM_ID"); |
| 1675 | + jsonTable.handleUiEvent(addInvalidColumnEvent); |
| 1676 | + |
| 1677 | + assertEquals(0, organizeActions.size()); |
| 1678 | + |
| 1679 | + // ---------- |
| 1680 | + |
| 1681 | + JsonEvent removeValidColumnEvent = createJsonColumnOrganizeActionEvent("remove", validColumnId); |
| 1682 | + jsonTable.handleUiEvent(removeValidColumnEvent); |
| 1683 | + |
| 1684 | + assertEquals(1, organizeActions.size()); |
| 1685 | + assertEquals("remove", organizeActions.getFirst().getLeft()); |
| 1686 | + assertSame(col, organizeActions.getFirst().getRight()); |
| 1687 | + organizeActions.clear(); |
| 1688 | + |
| 1689 | + JsonEvent removeInvalidColumnEvent = createJsonColumnOrganizeActionEvent("remove", "INVALID_COLUM_ID"); |
| 1690 | + jsonTable.handleUiEvent(removeInvalidColumnEvent); |
| 1691 | + |
| 1692 | + assertEquals(0, organizeActions.size()); |
| 1693 | + |
| 1694 | + // ---------- |
| 1695 | + |
| 1696 | + JsonEvent modifyValidColumnEvent = createJsonColumnOrganizeActionEvent("modify", validColumnId); |
| 1697 | + jsonTable.handleUiEvent(modifyValidColumnEvent); |
| 1698 | + |
| 1699 | + assertEquals(1, organizeActions.size()); |
| 1700 | + assertEquals("modify", organizeActions.getFirst().getLeft()); |
| 1701 | + assertSame(col, organizeActions.getFirst().getRight()); |
| 1702 | + organizeActions.clear(); |
| 1703 | + |
| 1704 | + JsonEvent modifyInvalidColumnEvent = createJsonColumnOrganizeActionEvent("modify", "INVALID_COLUM_ID"); |
| 1705 | + jsonTable.handleUiEvent(modifyInvalidColumnEvent); |
| 1706 | + |
| 1707 | + assertEquals(0, organizeActions.size()); |
| 1708 | + |
| 1709 | + // ---------- |
| 1710 | + |
| 1711 | + JsonEvent invalidActionEvent = createJsonColumnOrganizeActionEvent("INVALID_ACTION", validColumnId); |
| 1712 | + assertThrows(IllegalArgumentException.class, () -> jsonTable.handleUiEvent(invalidActionEvent)); |
| 1713 | + } |
| 1714 | + |
1624 | 1715 | public static Table createTableFixture(int numRows) { |
1625 | 1716 | Table table = new Table(); |
1626 | 1717 | table.fill(numRows); |
@@ -1667,4 +1758,12 @@ public static JsonEvent createJsonColumnMovedEvent(String columnId, int index) t |
1667 | 1758 | data.put("index", index); |
1668 | 1759 | return new JsonEvent(tableId, JsonTable.EVENT_COLUMN_MOVED, data); |
1669 | 1760 | } |
| 1761 | + |
| 1762 | + public static JsonEvent createJsonColumnOrganizeActionEvent(String actionId, String columnId) throws JSONException { |
| 1763 | + String tableId = "x"; // never used |
| 1764 | + JSONObject data = new JSONObject(); |
| 1765 | + data.put("action", actionId); |
| 1766 | + data.put("columnId", columnId); |
| 1767 | + return new JsonEvent(tableId, JsonTable.EVENT_COLUMN_ORGANIZE_ACTION, data); |
| 1768 | + } |
1670 | 1769 | } |
0 commit comments