blob: e2ec5623b87e218ea81a4b7b2d5f328d88195e3f [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2018, 2020 Dirk Fauth.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Dirk Fauth <dirk.fauth@googlemail.com> - initial API and implementation
******************************************************************************/
package org.eclipse.nebula.widgets.nattable.group;
import static org.junit.Assert.assertEquals;
import org.eclipse.nebula.widgets.nattable.data.IRowDataProvider;
import org.eclipse.nebula.widgets.nattable.dataset.person.Person;
import org.eclipse.nebula.widgets.nattable.dataset.person.PersonService;
import org.eclipse.nebula.widgets.nattable.grid.data.DefaultBodyDataProvider;
import org.eclipse.nebula.widgets.nattable.group.model.IRowGroup;
import org.eclipse.nebula.widgets.nattable.group.model.RowGroup;
import org.eclipse.nebula.widgets.nattable.group.model.RowGroupModel;
import org.eclipse.nebula.widgets.nattable.hideshow.RowHideShowLayer;
import org.eclipse.nebula.widgets.nattable.layer.DataLayer;
import org.junit.Before;
import org.junit.Test;
public class RowGroupExpandCollapseLayerTest {
private RowGroupModel<Person> model;
private RowHideShowLayer rowHideShowLayer;
private RowGroupExpandCollapseLayer<Person> expandCollapseLayer;
@Before
public void setup() {
String[] propertyNames = { "firstName", "lastName", "gender", "married", "birthday" };
IRowDataProvider<Person> bodyDataProvider =
new DefaultBodyDataProvider<>(PersonService.getFixedPersons(), propertyNames);
DataLayer bodyDataLayer = new DataLayer(bodyDataProvider);
this.rowHideShowLayer = new RowHideShowLayer(bodyDataLayer);
this.model = new RowGroupModel<>();
this.model.setDataProvider(bodyDataProvider);
this.expandCollapseLayer = new RowGroupExpandCollapseLayer<>(this.rowHideShowLayer, this.model);
// Create a group of rows for the model.
RowGroup<Person> rowGroup = new RowGroup<>(this.model, "Simpson", false);
rowGroup.addMemberRow(bodyDataProvider.getRowObject(0));
rowGroup.addStaticMemberRow(bodyDataProvider.getRowObject(1));
rowGroup.addMemberRow(bodyDataProvider.getRowObject(2));
rowGroup.addMemberRow(bodyDataProvider.getRowObject(3));
rowGroup.addMemberRow(bodyDataProvider.getRowObject(4));
rowGroup.addMemberRow(bodyDataProvider.getRowObject(5));
rowGroup.addMemberRow(bodyDataProvider.getRowObject(6));
rowGroup.addMemberRow(bodyDataProvider.getRowObject(7));
rowGroup.addMemberRow(bodyDataProvider.getRowObject(8));
rowGroup.addMemberRow(bodyDataProvider.getRowObject(9));
this.model.addRowGroup(rowGroup);
rowGroup = new RowGroup<>(this.model, "Flanders", false);
rowGroup.addMemberRow(bodyDataProvider.getRowObject(10));
rowGroup.addStaticMemberRow(bodyDataProvider.getRowObject(11));
rowGroup.addMemberRow(bodyDataProvider.getRowObject(12));
rowGroup.addMemberRow(bodyDataProvider.getRowObject(13));
rowGroup.addMemberRow(bodyDataProvider.getRowObject(14));
rowGroup.addMemberRow(bodyDataProvider.getRowObject(15));
rowGroup.addMemberRow(bodyDataProvider.getRowObject(16));
rowGroup.addMemberRow(bodyDataProvider.getRowObject(17));
this.model.addRowGroup(rowGroup);
}
@Test
public void getRowCountWhenColumnsAddedToTheGroup() throws Exception {
assertEquals(18, this.expandCollapseLayer.getRowCount());
// get Flanders row group
IRowGroup<Person> group = this.model.getRowGroupForName("Flanders");
// Collapse and check count
group.collapse();
assertEquals(11, this.expandCollapseLayer.getRowCount());
// Expand and check count
group.expand();
// Collapse again
assertEquals(18, this.expandCollapseLayer.getRowCount());
}
//
// @Test
// public void getRowCountWhenColumnsAddedToTheGroup() throws Exception {
// assertEquals(18, this.expandCollapseLayer.getRowCount());
//
// // get Flanders row group
// IRowGroup<Person> group = this.model.getRowGroupForName("Flanders");
//
// // Collapse and check count
// group.collapse();
// assertEquals(11, this.expandCollapseLayer.getRowCount());
//
// // Expand and add a column
// expand(3);
// this.model.addColumnsIndexesToGroup(TEST_GROUP_NAME, 8);
//
// // Collapse again
// collapse(3);
// assertEquals(5, this.expandCollapseLayer.getColumnCount());
// }
// @Test
// public void getColumnCountWhenColumnsCollapsedAndHidden() throws
// Exception {
// // Columns 2 and 3 hidden
// this.underlyingLayer.hideColumnPositions(Arrays.asList(2, 3));
// assertEquals(7, this.expandCollapseLayer.getColumnCount());
//
// collapse(3);
// assertEquals(6, this.expandCollapseLayer.getColumnCount());
//
// expand(3);
// assertEquals(7, this.expandCollapseLayer.getColumnCount());
// }
//
// /*
// * Hide show layer 0 1 2(h) 3 4 5 6 7 8 9(h)
// * ------------------------------------------------- Expand/Collapse
// |<-----
// * CG1 ----->|
// */
// @Test
// public void isFirstVisibleWithFirstColumnHidden() throws Exception {
// this.underlyingLayer.hideColumnPositions(Arrays.asList(2));
//
// // assertFalse(expandCollapseLayer.isFirstVisibleColumnInGroup(2));
// assertTrue(ColumnGroupUtils.isFirstVisibleColumnIndexInGroup(3,
// this.expandCollapseLayer, this.underlyingLayer, this.model));
// assertFalse(ColumnGroupUtils.isFirstVisibleColumnIndexInGroup(4,
// this.expandCollapseLayer, this.underlyingLayer, this.model));
// assertFalse(ColumnGroupUtils.isFirstVisibleColumnIndexInGroup(5,
// this.expandCollapseLayer, this.underlyingLayer, this.model));
// }
//
// /*
// * Hide show layer 0 1 2(h) 3(h) 4 5 6 7 8 9(h)
// * ------------------------------------------------- Expand/Collapse
// * |<------ CG1 ------->|
// */
// @Test
// public void isFirstVisibleWithFirstTwoColumnsHidden() throws Exception {
// this.underlyingLayer.hideColumnPositions(Arrays.asList(2, 3));
//
// assertFalse(ColumnGroupUtils.isFirstVisibleColumnIndexInGroup(2,
// this.expandCollapseLayer, this.underlyingLayer, this.model));
// assertFalse(ColumnGroupUtils.isFirstVisibleColumnIndexInGroup(3,
// this.expandCollapseLayer, this.underlyingLayer, this.model));
// assertTrue(ColumnGroupUtils.isFirstVisibleColumnIndexInGroup(4,
// this.expandCollapseLayer, this.underlyingLayer, this.model));
// assertFalse(ColumnGroupUtils.isFirstVisibleColumnIndexInGroup(5,
// this.expandCollapseLayer, this.underlyingLayer, this.model));
// }
//
// /*
// * Hide show layer 0 1 2(h) 3(h) 4(h) 5(h) 6 7 8 9(h)
// * ------------------------------------------------- Expand/Collapse
// * |<--------- CG1 ------->|
// */
// @Test
// public void isFirstVisibleWithAllColumnsHidden() throws Exception {
// this.underlyingLayer.hideColumnPositions(Arrays.asList(2, 3, 4, 5));
//
// assertFalse(ColumnGroupUtils.isFirstVisibleColumnIndexInGroup(2,
// this.expandCollapseLayer, this.underlyingLayer, this.model));
// assertFalse(ColumnGroupUtils.isFirstVisibleColumnIndexInGroup(3,
// this.expandCollapseLayer, this.underlyingLayer, this.model));
// assertFalse(ColumnGroupUtils.isFirstVisibleColumnIndexInGroup(4,
// this.expandCollapseLayer, this.underlyingLayer, this.model));
// assertFalse(ColumnGroupUtils.isFirstVisibleColumnIndexInGroup(5,
// this.expandCollapseLayer, this.underlyingLayer, this.model));
// }
//
// @Test
// public void isFirstVisibleWithColumnsReordered() throws Exception {
// // Original indexes : 0 1 2 3 4
// // Indexes reordered : 4 1 0 2 3
// ColumnReorderLayer reorderLayer = new ColumnReorderLayerFixture();
// this.underlyingLayer = new ColumnHideShowLayerFixture(reorderLayer);
// this.expandCollapseLayer = new ColumnGroupExpandCollapseLayer(
// this.underlyingLayer, this.model);
//
// this.model.clear();
// this.model.addColumnsIndexesToGroup(TEST_GROUP_NAME, 0, 2, 3);
//
// // Hide index 0
// this.underlyingLayer.hideColumnPositions(Arrays.asList(2));
//
// assertFalse(ColumnGroupUtils.isFirstVisibleColumnIndexInGroup(0,
// this.expandCollapseLayer, this.underlyingLayer, this.model));
// assertTrue(ColumnGroupUtils.isFirstVisibleColumnIndexInGroup(2,
// this.expandCollapseLayer, this.underlyingLayer, this.model));
// assertFalse(ColumnGroupUtils.isFirstVisibleColumnIndexInGroup(3,
// this.expandCollapseLayer, this.underlyingLayer, this.model));
// }
//
// /*
// * Hide show layer 0 1 2(h) 3(h) 4 5 6 7 8 9(h)
// * ------------------------------------------------- Expand/Collapse
// * |<------- CG1 ----->|
// */
// @Test
// public void isLastVisibleColumnIndexInGroup() throws Exception {
// this.underlyingLayer.hideColumnPositions(Arrays.asList(2, 3));
//
// assertFalse(ColumnGroupUtils.isLastVisibleColumnIndexInGroup(2,
// this.expandCollapseLayer, this.underlyingLayer, this.model));
// assertFalse(ColumnGroupUtils.isLastVisibleColumnIndexInGroup(3,
// this.expandCollapseLayer, this.underlyingLayer, this.model));
// assertFalse(ColumnGroupUtils.isLastVisibleColumnIndexInGroup(4,
// this.expandCollapseLayer, this.underlyingLayer, this.model));
// assertTrue(ColumnGroupUtils.isLastVisibleColumnIndexInGroup(5,
// this.expandCollapseLayer, this.underlyingLayer, this.model));
// }
//
// @Test
// public void getVisibleColumnIndexesToTheRight() throws Exception {
// collapse(2);
//
// List<Integer> indexes = ColumnGroupUtils.getVisibleIndexesToTheRight(2,
// this.expandCollapseLayer, this.underlyingLayer, this.model);
// assertEquals(0, indexes.size());
// }
//
// /*
// * Hide show layer 0 1 2 3 4 5 6 7 8 9(h)
// * -------------------------------------- Expand/Collapse |<--- CG1 -->|
// */
// @Test
// public void getColumnIndexByPosition() throws Exception {
// assertEquals(2, this.expandCollapseLayer.getColumnIndexByPosition(2));
// assertEquals(3, this.expandCollapseLayer.getColumnIndexByPosition(3));
// assertEquals(4, this.expandCollapseLayer.getColumnIndexByPosition(4));
// assertEquals(5, this.expandCollapseLayer.getColumnIndexByPosition(5));
// assertEquals(9, this.expandCollapseLayer.getColumnCount());
//
// collapse(3);
//
// assertEquals(6, this.expandCollapseLayer.getColumnCount());
//
// assertEquals(2, this.expandCollapseLayer.getColumnIndexByPosition(2));
// assertEquals(6, this.expandCollapseLayer.getColumnIndexByPosition(3));
// assertEquals(7, this.expandCollapseLayer.getColumnIndexByPosition(4));
// assertEquals(8, this.expandCollapseLayer.getColumnIndexByPosition(5));
//
// assertEquals("[2, 0]", this.expandCollapseLayer.getDataValueByPosition(2,
// 0));
// assertEquals("[6, 0]", this.expandCollapseLayer.getDataValueByPosition(3,
// 0));
// assertEquals("[7, 0]", this.expandCollapseLayer.getDataValueByPosition(4,
// 0));
// assertEquals("[8, 0]", this.expandCollapseLayer.getDataValueByPosition(5,
// 0));
// }
}