blob: 355e424a27e1b70a5e2087fe3160592cbff3382b [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2019 Dirk Fauth.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Dirk Fauth <dirk.fauth@googlemail.com> - initial API and implementation
******************************************************************************/
package org.eclipse.nebula.widgets.nattable.group.performance;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import org.eclipse.nebula.widgets.nattable.data.ExtendedReflectiveColumnPropertyAccessor;
import org.eclipse.nebula.widgets.nattable.data.IColumnPropertyAccessor;
import org.eclipse.nebula.widgets.nattable.data.IDataProvider;
import org.eclipse.nebula.widgets.nattable.data.ListDataProvider;
import org.eclipse.nebula.widgets.nattable.dataset.person.ExtendedPersonWithAddress;
import org.eclipse.nebula.widgets.nattable.dataset.person.PersonService;
import org.eclipse.nebula.widgets.nattable.grid.GridRegion;
import org.eclipse.nebula.widgets.nattable.grid.command.ClientAreaResizeCommand;
import org.eclipse.nebula.widgets.nattable.grid.data.DefaultColumnHeaderDataProvider;
import org.eclipse.nebula.widgets.nattable.grid.data.DefaultCornerDataProvider;
import org.eclipse.nebula.widgets.nattable.grid.data.DefaultRowHeaderDataProvider;
import org.eclipse.nebula.widgets.nattable.grid.layer.ColumnHeaderLayer;
import org.eclipse.nebula.widgets.nattable.grid.layer.CornerLayer;
import org.eclipse.nebula.widgets.nattable.grid.layer.DefaultColumnHeaderDataLayer;
import org.eclipse.nebula.widgets.nattable.grid.layer.DefaultRowHeaderDataLayer;
import org.eclipse.nebula.widgets.nattable.grid.layer.GridLayer;
import org.eclipse.nebula.widgets.nattable.grid.layer.RowHeaderLayer;
import org.eclipse.nebula.widgets.nattable.group.command.ColumnGroupExpandCollapseCommand;
import org.eclipse.nebula.widgets.nattable.group.performance.GroupModel.Group;
import org.eclipse.nebula.widgets.nattable.group.performance.command.ColumnGroupReorderCommand;
import org.eclipse.nebula.widgets.nattable.group.performance.command.ColumnGroupReorderEndCommand;
import org.eclipse.nebula.widgets.nattable.group.performance.command.ColumnGroupReorderStartCommand;
import org.eclipse.nebula.widgets.nattable.group.performance.config.GroupHeaderConfigLabels;
import org.eclipse.nebula.widgets.nattable.hideshow.ColumnHideShowLayer;
import org.eclipse.nebula.widgets.nattable.layer.AbstractDpiConverter;
import org.eclipse.nebula.widgets.nattable.layer.DataLayer;
import org.eclipse.nebula.widgets.nattable.layer.IDpiConverter;
import org.eclipse.nebula.widgets.nattable.layer.ILayer;
import org.eclipse.nebula.widgets.nattable.layer.LabelStack;
import org.eclipse.nebula.widgets.nattable.layer.cell.ILayerCell;
import org.eclipse.nebula.widgets.nattable.layer.command.ConfigureScalingCommand;
import org.eclipse.nebula.widgets.nattable.reorder.ColumnReorderLayer;
import org.eclipse.nebula.widgets.nattable.reorder.command.ColumnReorderCommand;
import org.eclipse.nebula.widgets.nattable.reorder.command.ColumnReorderEndCommand;
import org.eclipse.nebula.widgets.nattable.reorder.command.ColumnReorderStartCommand;
import org.eclipse.nebula.widgets.nattable.resize.command.MultiRowResizeCommand;
import org.eclipse.nebula.widgets.nattable.resize.command.RowResizeCommand;
import org.eclipse.nebula.widgets.nattable.selection.SelectionLayer;
import org.eclipse.nebula.widgets.nattable.util.IClientAreaProvider;
import org.eclipse.nebula.widgets.nattable.viewport.ViewportLayer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.junit.Before;
import org.junit.Test;
public class TwoLevelColumnGroupHeaderLayerTest {
GroupModel groupModel;
ColumnGroupHeaderLayer columnGroupHeaderLayer;
ColumnGroupExpandCollapseLayer columnGroupExpandCollapseLayer;
SelectionLayer selectionLayer;
GridLayer gridLayer;
@Before
public void setup() {
String[] propertyNames = {
"firstName", "lastName", "gender", "married",
"address.street", "address.housenumber", "address.postalCode", "address.city",
"age", "birthday", "money",
"description", "favouriteFood", "favouriteDrinks" };
// mapping from property to label, needed for column header labels
Map<String, String> propertyToLabelMap = new HashMap<>();
propertyToLabelMap.put("firstName", "Firstname");
propertyToLabelMap.put("lastName", "Lastname");
propertyToLabelMap.put("gender", "Gender");
propertyToLabelMap.put("married", "Married");
propertyToLabelMap.put("address.street", "Street");
propertyToLabelMap.put("address.housenumber", "Housenumber");
propertyToLabelMap.put("address.postalCode", "Postalcode");
propertyToLabelMap.put("address.city", "City");
propertyToLabelMap.put("age", "Age");
propertyToLabelMap.put("birthday", "Birthday");
propertyToLabelMap.put("money", "Money");
propertyToLabelMap.put("description", "Description");
propertyToLabelMap.put("favouriteFood", "Food");
propertyToLabelMap.put("favouriteDrinks", "Drinks");
IColumnPropertyAccessor<ExtendedPersonWithAddress> columnPropertyAccessor =
new ExtendedReflectiveColumnPropertyAccessor<>(propertyNames);
IDataProvider bodyDataProvider =
new ListDataProvider<>(
PersonService.getExtendedPersonsWithAddress(10),
columnPropertyAccessor);
DataLayer bodyDataLayer = new DataLayer(bodyDataProvider);
ColumnReorderLayer columnReorderLayer = new ColumnReorderLayer(bodyDataLayer);
ColumnHideShowLayer columnHideShowLayer = new ColumnHideShowLayer(columnReorderLayer);
this.columnGroupExpandCollapseLayer = new ColumnGroupExpandCollapseLayer(columnHideShowLayer);
this.selectionLayer = new SelectionLayer(this.columnGroupExpandCollapseLayer);
ViewportLayer viewportLayer = new ViewportLayer(this.selectionLayer);
// build the column header layer
IDataProvider columnHeaderDataProvider = new DefaultColumnHeaderDataProvider(propertyNames, propertyToLabelMap);
DataLayer columnHeaderDataLayer = new DefaultColumnHeaderDataLayer(columnHeaderDataProvider);
ColumnHeaderLayer columnHeaderLayer = new ColumnHeaderLayer(columnHeaderDataLayer, viewportLayer, this.selectionLayer);
this.columnGroupHeaderLayer = new ColumnGroupHeaderLayer(columnHeaderLayer, this.selectionLayer);
this.groupModel = this.columnGroupHeaderLayer.getGroupModel();
// configure the column groups
this.columnGroupHeaderLayer.addGroup("Person", 0, 4);
this.columnGroupHeaderLayer.addGroup("Address", 4, 4);
this.columnGroupHeaderLayer.addGroup("Facts", 8, 3);
this.columnGroupHeaderLayer.addGroup("Personal", 11, 3);
this.columnGroupHeaderLayer.addGroupingLevel();
this.columnGroupHeaderLayer.addGroup(1, "Test", 4, 7);
// build the row header layer
IDataProvider rowHeaderDataProvider = new DefaultRowHeaderDataProvider(bodyDataProvider);
DataLayer rowHeaderDataLayer = new DefaultRowHeaderDataLayer(rowHeaderDataProvider);
ILayer rowHeaderLayer = new RowHeaderLayer(rowHeaderDataLayer, viewportLayer, this.selectionLayer);
// build the corner layer
IDataProvider cornerDataProvider = new DefaultCornerDataProvider(columnHeaderDataProvider, rowHeaderDataProvider);
DataLayer cornerDataLayer = new DataLayer(cornerDataProvider);
ILayer cornerLayer = new CornerLayer(cornerDataLayer, rowHeaderLayer, this.columnGroupHeaderLayer);
// build the grid layer
this.gridLayer = new GridLayer(viewportLayer, this.columnGroupHeaderLayer, rowHeaderLayer, cornerLayer);
// configure the visible area, needed for tests in scrolled state
this.gridLayer.setClientAreaProvider(new IClientAreaProvider() {
@Override
public Rectangle getClientArea() {
// 10 columns + row header should be visible
return new Rectangle(0, 0, 1010, 250);
}
});
this.gridLayer.doCommand(new ClientAreaResizeCommand(new Shell(Display.getDefault(), SWT.V_SCROLL | SWT.H_SCROLL)));
assertEquals(2, this.columnGroupHeaderLayer.getLevelCount());
verifyCleanState();
}
private void verifyCleanState() {
assertEquals(11, this.gridLayer.getColumnCount());
assertEquals(13, this.gridLayer.getRowCount());
// nothing hidden below the SelectionLayer
assertEquals(14, this.selectionLayer.getColumnCount());
for (int column = 0; column < this.columnGroupHeaderLayer.getColumnCount(); column++) {
assertTrue(this.columnGroupHeaderLayer.isPartOfAGroup(0, column));
assertFalse(this.columnGroupHeaderLayer.isPartOfAnUnbreakableGroup(0, column));
}
for (int column = 0; column < this.columnGroupHeaderLayer.getColumnCount(); column++) {
assertTrue(this.columnGroupHeaderLayer.isPartOfAGroup(0, column));
assertFalse(this.columnGroupHeaderLayer.isPartOfAnUnbreakableGroup(0, column));
// level 2 test
if (column < 4 || column > 10) {
assertFalse(this.columnGroupHeaderLayer.isPartOfAGroup(1, column));
assertFalse(this.columnGroupHeaderLayer.isPartOfAnUnbreakableGroup(1, column));
} else {
assertTrue(this.columnGroupHeaderLayer.isPartOfAGroup(1, column));
assertFalse(this.columnGroupHeaderLayer.isPartOfAnUnbreakableGroup(1, column));
}
}
ILayerCell cell = this.columnGroupHeaderLayer.getCellByPosition(0, 0);
assertEquals(0, cell.getOriginColumnPosition());
assertEquals(0, cell.getColumnPosition());
assertEquals(0, cell.getColumnIndex());
assertEquals(4, cell.getColumnSpan());
assertEquals(0, cell.getOriginRowPosition());
assertEquals(0, cell.getRowPosition());
assertEquals(0, cell.getRowIndex());
assertEquals(2, cell.getRowSpan());
assertEquals("Person", cell.getDataValue());
assertEquals(0, cell.getBounds().x);
assertEquals(0, cell.getBounds().y);
assertEquals(400, cell.getBounds().width);
assertEquals(40, cell.getBounds().height);
cell = this.columnGroupHeaderLayer.getCellByPosition(4, 1);
assertEquals(4, cell.getOriginColumnPosition());
assertEquals(4, cell.getColumnPosition());
assertEquals(4, cell.getColumnIndex());
assertEquals(4, cell.getColumnSpan());
assertEquals(1, cell.getOriginRowPosition());
assertEquals(1, cell.getRowPosition());
assertEquals(1, cell.getRowIndex());
assertEquals(1, cell.getRowSpan());
assertEquals("Address", cell.getDataValue());
assertEquals(400, cell.getBounds().x);
assertEquals(20, cell.getBounds().y);
assertEquals(400, cell.getBounds().width);
assertEquals(20, cell.getBounds().height);
cell = this.columnGroupHeaderLayer.getCellByPosition(8, 1);
assertEquals(8, cell.getOriginColumnPosition());
assertEquals(8, cell.getColumnPosition());
assertEquals(8, cell.getColumnIndex());
assertEquals(3, cell.getColumnSpan());
assertEquals(1, cell.getOriginRowPosition());
assertEquals(1, cell.getRowPosition());
assertEquals(1, cell.getRowIndex());
assertEquals(1, cell.getRowSpan());
assertEquals("Facts", cell.getDataValue());
assertEquals(800, cell.getBounds().x);
assertEquals(20, cell.getBounds().y);
assertEquals(300, cell.getBounds().width);
assertEquals(20, cell.getBounds().height);
// this cell is not visible because of the client area
cell = this.columnGroupHeaderLayer.getCellByPosition(11, 0);
assertEquals(11, cell.getOriginColumnPosition());
assertEquals(11, cell.getColumnPosition());
assertEquals(11, cell.getColumnIndex());
assertEquals(3, cell.getColumnSpan());
assertEquals(0, cell.getOriginRowPosition());
assertEquals(0, cell.getRowPosition());
assertEquals(0, cell.getRowIndex());
assertEquals(2, cell.getRowSpan());
assertEquals("Personal", cell.getDataValue());
assertEquals(-1, cell.getBounds().x);
assertEquals(0, cell.getBounds().y);
assertEquals(0, cell.getBounds().width);
assertEquals(40, cell.getBounds().height);
cell = this.columnGroupHeaderLayer.getCellByPosition(11, 1);
assertEquals(11, cell.getOriginColumnPosition());
assertEquals(11, cell.getColumnPosition());
assertEquals(11, cell.getColumnIndex());
assertEquals(3, cell.getColumnSpan());
assertEquals(0, cell.getOriginRowPosition());
assertEquals(1, cell.getRowPosition());
assertEquals(1, cell.getRowIndex());
assertEquals(2, cell.getRowSpan());
assertEquals("Personal", cell.getDataValue());
assertEquals(-1, cell.getBounds().x);
assertEquals(0, cell.getBounds().y);
assertEquals(0, cell.getBounds().width);
assertEquals(40, cell.getBounds().height);
// second level column group
cell = this.columnGroupHeaderLayer.getCellByPosition(4, 0);
assertEquals(4, cell.getOriginColumnPosition());
assertEquals(4, cell.getColumnPosition());
assertEquals(4, cell.getColumnIndex());
assertEquals(7, cell.getColumnSpan());
assertEquals(0, cell.getOriginRowPosition());
assertEquals(0, cell.getRowPosition());
assertEquals(0, cell.getRowIndex());
assertEquals(1, cell.getRowSpan());
assertEquals("Test", cell.getDataValue());
assertEquals(400, cell.getBounds().x);
assertEquals(0, cell.getBounds().y);
assertEquals(700, cell.getBounds().width);
assertEquals(20, cell.getBounds().height);
cell = this.columnGroupHeaderLayer.getCellByPosition(8, 0);
assertEquals(4, cell.getOriginColumnPosition());
assertEquals(8, cell.getColumnPosition());
assertEquals(8, cell.getColumnIndex());
assertEquals(7, cell.getColumnSpan());
assertEquals(0, cell.getOriginRowPosition());
assertEquals(0, cell.getRowPosition());
assertEquals(0, cell.getRowIndex());
assertEquals(1, cell.getRowSpan());
assertEquals("Test", cell.getDataValue());
assertEquals(400, cell.getBounds().x);
assertEquals(0, cell.getBounds().y);
assertEquals(700, cell.getBounds().width);
assertEquals(20, cell.getBounds().height);
Group group1 = this.columnGroupHeaderLayer.getGroupModel(0).getGroupByPosition(0);
assertEquals(0, group1.getStartIndex());
assertEquals(0, group1.getVisibleStartIndex());
assertEquals(0, group1.getVisibleStartPosition());
assertEquals(4, group1.getOriginalSpan());
assertEquals(4, group1.getVisibleSpan());
Collection<Integer> members = group1.getMembers();
assertEquals(4, members.size());
assertTrue(members.contains(0));
assertTrue(members.contains(1));
assertTrue(members.contains(2));
assertTrue(members.contains(3));
Group group2 = this.columnGroupHeaderLayer.getGroupModel(0).getGroupByPosition(4);
assertEquals(4, group2.getStartIndex());
assertEquals(4, group2.getVisibleStartIndex());
assertEquals(4, group2.getVisibleStartPosition());
assertEquals(4, group2.getOriginalSpan());
assertEquals(4, group2.getVisibleSpan());
members = group2.getMembers();
assertEquals(4, members.size());
assertTrue(members.contains(4));
assertTrue(members.contains(5));
assertTrue(members.contains(6));
assertTrue(members.contains(7));
Group group3 = this.columnGroupHeaderLayer.getGroupModel(0).getGroupByPosition(8);
assertEquals(8, group3.getStartIndex());
assertEquals(8, group3.getVisibleStartIndex());
assertEquals(8, group3.getVisibleStartPosition());
assertEquals(3, group3.getOriginalSpan());
assertEquals(3, group3.getVisibleSpan());
members = group3.getMembers();
assertEquals(3, members.size());
assertTrue(members.contains(8));
assertTrue(members.contains(9));
assertTrue(members.contains(10));
Group group4 = this.columnGroupHeaderLayer.getGroupModel(0).getGroupByPosition(11);
assertEquals(11, group4.getStartIndex());
assertEquals(11, group4.getVisibleStartIndex());
assertEquals(11, group4.getVisibleStartPosition());
assertEquals(3, group4.getOriginalSpan());
assertEquals(3, group4.getVisibleSpan());
members = group4.getMembers();
assertEquals(3, members.size());
assertTrue(members.contains(11));
assertTrue(members.contains(12));
assertTrue(members.contains(13));
Group group11 = this.columnGroupHeaderLayer.getGroupModel(1).getGroupByPosition(4);
assertEquals(4, group11.getStartIndex());
assertEquals(4, group11.getVisibleStartIndex());
assertEquals(4, group11.getVisibleStartPosition());
assertEquals(7, group11.getOriginalSpan());
assertEquals(7, group11.getVisibleSpan());
members = group11.getMembers();
assertEquals(7, members.size());
assertTrue(members.contains(4));
assertTrue(members.contains(5));
assertTrue(members.contains(6));
assertTrue(members.contains(7));
assertTrue(members.contains(8));
assertTrue(members.contains(9));
assertTrue(members.contains(10));
}
@Test
public void shouldRenderColumnGroups() {
assertEquals(11, this.gridLayer.getColumnCount());
assertEquals(13, this.gridLayer.getRowCount());
// increase the client area to show all columns
this.gridLayer.setClientAreaProvider(new IClientAreaProvider() {
@Override
public Rectangle getClientArea() {
return new Rectangle(0, 0, 1600, 250);
}
});
this.gridLayer.doCommand(new ClientAreaResizeCommand(new Shell(Display.getDefault(), SWT.V_SCROLL | SWT.H_SCROLL)));
assertEquals(15, this.gridLayer.getColumnCount());
ILayerCell cell = this.columnGroupHeaderLayer.getCellByPosition(0, 0);
assertEquals(0, cell.getOriginColumnPosition());
assertEquals(0, cell.getColumnPosition());
assertEquals(0, cell.getColumnIndex());
assertEquals(4, cell.getColumnSpan());
assertEquals(0, cell.getOriginRowPosition());
assertEquals(0, cell.getRowPosition());
assertEquals(0, cell.getRowIndex());
assertEquals(2, cell.getRowSpan());
assertEquals("Person", cell.getDataValue());
assertEquals(0, cell.getBounds().x);
assertEquals(0, cell.getBounds().y);
assertEquals(400, cell.getBounds().width);
assertEquals(40, cell.getBounds().height);
cell = this.columnGroupHeaderLayer.getCellByPosition(4, 1);
assertEquals(4, cell.getOriginColumnPosition());
assertEquals(4, cell.getColumnPosition());
assertEquals(4, cell.getColumnIndex());
assertEquals(4, cell.getColumnSpan());
assertEquals(1, cell.getOriginRowPosition());
assertEquals(1, cell.getRowPosition());
assertEquals(1, cell.getRowIndex());
assertEquals(1, cell.getRowSpan());
assertEquals("Address", cell.getDataValue());
assertEquals(400, cell.getBounds().x);
assertEquals(20, cell.getBounds().y);
assertEquals(400, cell.getBounds().width);
assertEquals(20, cell.getBounds().height);
cell = this.columnGroupHeaderLayer.getCellByPosition(8, 1);
assertEquals(8, cell.getOriginColumnPosition());
assertEquals(8, cell.getColumnPosition());
assertEquals(8, cell.getColumnIndex());
assertEquals(3, cell.getColumnSpan());
assertEquals(1, cell.getOriginRowPosition());
assertEquals(1, cell.getRowPosition());
assertEquals(1, cell.getRowIndex());
assertEquals(1, cell.getRowSpan());
assertEquals("Facts", cell.getDataValue());
assertEquals(800, cell.getBounds().x);
assertEquals(20, cell.getBounds().y);
assertEquals(300, cell.getBounds().width);
assertEquals(20, cell.getBounds().height);
cell = this.columnGroupHeaderLayer.getCellByPosition(11, 0);
assertEquals(11, cell.getOriginColumnPosition());
assertEquals(11, cell.getColumnPosition());
assertEquals(11, cell.getColumnIndex());
assertEquals(3, cell.getColumnSpan());
assertEquals(0, cell.getOriginRowPosition());
assertEquals(0, cell.getRowPosition());
assertEquals(0, cell.getRowIndex());
assertEquals(2, cell.getRowSpan());
assertEquals("Personal", cell.getDataValue());
assertEquals(1100, cell.getBounds().x);
assertEquals(0, cell.getBounds().y);
assertEquals(300, cell.getBounds().width);
assertEquals(40, cell.getBounds().height);
cell = this.columnGroupHeaderLayer.getCellByPosition(11, 1);
assertEquals(11, cell.getOriginColumnPosition());
assertEquals(11, cell.getColumnPosition());
assertEquals(11, cell.getColumnIndex());
assertEquals(3, cell.getColumnSpan());
assertEquals(0, cell.getOriginRowPosition());
assertEquals(1, cell.getRowPosition());
assertEquals(1, cell.getRowIndex());
assertEquals(2, cell.getRowSpan());
assertEquals("Personal", cell.getDataValue());
assertEquals(1100, cell.getBounds().x);
assertEquals(0, cell.getBounds().y);
assertEquals(300, cell.getBounds().width);
assertEquals(40, cell.getBounds().height);
// second level column group
cell = this.columnGroupHeaderLayer.getCellByPosition(4, 0);
assertEquals(4, cell.getOriginColumnPosition());
assertEquals(4, cell.getColumnPosition());
assertEquals(4, cell.getColumnIndex());
assertEquals(7, cell.getColumnSpan());
assertEquals(0, cell.getOriginRowPosition());
assertEquals(0, cell.getRowPosition());
assertEquals(0, cell.getRowIndex());
assertEquals(1, cell.getRowSpan());
assertEquals("Test", cell.getDataValue());
assertEquals(400, cell.getBounds().x);
assertEquals(0, cell.getBounds().y);
assertEquals(700, cell.getBounds().width);
assertEquals(20, cell.getBounds().height);
cell = this.columnGroupHeaderLayer.getCellByPosition(8, 0);
assertEquals(4, cell.getOriginColumnPosition());
assertEquals(8, cell.getColumnPosition());
assertEquals(8, cell.getColumnIndex());
assertEquals(7, cell.getColumnSpan());
assertEquals(0, cell.getOriginRowPosition());
assertEquals(0, cell.getRowPosition());
assertEquals(0, cell.getRowIndex());
assertEquals(1, cell.getRowSpan());
assertEquals("Test", cell.getDataValue());
assertEquals(400, cell.getBounds().x);
assertEquals(0, cell.getBounds().y);
assertEquals(700, cell.getBounds().width);
assertEquals(20, cell.getBounds().height);
}
@Test
public void shouldConfigureReorderSupported() {
assertTrue(this.columnGroupHeaderLayer.isReorderSupportedOnLevel(0));
assertTrue(this.columnGroupHeaderLayer.isReorderSupportedOnLevel(1));
// should even return true for levels that are not configured
assertTrue(this.columnGroupHeaderLayer.isReorderSupportedOnLevel(2));
this.columnGroupHeaderLayer.setReorderSupportedOnLevel(1, false);
assertTrue(this.columnGroupHeaderLayer.isReorderSupportedOnLevel(0));
assertFalse(this.columnGroupHeaderLayer.isReorderSupportedOnLevel(1));
assertTrue(this.columnGroupHeaderLayer.isReorderSupportedOnLevel(2));
// do not configure a level that is not available
this.columnGroupHeaderLayer.setReorderSupportedOnLevel(2, false);
assertTrue(this.columnGroupHeaderLayer.isReorderSupportedOnLevel(2));
}
@Test
public void shouldReorderLevel1GroupToStart() {
// try to reorder the Test group in level 1 to start
this.gridLayer.doCommand(new ColumnGroupReorderCommand(this.gridLayer, 1, 5, 1));
ILayerCell cell = this.columnGroupHeaderLayer.getCellByPosition(0, 1);
assertEquals(0, cell.getOriginColumnPosition());
assertEquals(0, cell.getColumnPosition());
assertEquals(4, cell.getColumnIndex());
assertEquals(4, cell.getColumnSpan());
assertEquals(1, cell.getOriginRowPosition());
assertEquals(1, cell.getRowPosition());
assertEquals(1, cell.getRowIndex());
assertEquals(1, cell.getRowSpan());
assertEquals("Address", cell.getDataValue());
assertEquals(0, cell.getBounds().x);
assertEquals(20, cell.getBounds().y);
assertEquals(400, cell.getBounds().width);
assertEquals(20, cell.getBounds().height);
cell = this.columnGroupHeaderLayer.getCellByPosition(4, 1);
assertEquals(4, cell.getOriginColumnPosition());
assertEquals(4, cell.getColumnPosition());
assertEquals(8, cell.getColumnIndex());
assertEquals(3, cell.getColumnSpan());
assertEquals(1, cell.getOriginRowPosition());
assertEquals(1, cell.getRowPosition());
assertEquals(1, cell.getRowIndex());
assertEquals(1, cell.getRowSpan());
assertEquals("Facts", cell.getDataValue());
assertEquals(400, cell.getBounds().x);
assertEquals(20, cell.getBounds().y);
assertEquals(300, cell.getBounds().width);
assertEquals(20, cell.getBounds().height);
cell = this.columnGroupHeaderLayer.getCellByPosition(7, 0);
assertEquals(7, cell.getOriginColumnPosition());
assertEquals(7, cell.getColumnPosition());
assertEquals(0, cell.getColumnIndex());
assertEquals(4, cell.getColumnSpan());
assertEquals(0, cell.getOriginRowPosition());
assertEquals(0, cell.getRowPosition());
assertEquals(0, cell.getRowIndex());
assertEquals(2, cell.getRowSpan());
assertEquals("Person", cell.getDataValue());
assertEquals(700, cell.getBounds().x);
assertEquals(0, cell.getBounds().y);
assertEquals(400, cell.getBounds().width);
assertEquals(40, cell.getBounds().height);
// second level column group
cell = this.columnGroupHeaderLayer.getCellByPosition(0, 0);
assertEquals(0, cell.getOriginColumnPosition());
assertEquals(0, cell.getColumnPosition());
assertEquals(4, cell.getColumnIndex());
assertEquals(7, cell.getColumnSpan());
assertEquals(0, cell.getOriginRowPosition());
assertEquals(0, cell.getRowPosition());
assertEquals(0, cell.getRowIndex());
assertEquals(1, cell.getRowSpan());
assertEquals("Test", cell.getDataValue());
assertEquals(0, cell.getBounds().x);
assertEquals(0, cell.getBounds().y);
assertEquals(700, cell.getBounds().width);
assertEquals(20, cell.getBounds().height);
cell = this.columnGroupHeaderLayer.getCellByPosition(4, 0);
assertEquals(0, cell.getOriginColumnPosition());
assertEquals(4, cell.getColumnPosition());
assertEquals(8, cell.getColumnIndex());
assertEquals(7, cell.getColumnSpan());
assertEquals(0, cell.getOriginRowPosition());
assertEquals(0, cell.getRowPosition());
assertEquals(0, cell.getRowIndex());
assertEquals(1, cell.getRowSpan());
assertEquals("Test", cell.getDataValue());
assertEquals(0, cell.getBounds().x);
assertEquals(0, cell.getBounds().y);
assertEquals(700, cell.getBounds().width);
assertEquals(20, cell.getBounds().height);
Group group1 = this.columnGroupHeaderLayer.getGroupModel(0).getGroupByPosition(0);
assertEquals(4, group1.getStartIndex());
assertEquals(4, group1.getVisibleStartIndex());
assertEquals(0, group1.getVisibleStartPosition());
assertEquals(4, group1.getOriginalSpan());
assertEquals(4, group1.getVisibleSpan());
Collection<Integer> members = group1.getMembers();
assertEquals(4, members.size());
assertTrue(members.contains(4));
assertTrue(members.contains(5));
assertTrue(members.contains(6));
assertTrue(members.contains(7));
Group group2 = this.columnGroupHeaderLayer.getGroupModel(0).getGroupByPosition(4);
assertEquals(8, group2.getStartIndex());
assertEquals(8, group2.getVisibleStartIndex());
assertEquals(4, group2.getVisibleStartPosition());
assertEquals(3, group2.getOriginalSpan());
assertEquals(3, group2.getVisibleSpan());
members = group2.getMembers();
assertEquals(3, members.size());
assertTrue(members.contains(8));
assertTrue(members.contains(9));
assertTrue(members.contains(10));
Group group3 = this.columnGroupHeaderLayer.getGroupModel(0).getGroupByPosition(7);
assertEquals(0, group3.getStartIndex());
assertEquals(0, group3.getVisibleStartIndex());
assertEquals(7, group3.getVisibleStartPosition());
assertEquals(4, group3.getOriginalSpan());
assertEquals(4, group3.getVisibleSpan());
members = group3.getMembers();
assertEquals(4, members.size());
assertTrue(members.contains(0));
assertTrue(members.contains(1));
assertTrue(members.contains(2));
assertTrue(members.contains(3));
Group group4 = this.columnGroupHeaderLayer.getGroupModel(0).getGroupByPosition(11);
assertEquals(11, group4.getStartIndex());
assertEquals(11, group4.getVisibleStartIndex());
assertEquals(11, group4.getVisibleStartPosition());
assertEquals(3, group4.getOriginalSpan());
assertEquals(3, group4.getVisibleSpan());
members = group4.getMembers();
assertEquals(3, members.size());
assertTrue(members.contains(11));
assertTrue(members.contains(12));
assertTrue(members.contains(13));
Group group11 = this.columnGroupHeaderLayer.getGroupModel(1).getGroupByPosition(0);
assertEquals(4, group11.getStartIndex());
assertEquals(4, group11.getVisibleStartIndex());
assertEquals(0, group11.getVisibleStartPosition());
assertEquals(7, group11.getOriginalSpan());
assertEquals(7, group11.getVisibleSpan());
members = group11.getMembers();
assertEquals(7, members.size());
assertTrue(members.contains(4));
assertTrue(members.contains(5));
assertTrue(members.contains(6));
assertTrue(members.contains(7));
assertTrue(members.contains(8));
assertTrue(members.contains(9));
assertTrue(members.contains(10));
}
@Test
public void shouldDragReorderLevel1GroupToStart() {
// try to reorder the Test group in level 1 to start
this.gridLayer.doCommand(new ColumnGroupReorderStartCommand(this.gridLayer, 1, 5));
this.gridLayer.doCommand(new ColumnGroupReorderEndCommand(this.gridLayer, 1, 1));
ILayerCell cell = this.columnGroupHeaderLayer.getCellByPosition(0, 1);
assertEquals(0, cell.getOriginColumnPosition());
assertEquals(0, cell.getColumnPosition());
assertEquals(4, cell.getColumnIndex());
assertEquals(4, cell.getColumnSpan());
assertEquals(1, cell.getOriginRowPosition());
assertEquals(1, cell.getRowPosition());
assertEquals(1, cell.getRowIndex());
assertEquals(1, cell.getRowSpan());
assertEquals("Address", cell.getDataValue());
assertEquals(0, cell.getBounds().x);
assertEquals(20, cell.getBounds().y);
assertEquals(400, cell.getBounds().width);
assertEquals(20, cell.getBounds().height);
cell = this.columnGroupHeaderLayer.getCellByPosition(4, 1);
assertEquals(4, cell.getOriginColumnPosition());
assertEquals(4, cell.getColumnPosition());
assertEquals(8, cell.getColumnIndex());
assertEquals(3, cell.getColumnSpan());
assertEquals(1, cell.getOriginRowPosition());
assertEquals(1, cell.getRowPosition());
assertEquals(1, cell.getRowIndex());
assertEquals(1, cell.getRowSpan());
assertEquals("Facts", cell.getDataValue());
assertEquals(400, cell.getBounds().x);
assertEquals(20, cell.getBounds().y);
assertEquals(300, cell.getBounds().width);
assertEquals(20, cell.getBounds().height);
cell = this.columnGroupHeaderLayer.getCellByPosition(7, 0);
assertEquals(7, cell.getOriginColumnPosition());
assertEquals(7, cell.getColumnPosition());
assertEquals(0, cell.getColumnIndex());
assertEquals(4, cell.getColumnSpan());
assertEquals(0, cell.getOriginRowPosition());
assertEquals(0, cell.getRowPosition());
assertEquals(0, cell.getRowIndex());
assertEquals(2, cell.getRowSpan());
assertEquals("Person", cell.getDataValue());
assertEquals(700, cell.getBounds().x);
assertEquals(0, cell.getBounds().y);
assertEquals(400, cell.getBounds().width);
assertEquals(40, cell.getBounds().height);
// second level column group
cell = this.columnGroupHeaderLayer.getCellByPosition(0, 0);
assertEquals(0, cell.getOriginColumnPosition());
assertEquals(0, cell.getColumnPosition());
assertEquals(4, cell.getColumnIndex());
assertEquals(7, cell.getColumnSpan());
assertEquals(0, cell.getOriginRowPosition());
assertEquals(0, cell.getRowPosition());
assertEquals(0, cell.getRowIndex());
assertEquals(1, cell.getRowSpan());
assertEquals("Test", cell.getDataValue());
assertEquals(0, cell.getBounds().x);
assertEquals(0, cell.getBounds().y);
assertEquals(700, cell.getBounds().width);
assertEquals(20, cell.getBounds().height);
cell = this.columnGroupHeaderLayer.getCellByPosition(4, 0);
assertEquals(0, cell.getOriginColumnPosition());
assertEquals(4, cell.getColumnPosition());
assertEquals(8, cell.getColumnIndex());
assertEquals(7, cell.getColumnSpan());
assertEquals(0, cell.getOriginRowPosition());
assertEquals(0, cell.getRowPosition());
assertEquals(0, cell.getRowIndex());
assertEquals(1, cell.getRowSpan());
assertEquals("Test", cell.getDataValue());
assertEquals(0, cell.getBounds().x);
assertEquals(0, cell.getBounds().y);
assertEquals(700, cell.getBounds().width);
assertEquals(20, cell.getBounds().height);
Group group1 = this.columnGroupHeaderLayer.getGroupModel(0).getGroupByPosition(0);
assertEquals(4, group1.getStartIndex());
assertEquals(4, group1.getVisibleStartIndex());
assertEquals(0, group1.getVisibleStartPosition());
assertEquals(4, group1.getOriginalSpan());
assertEquals(4, group1.getVisibleSpan());
Collection<Integer> members = group1.getMembers();
assertEquals(4, members.size());
assertTrue(members.contains(4));
assertTrue(members.contains(5));
assertTrue(members.contains(6));
assertTrue(members.contains(7));
Group group2 = this.columnGroupHeaderLayer.getGroupModel(0).getGroupByPosition(4);
assertEquals(8, group2.getStartIndex());
assertEquals(8, group2.getVisibleStartIndex());
assertEquals(4, group2.getVisibleStartPosition());
assertEquals(3, group2.getOriginalSpan());
assertEquals(3, group2.getVisibleSpan());
members = group2.getMembers();
assertEquals(3, members.size());
assertTrue(members.contains(8));
assertTrue(members.contains(9));
assertTrue(members.contains(10));
Group group3 = this.columnGroupHeaderLayer.getGroupModel(0).getGroupByPosition(7);
assertEquals(0, group3.getStartIndex());
assertEquals(0, group3.getVisibleStartIndex());
assertEquals(7, group3.getVisibleStartPosition());
assertEquals(4, group3.getOriginalSpan());
assertEquals(4, group3.getVisibleSpan());
members = group3.getMembers();
assertEquals(4, members.size());
assertTrue(members.contains(0));
assertTrue(members.contains(1));
assertTrue(members.contains(2));
assertTrue(members.contains(3));
Group group4 = this.columnGroupHeaderLayer.getGroupModel(0).getGroupByPosition(11);
assertEquals(11, group4.getStartIndex());
assertEquals(11, group4.getVisibleStartIndex());
assertEquals(11, group4.getVisibleStartPosition());
assertEquals(3, group4.getOriginalSpan());
assertEquals(3, group4.getVisibleSpan());
members = group4.getMembers();
assertEquals(3, members.size());
assertTrue(members.contains(11));
assertTrue(members.contains(12));
assertTrue(members.contains(13));
Group group11 = this.columnGroupHeaderLayer.getGroupModel(1).getGroupByPosition(0);
assertEquals(4, group11.getStartIndex());
assertEquals(4, group11.getVisibleStartIndex());
assertEquals(0, group11.getVisibleStartPosition());
assertEquals(7, group11.getOriginalSpan());
assertEquals(7, group11.getVisibleSpan());
members = group11.getMembers();
assertEquals(7, members.size());
assertTrue(members.contains(4));
assertTrue(members.contains(5));
assertTrue(members.contains(6));
assertTrue(members.contains(7));
assertTrue(members.contains(8));
assertTrue(members.contains(9));
assertTrue(members.contains(10));
}
@Test
public void shouldReorderLevel1GroupToEnd() {
// increase the client area to show all columns
this.gridLayer.setClientAreaProvider(new IClientAreaProvider() {
@Override
public Rectangle getClientArea() {
return new Rectangle(0, 0, 1600, 250);
}
});
this.gridLayer.doCommand(new ClientAreaResizeCommand(new Shell(Display.getDefault(), SWT.V_SCROLL | SWT.H_SCROLL)));
// try to reorder the Test group in level 1 to end
this.gridLayer.doCommand(new ColumnGroupReorderCommand(this.gridLayer, 1, 5, 15));
ILayerCell cell = this.columnGroupHeaderLayer.getCellByPosition(0, 0);
assertEquals(0, cell.getOriginColumnPosition());
assertEquals(0, cell.getColumnPosition());
assertEquals(0, cell.getColumnIndex());
assertEquals(4, cell.getColumnSpan());
assertEquals(0, cell.getOriginRowPosition());
assertEquals(0, cell.getRowPosition());
assertEquals(0, cell.getRowIndex());
assertEquals(2, cell.getRowSpan());
assertEquals("Person", cell.getDataValue());
assertEquals(0, cell.getBounds().x);
assertEquals(0, cell.getBounds().y);
assertEquals(400, cell.getBounds().width);
assertEquals(40, cell.getBounds().height);
cell = this.columnGroupHeaderLayer.getCellByPosition(4, 0);
assertEquals(4, cell.getOriginColumnPosition());
assertEquals(4, cell.getColumnPosition());
assertEquals(11, cell.getColumnIndex());
assertEquals(3, cell.getColumnSpan());
assertEquals(0, cell.getOriginRowPosition());
assertEquals(0, cell.getRowPosition());
assertEquals(0, cell.getRowIndex());
assertEquals(2, cell.getRowSpan());
assertEquals("Personal", cell.getDataValue());
assertEquals(400, cell.getBounds().x);
assertEquals(0, cell.getBounds().y);
assertEquals(300, cell.getBounds().width);
assertEquals(40, cell.getBounds().height);
cell = this.columnGroupHeaderLayer.getCellByPosition(7, 1);
assertEquals(7, cell.getOriginColumnPosition());
assertEquals(7, cell.getColumnPosition());
assertEquals(4, cell.getColumnIndex());
assertEquals(4, cell.getColumnSpan());
assertEquals(1, cell.getOriginRowPosition());
assertEquals(1, cell.getRowPosition());
assertEquals(1, cell.getRowIndex());
assertEquals(1, cell.getRowSpan());
assertEquals("Address", cell.getDataValue());
assertEquals(700, cell.getBounds().x);
assertEquals(20, cell.getBounds().y);
assertEquals(400, cell.getBounds().width);
assertEquals(20, cell.getBounds().height);
cell = this.columnGroupHeaderLayer.getCellByPosition(11, 1);
assertEquals(11, cell.getOriginColumnPosition());
assertEquals(11, cell.getColumnPosition());
assertEquals(8, cell.getColumnIndex());
assertEquals(3, cell.getColumnSpan());
assertEquals(1, cell.getOriginRowPosition());
assertEquals(1, cell.getRowPosition());
assertEquals(1, cell.getRowIndex());
assertEquals(1, cell.getRowSpan());
assertEquals("Facts", cell.getDataValue());
assertEquals(1100, cell.getBounds().x);
assertEquals(20, cell.getBounds().y);
assertEquals(300, cell.getBounds().width);
assertEquals(20, cell.getBounds().height);
// second level column group
cell = this.columnGroupHeaderLayer.getCellByPosition(7, 0);
assertEquals(7, cell.getOriginColumnPosition());
assertEquals(7, cell.getColumnPosition());
assertEquals(4, cell.getColumnIndex());
assertEquals(7, cell.getColumnSpan());
assertEquals(0, cell.getOriginRowPosition());
assertEquals(0, cell.getRowPosition());
assertEquals(0, cell.getRowIndex());
assertEquals(1, cell.getRowSpan());
assertEquals("Test", cell.getDataValue());
assertEquals(700, cell.getBounds().x);
assertEquals(0, cell.getBounds().y);
assertEquals(700, cell.getBounds().width);
assertEquals(20, cell.getBounds().height);
cell = this.columnGroupHeaderLayer.getCellByPosition(11, 0);
assertEquals(7, cell.getOriginColumnPosition());
assertEquals(11, cell.getColumnPosition());
assertEquals(8, cell.getColumnIndex());
assertEquals(7, cell.getColumnSpan());
assertEquals(0, cell.getOriginRowPosition());
assertEquals(0, cell.getRowPosition());
assertEquals(0, cell.getRowIndex());
assertEquals(1, cell.getRowSpan());
assertEquals("Test", cell.getDataValue());
assertEquals(700, cell.getBounds().x);
assertEquals(0, cell.getBounds().y);
assertEquals(700, cell.getBounds().width);
assertEquals(20, cell.getBounds().height);
Group group1 = this.columnGroupHeaderLayer.getGroupModel(0).getGroupByPosition(0);
assertEquals(0, group1.getStartIndex());
assertEquals(0, group1.getVisibleStartIndex());
assertEquals(0, group1.getVisibleStartPosition());
assertEquals(4, group1.getOriginalSpan());
assertEquals(4, group1.getVisibleSpan());
Collection<Integer> members = group1.getMembers();
assertEquals(4, members.size());
assertTrue(members.contains(0));
assertTrue(members.contains(1));
assertTrue(members.contains(2));
assertTrue(members.contains(3));
Group group2 = this.columnGroupHeaderLayer.getGroupModel(0).getGroupByPosition(4);
assertEquals(11, group2.getStartIndex());
assertEquals(11, group2.getVisibleStartIndex());
assertEquals(4, group2.getVisibleStartPosition());
assertEquals(3, group2.getOriginalSpan());
assertEquals(3, group2.getVisibleSpan());
members = group2.getMembers();
assertEquals(3, members.size());
assertTrue(members.contains(11));
assertTrue(members.contains(12));
assertTrue(members.contains(13));
Group group3 = this.columnGroupHeaderLayer.getGroupModel(0).getGroupByPosition(7);
assertEquals(4, group3.getStartIndex());
assertEquals(4, group3.getVisibleStartIndex());
assertEquals(7, group3.getVisibleStartPosition());
assertEquals(4, group3.getOriginalSpan());
assertEquals(4, group3.getVisibleSpan());
members = group3.getMembers();
assertEquals(4, members.size());
assertTrue(members.contains(4));
assertTrue(members.contains(5));
assertTrue(members.contains(6));
assertTrue(members.contains(7));
Group group4 = this.columnGroupHeaderLayer.getGroupModel(0).getGroupByPosition(11);
assertEquals(8, group4.getStartIndex());
assertEquals(8, group4.getVisibleStartIndex());
assertEquals(11, group4.getVisibleStartPosition());
assertEquals(3, group4.getOriginalSpan());
assertEquals(3, group4.getVisibleSpan());
members = group4.getMembers();
assertEquals(3, members.size());
assertTrue(members.contains(8));
assertTrue(members.contains(9));
assertTrue(members.contains(10));
Group group11 = this.columnGroupHeaderLayer.getGroupModel(1).getGroupByPosition(7);
assertEquals(4, group11.getStartIndex());
assertEquals(4, group11.getVisibleStartIndex());
assertEquals(7, group11.getVisibleStartPosition());
assertEquals(7, group11.getOriginalSpan());
assertEquals(7, group11.getVisibleSpan());
members = group11.getMembers();
assertEquals(7, members.size());
assertTrue(members.contains(4));
assertTrue(members.contains(5));
assertTrue(members.contains(6));
assertTrue(members.contains(7));
assertTrue(members.contains(8));
assertTrue(members.contains(9));
assertTrue(members.contains(10));
}
@Test
public void shouldDragReorderLevel1GroupToEnd() {
// increase the client area to show all columns
this.gridLayer.setClientAreaProvider(new IClientAreaProvider() {
@Override
public Rectangle getClientArea() {
return new Rectangle(0, 0, 1600, 250);
}
});
this.gridLayer.doCommand(new ClientAreaResizeCommand(new Shell(Display.getDefault(), SWT.V_SCROLL | SWT.H_SCROLL)));
// try to reorder the Test group in level 1 to end
this.gridLayer.doCommand(new ColumnGroupReorderStartCommand(this.gridLayer, 1, 5));
this.gridLayer.doCommand(new ColumnGroupReorderEndCommand(this.gridLayer, 1, 15));
ILayerCell cell = this.columnGroupHeaderLayer.getCellByPosition(0, 0);
assertEquals(0, cell.getOriginColumnPosition());
assertEquals(0, cell.getColumnPosition());
assertEquals(0, cell.getColumnIndex());
assertEquals(4, cell.getColumnSpan());
assertEquals(0, cell.getOriginRowPosition());
assertEquals(0, cell.getRowPosition());
assertEquals(0, cell.getRowIndex());
assertEquals(2, cell.getRowSpan());
assertEquals("Person", cell.getDataValue());
assertEquals(0, cell.getBounds().x);
assertEquals(0, cell.getBounds().y);
assertEquals(400, cell.getBounds().width);
assertEquals(40, cell.getBounds().height);
cell = this.columnGroupHeaderLayer.getCellByPosition(4, 0);
assertEquals(4, cell.getOriginColumnPosition());
assertEquals(4, cell.getColumnPosition());
assertEquals(11, cell.getColumnIndex());
assertEquals(3, cell.getColumnSpan());
assertEquals(0, cell.getOriginRowPosition());
assertEquals(0, cell.getRowPosition());
assertEquals(0, cell.getRowIndex());
assertEquals(2, cell.getRowSpan());
assertEquals("Personal", cell.getDataValue());
assertEquals(400, cell.getBounds().x);
assertEquals(0, cell.getBounds().y);
assertEquals(300, cell.getBounds().width);
assertEquals(40, cell.getBounds().height);
cell = this.columnGroupHeaderLayer.getCellByPosition(7, 1);
assertEquals(7, cell.getOriginColumnPosition());
assertEquals(7, cell.getColumnPosition());
assertEquals(4, cell.getColumnIndex());
assertEquals(4, cell.getColumnSpan());
assertEquals(1, cell.getOriginRowPosition());
assertEquals(1, cell.getRowPosition());
assertEquals(1, cell.getRowIndex());
assertEquals(1, cell.getRowSpan());
assertEquals("Address", cell.getDataValue());
assertEquals(700, cell.getBounds().x);
assertEquals(20, cell.getBounds().y);
assertEquals(400, cell.getBounds().width);
assertEquals(20, cell.getBounds().height);
cell = this.columnGroupHeaderLayer.getCellByPosition(11, 1);
assertEquals(11, cell.getOriginColumnPosition());
assertEquals(11, cell.getColumnPosition());
assertEquals(8, cell.getColumnIndex());
assertEquals(3, cell.getColumnSpan());
assertEquals(1, cell.getOriginRowPosition());
assertEquals(1, cell.getRowPosition());
assertEquals(1, cell.getRowIndex());
assertEquals(1, cell.getRowSpan());
assertEquals("Facts", cell.getDataValue());
assertEquals(1100, cell.getBounds().x);
assertEquals(20, cell.getBounds().y);
assertEquals(300, cell.getBounds().width);
assertEquals(20, cell.getBounds().height);
// second level column group
cell = this.columnGroupHeaderLayer.getCellByPosition(7, 0);
assertEquals(7, cell.getOriginColumnPosition());
assertEquals(7, cell.getColumnPosition());
assertEquals(4, cell.getColumnIndex());
assertEquals(7, cell.getColumnSpan());
assertEquals(0, cell.getOriginRowPosition());
assertEquals(0, cell.getRowPosition());
assertEquals(0, cell.getRowIndex());
assertEquals(1, cell.getRowSpan());
assertEquals("Test", cell.getDataValue());
assertEquals(700, cell.getBounds().x);
assertEquals(0, cell.getBounds().y);
assertEquals(700, cell.getBounds().width);
assertEquals(20, cell.getBounds().height);
cell = this.columnGroupHeaderLayer.getCellByPosition(11, 0);
assertEquals(7, cell.getOriginColumnPosition());
assertEquals(11, cell.getColumnPosition());
assertEquals(8, cell.getColumnIndex());
assertEquals(7, cell.getColumnSpan());
assertEquals(0, cell.getOriginRowPosition());
assertEquals(0, cell.getRowPosition());
assertEquals(0, cell.getRowIndex());
assertEquals(1, cell.getRowSpan());
assertEquals("Test", cell.getDataValue());
assertEquals(700, cell.getBounds().x);
assertEquals(0, cell.getBounds().y);
assertEquals(700, cell.getBounds().width);
assertEquals(20, cell.getBounds().height);
Group group1 = this.columnGroupHeaderLayer.getGroupModel(0).getGroupByPosition(0);
assertEquals(0, group1.getStartIndex());
assertEquals(0, group1.getVisibleStartIndex());
assertEquals(0, group1.getVisibleStartPosition());
assertEquals(4, group1.getOriginalSpan());
assertEquals(4, group1.getVisibleSpan());
Collection<Integer> members = group1.getMembers();
assertEquals(4, members.size());
assertTrue(members.contains(0));
assertTrue(members.contains(1));
assertTrue(members.contains(2));
assertTrue(members.contains(3));
Group group2 = this.columnGroupHeaderLayer.getGroupModel(0).getGroupByPosition(4);
assertEquals(11, group2.getStartIndex());
assertEquals(11, group2.getVisibleStartIndex());
assertEquals(4, group2.getVisibleStartPosition());
assertEquals(3, group2.getOriginalSpan());
assertEquals(3, group2.getVisibleSpan());
members = group2.getMembers();
assertEquals(3, members.size());
assertTrue(members.contains(11));
assertTrue(members.contains(12));
assertTrue(members.contains(13));
Group group3 = this.columnGroupHeaderLayer.getGroupModel(0).getGroupByPosition(7);
assertEquals(4, group3.getStartIndex());
assertEquals(4, group3.getVisibleStartIndex());
assertEquals(7, group3.getVisibleStartPosition());
assertEquals(4, group3.getOriginalSpan());
assertEquals(4, group3.getVisibleSpan());
members = group3.getMembers();
assertEquals(4, members.size());
assertTrue(members.contains(4));
assertTrue(members.contains(5));
assertTrue(members.contains(6));
assertTrue(members.contains(7));
Group group4 = this.columnGroupHeaderLayer.getGroupModel(0).getGroupByPosition(11);
assertEquals(8, group4.getStartIndex());
assertEquals(8, group4.getVisibleStartIndex());
assertEquals(11, group4.getVisibleStartPosition());
assertEquals(3, group4.getOriginalSpan());
assertEquals(3, group4.getVisibleSpan());
members = group4.getMembers();
assertEquals(3, members.size());
assertTrue(members.contains(8));
assertTrue(members.contains(9));
assertTrue(members.contains(10));
Group group11 = this.columnGroupHeaderLayer.getGroupModel(1).getGroupByPosition(7);
assertEquals(4, group11.getStartIndex());
assertEquals(4, group11.getVisibleStartIndex());
assertEquals(7, group11.getVisibleStartPosition());
assertEquals(7, group11.getOriginalSpan());
assertEquals(7, group11.getVisibleSpan());
members = group11.getMembers();
assertEquals(7, members.size());
assertTrue(members.contains(4));
assertTrue(members.contains(5));
assertTrue(members.contains(6));
assertTrue(members.contains(7));
assertTrue(members.contains(8));
assertTrue(members.contains(9));
assertTrue(members.contains(10));
}
@Test
public void shouldNotReorderNonGroupedToUnbreakableLevel1Group() {
// first clear all groups
this.columnGroupHeaderLayer.clearAllGroups();
assertTrue(this.columnGroupHeaderLayer.getGroupModel(0).isEmpty());
assertTrue(this.columnGroupHeaderLayer.getGroupModel(1).isEmpty());
this.columnGroupHeaderLayer.addGroup("Address", 4, 4);
this.columnGroupHeaderLayer.addGroup("Facts", 8, 3);
this.columnGroupHeaderLayer.addGroup("Personal", 11, 3);
this.columnGroupHeaderLayer.addGroup(1, "Test", 0, 8);
this.columnGroupHeaderLayer.setGroupUnbreakable(0, 4, true);
this.columnGroupHeaderLayer.setGroupUnbreakable(1, 4, true);
// now try to reorder a non grouped column to the non-breakable column
// group on level 0
this.gridLayer.doCommand(new ColumnReorderCommand(this.gridLayer, 3, 6));
// no changes should have happened
assertNull(this.columnGroupHeaderLayer.getGroupByPosition(0, 0));
assertNull(this.columnGroupHeaderLayer.getGroupByPosition(0, 1));
assertNull(this.columnGroupHeaderLayer.getGroupByPosition(0, 2));
assertNull(this.columnGroupHeaderLayer.getGroupByPosition(0, 3));
Group group = this.columnGroupHeaderLayer.getGroupByPosition(0, 4);
assertEquals(4, group.getStartIndex());
assertEquals(4, group.getVisibleStartIndex());
assertEquals(4, group.getVisibleStartPosition());
assertEquals(4, group.getOriginalSpan());
assertEquals(4, group.getVisibleSpan());
Collection<Integer> members = group.getMembers();
assertEquals(4, members.size());
assertTrue(members.contains(4));
assertTrue(members.contains(5));
assertTrue(members.contains(6));
assertTrue(members.contains(7));
}
@Test
public void shouldNotDragReorderNonGroupedToUnbreakableLevel1Group() {
// first clear all groups
this.columnGroupHeaderLayer.clearAllGroups();
assertTrue(this.columnGroupHeaderLayer.getGroupModel(0).isEmpty());
assertTrue(this.columnGroupHeaderLayer.getGroupModel(1).isEmpty());
this.columnGroupHeaderLayer.addGroup("Address", 4, 4);
this.columnGroupHeaderLayer.addGroup("Facts", 8, 3);
this.columnGroupHeaderLayer.addGroup("Personal", 11, 3);
this.columnGroupHeaderLayer.addGroup(1, "Test", 0, 8);
this.columnGroupHeaderLayer.setGroupUnbreakable(0, 4, true);
this.columnGroupHeaderLayer.setGroupUnbreakable(1, 4, true);
// now try to reorder a non grouped column to the non-breakable column
// group on level 0
this.gridLayer.doCommand(new ColumnReorderStartCommand(this.gridLayer, 3));
this.gridLayer.doCommand(new ColumnReorderEndCommand(this.gridLayer, 6));
// no changes should have happened
assertNull(this.columnGroupHeaderLayer.getGroupByPosition(0, 0));
assertNull(this.columnGroupHeaderLayer.getGroupByPosition(0, 1));
assertNull(this.columnGroupHeaderLayer.getGroupByPosition(0, 2));
assertNull(this.columnGroupHeaderLayer.getGroupByPosition(0, 3));
Group group = this.columnGroupHeaderLayer.getGroupByPosition(0, 4);
assertEquals(4, group.getStartIndex());
assertEquals(4, group.getVisibleStartIndex());
assertEquals(4, group.getVisibleStartPosition());
assertEquals(4, group.getOriginalSpan());
assertEquals(4, group.getVisibleSpan());
Collection<Integer> members = group.getMembers();
assertEquals(4, members.size());
assertTrue(members.contains(4));
assertTrue(members.contains(5));
assertTrue(members.contains(6));
assertTrue(members.contains(7));
}
@Test
public void shouldDragReorderLevel0GroupToNonGroupedUnbreakable() {
// first clear all groups
this.columnGroupHeaderLayer.clearAllGroups();
assertTrue(this.columnGroupHeaderLayer.getGroupModel(0).isEmpty());
assertTrue(this.columnGroupHeaderLayer.getGroupModel(1).isEmpty());
this.columnGroupHeaderLayer.addGroup("Address", 4, 4);
this.columnGroupHeaderLayer.addGroup("Facts", 8, 3);
this.columnGroupHeaderLayer.addGroup("Personal", 11, 3);
this.columnGroupHeaderLayer.addGroup(1, "Test", 0, 8);
this.columnGroupHeaderLayer.setGroupUnbreakable(0, 4, true);
this.columnGroupHeaderLayer.setGroupUnbreakable(1, 4, true);
// now try to reorder a non-breakable column group on level 0 inside the
// non-breakable level 1 group
this.gridLayer.doCommand(new ColumnGroupReorderStartCommand(this.gridLayer, 0, 5));
this.gridLayer.doCommand(new ColumnGroupReorderEndCommand(this.gridLayer, 0, 3));
assertNull(this.columnGroupHeaderLayer.getGroupByPosition(0, 0));
assertNull(this.columnGroupHeaderLayer.getGroupByPosition(0, 1));
Group group = this.columnGroupHeaderLayer.getGroupByPosition(0, 2);
assertNotNull(group);
assertEquals(4, group.getStartIndex());
assertEquals(4, group.getVisibleStartIndex());
assertEquals(2, group.getVisibleStartPosition());
assertEquals(4, group.getOriginalSpan());
assertEquals(4, group.getVisibleSpan());
Collection<Integer> members = group.getMembers();
assertEquals(4, members.size());
assertTrue(members.contains(4));
assertTrue(members.contains(5));
assertTrue(members.contains(6));
assertTrue(members.contains(7));
assertNull(this.columnGroupHeaderLayer.getGroupByPosition(0, 6));
assertNull(this.columnGroupHeaderLayer.getGroupByPosition(0, 7));
}
@Test
public void shouldReorderLevel0GroupToNonGroupedUnbreakable() {
// first clear all groups
this.columnGroupHeaderLayer.clearAllGroups();
assertTrue(this.columnGroupHeaderLayer.getGroupModel(0).isEmpty());
assertTrue(this.columnGroupHeaderLayer.getGroupModel(1).isEmpty());
this.columnGroupHeaderLayer.addGroup("Address", 4, 4);
this.columnGroupHeaderLayer.addGroup("Facts", 8, 3);
this.columnGroupHeaderLayer.addGroup("Personal", 11, 3);
this.columnGroupHeaderLayer.addGroup(1, "Test", 0, 8);
this.columnGroupHeaderLayer.setGroupUnbreakable(0, 4, true);
this.columnGroupHeaderLayer.setGroupUnbreakable(1, 4, true);
// now try to reorder a non-breakable column group on level 0 inside the
// non-breakable level 1 group
this.gridLayer.doCommand(new ColumnGroupReorderCommand(this.gridLayer, 0, 5, 3));
assertNull(this.columnGroupHeaderLayer.getGroupByPosition(0, 0));
assertNull(this.columnGroupHeaderLayer.getGroupByPosition(0, 1));
Group group = this.columnGroupHeaderLayer.getGroupByPosition(0, 2);
assertNotNull(group);
assertEquals(4, group.getStartIndex());
assertEquals(4, group.getVisibleStartIndex());
assertEquals(2, group.getVisibleStartPosition());
assertEquals(4, group.getOriginalSpan());
assertEquals(4, group.getVisibleSpan());
Collection<Integer> members = group.getMembers();
assertEquals(4, members.size());
assertTrue(members.contains(4));
assertTrue(members.contains(5));
assertTrue(members.contains(6));
assertTrue(members.contains(7));
assertNull(this.columnGroupHeaderLayer.getGroupByPosition(0, 6));
assertNull(this.columnGroupHeaderLayer.getGroupByPosition(0, 7));
}
@Test
public void shouldNotReorderLevel0GroupOutOfUnbreakableLevel1Group() {
// first clear all groups
this.columnGroupHeaderLayer.clearAllGroups();
assertTrue(this.columnGroupHeaderLayer.getGroupModel(0).isEmpty());
assertTrue(this.columnGroupHeaderLayer.getGroupModel(1).isEmpty());
this.columnGroupHeaderLayer.addGroup("Address", 4, 4);
this.columnGroupHeaderLayer.addGroup("Facts", 8, 3);
this.columnGroupHeaderLayer.addGroup("Personal", 11, 3);
this.columnGroupHeaderLayer.addGroup(1, "Test", 0, 8);
this.columnGroupHeaderLayer.setGroupUnbreakable(0, 4, true);
this.columnGroupHeaderLayer.setGroupUnbreakable(1, 4, true);
// now try to reorder a level 0 group out of the non-breakable column
// group on level 1
this.gridLayer.doCommand(new ColumnGroupReorderCommand(this.gridLayer, 0, 5, 10));
// no changes should have happened
assertNull(this.columnGroupHeaderLayer.getGroupByPosition(0, 0));
assertNull(this.columnGroupHeaderLayer.getGroupByPosition(0, 1));
assertNull(this.columnGroupHeaderLayer.getGroupByPosition(0, 2));
assertNull(this.columnGroupHeaderLayer.getGroupByPosition(0, 3));
Group group = this.columnGroupHeaderLayer.getGroupByPosition(0, 4);
assertEquals(4, group.getStartIndex());
assertEquals(4, group.getVisibleStartIndex());
assertEquals(4, group.getVisibleStartPosition());
assertEquals(4, group.getOriginalSpan());
assertEquals(4, group.getVisibleSpan());
Collection<Integer> members = group.getMembers();
assertEquals(4, members.size());
assertTrue(members.contains(4));
assertTrue(members.contains(5));
assertTrue(members.contains(6));
assertTrue(members.contains(7));
}
@Test
public void shouldNotDragReorderLevel0GroupOutOfUnbreakableLevel1Group() {
// first clear all groups
this.columnGroupHeaderLayer.clearAllGroups();
assertTrue(this.columnGroupHeaderLayer.getGroupModel(0).isEmpty());
assertTrue(this.columnGroupHeaderLayer.getGroupModel(1).isEmpty());
this.columnGroupHeaderLayer.addGroup("Address", 4, 4);
this.columnGroupHeaderLayer.addGroup("Facts", 8, 3);
this.columnGroupHeaderLayer.addGroup("Personal", 11, 3);
this.columnGroupHeaderLayer.addGroup(1, "Test", 0, 8);
this.columnGroupHeaderLayer.setGroupUnbreakable(0, 4, true);
this.columnGroupHeaderLayer.setGroupUnbreakable(1, 4, true);
// now try to reorder a level 0 group out of the non-breakable column
// group on level 1
this.gridLayer.doCommand(new ColumnGroupReorderStartCommand(this.gridLayer, 0, 5));
this.gridLayer.doCommand(new ColumnGroupReorderStartCommand(this.gridLayer, 0, 10));
// no changes should have happened
assertNull(this.columnGroupHeaderLayer.getGroupByPosition(0, 0));
assertNull(this.columnGroupHeaderLayer.getGroupByPosition(0, 1));
assertNull(this.columnGroupHeaderLayer.getGroupByPosition(0, 2));
assertNull(this.columnGroupHeaderLayer.getGroupByPosition(0, 3));
Group group = this.columnGroupHeaderLayer.getGroupByPosition(0, 4);
assertEquals(4, group.getStartIndex());
assertEquals(4, group.getVisibleStartIndex());
assertEquals(4, group.getVisibleStartPosition());
assertEquals(4, group.getOriginalSpan());
assertEquals(4, group.getVisibleSpan());
Collection<Integer> members = group.getMembers();
assertEquals(4, members.size());
assertTrue(members.contains(4));
assertTrue(members.contains(5));
assertTrue(members.contains(6));
assertTrue(members.contains(7));
}
@Test
public void shouldReorderLevel0GroupWithOneColumnToNonGroupedUnbreakable() {
// first clear all groups
this.columnGroupHeaderLayer.clearAllGroups();
assertTrue(this.columnGroupHeaderLayer.getGroupModel(0).isEmpty());
assertTrue(this.columnGroupHeaderLayer.getGroupModel(1).isEmpty());
this.columnGroupHeaderLayer.addGroup("Address", 4, 1);
this.columnGroupHeaderLayer.addGroup("Facts", 8, 3);
this.columnGroupHeaderLayer.addGroup("Personal", 11, 3);
this.columnGroupHeaderLayer.addGroup(1, "Test", 0, 8);
this.columnGroupHeaderLayer.setGroupUnbreakable(0, 4, true);
this.columnGroupHeaderLayer.setGroupUnbreakable(1, 4, true);
// now try to reorder a non-breakable column group on level 0 inside the
// non-breakable level 1 group
this.gridLayer.doCommand(new ColumnReorderCommand(this.gridLayer, 5, 3));
assertNull(this.columnGroupHeaderLayer.getGroupByPosition(0, 0));
assertNull(this.columnGroupHeaderLayer.getGroupByPosition(0, 1));
Group group = this.columnGroupHeaderLayer.getGroupByPosition(0, 2);
assertNotNull(group);
assertEquals(4, group.getStartIndex());
assertEquals(4, group.getVisibleStartIndex());
assertEquals(2, group.getVisibleStartPosition());
assertEquals(1, group.getOriginalSpan());
assertEquals(1, group.getVisibleSpan());
Collection<Integer> members = group.getMembers();
assertEquals(1, members.size());
assertTrue(members.contains(4));
assertNull(this.columnGroupHeaderLayer.getGroupByPosition(0, 3));
assertNull(this.columnGroupHeaderLayer.getGroupByPosition(0, 4));
assertNull(this.columnGroupHeaderLayer.getGroupByPosition(0, 5));
assertNull(this.columnGroupHeaderLayer.getGroupByPosition(0, 6));
assertNull(this.columnGroupHeaderLayer.getGroupByPosition(0, 7));
}
@Test
public void shouldSetGroupHeaderRowHeight() {
this.columnGroupHeaderLayer.setRowHeight(100);
assertEquals(100, this.gridLayer.getRowHeightByPosition(1));
}
@Test
public void shouldSetGroupHeaderRowHeightByLevel() {
this.columnGroupHeaderLayer.setRowHeight(this.columnGroupHeaderLayer.getRowPositionForLevel(1), 100);
assertEquals(100, this.gridLayer.getRowHeightByPosition(0));
}
@Test
public void shouldResizeColumnGroupHeaderRow() {
this.gridLayer.doCommand(new RowResizeCommand(this.gridLayer, 1, 100));
assertEquals(20, this.gridLayer.getRowHeightByPosition(0));
assertEquals(100, this.gridLayer.getRowHeightByPosition(1));
}
@Test
public void shouldResizeColumnGroupHeaderRowWithoutDownScale() {
IDpiConverter dpiConverter = new AbstractDpiConverter() {
@Override
protected void readDpiFromDisplay() {
this.dpi = 120;
}
};
this.gridLayer.doCommand(new ConfigureScalingCommand(dpiConverter, dpiConverter));
// scaling enabled, therefore default height of 20 pixels is up scaled
// to 25
assertEquals(25, this.gridLayer.getRowHeightByPosition(0));
this.gridLayer.doCommand(new RowResizeCommand(this.gridLayer, 0, 100));
assertEquals(125, this.gridLayer.getRowHeightByPosition(0));
assertEquals(25, this.gridLayer.getRowHeightByPosition(1));
}
@Test
public void shouldResizeColumnGroupHeaderRowWithDownScale() {
IDpiConverter dpiConverter = new AbstractDpiConverter() {
@Override
protected void readDpiFromDisplay() {
this.dpi = 120;
}
};
this.gridLayer.doCommand(new ConfigureScalingCommand(dpiConverter, dpiConverter));
// scaling enabled, therefore default height of 20 pixels is up scaled
// to 25
assertEquals(25, this.gridLayer.getRowHeightByPosition(0));
this.gridLayer.doCommand(new RowResizeCommand(this.gridLayer, 0, 100, true));
// down scaling in the command was enabled, therefore the value set is
// the value that will be returned
assertEquals(100, this.gridLayer.getRowHeightByPosition(0));
assertEquals(25, this.gridLayer.getRowHeightByPosition(1));
}
@Test
public void shouldMultiResizeColumnGroupHeaderRow() {
this.gridLayer.doCommand(new MultiRowResizeCommand(this.gridLayer, new int[] { 0, 1 }, 100));
assertEquals(100, this.gridLayer.getRowHeightByPosition(0));
assertEquals(100, this.gridLayer.getRowHeightByPosition(1));
}
@Test
public void shouldMultiResizeColumnGroupHeaderAndBody() {
this.gridLayer.doCommand(new MultiRowResizeCommand(this.gridLayer, new int[] { 0, 1, 2 }, 100));
assertEquals(100, this.gridLayer.getRowHeightByPosition(0));
assertEquals(100, this.gridLayer.getRowHeightByPosition(1));
assertEquals(100, this.gridLayer.getRowHeightByPosition(2));
}
@Test
public void shouldMultiResizeColumnGroupHeaderRowWithoutDownScale() {
IDpiConverter dpiConverter = new AbstractDpiConverter() {
@Override
protected void readDpiFromDisplay() {
this.dpi = 120;
}
};
this.gridLayer.doCommand(new ConfigureScalingCommand(dpiConverter, dpiConverter));
// scaling enabled, therefore default height of 20 pixels is up scaled
// to 25
assertEquals(25, this.gridLayer.getRowHeightByPosition(0));
this.gridLayer.doCommand(new MultiRowResizeCommand(this.gridLayer, new int[] { 0, 1 }, 100));
assertEquals(125, this.gridLayer.getRowHeightByPosition(0));
assertEquals(125, this.gridLayer.getRowHeightByPosition(1));
}
@Test
public void shouldMultiResizeColumnGroupHeaderRowWithDownScale() {
IDpiConverter dpiConverter = new AbstractDpiConverter() {
@Override
protected void readDpiFromDisplay() {
this.dpi = 120;
}
};
this.gridLayer.doCommand(new ConfigureScalingCommand(dpiConverter, dpiConverter));
// scaling enabled, therefore default height of 20 pixels is up scaled
// to 25
assertEquals(25, this.gridLayer.getRowHeightByPosition(0));
this.gridLayer.doCommand(new MultiRowResizeCommand(this.gridLayer, new int[] { 0, 1 }, 100, true));
// down scaling in the command was enabled, therefore the value set is
// the value that will be returned
assertEquals(100, this.gridLayer.getRowHeightByPosition(0));
assertEquals(100, this.gridLayer.getRowHeightByPosition(1));
}
@Test
public void shouldReturnConfigLabelsOnLevel0() {
// check expanded column group
LabelStack stack = this.columnGroupHeaderLayer.getConfigLabelsByPosition(4, 1);
assertEquals(2, stack.getLabels().size());
assertTrue(stack.hasLabel(GridRegion.COLUMN_GROUP_HEADER));
assertTrue(stack.hasLabel(GroupHeaderConfigLabels.GROUP_EXPANDED_CONFIG_TYPE));
// check collapsed column group
this.columnGroupHeaderLayer.collapseGroup(0, 4);
stack = this.columnGroupHeaderLayer.getConfigLabelsByPosition(4, 1);
assertEquals(2, stack.getLabels().size());
assertTrue(stack.hasLabel(GridRegion.COLUMN_GROUP_HEADER));
assertTrue(stack.hasLabel(GroupHeaderConfigLabels.GROUP_COLLAPSED_CONFIG_TYPE));
}
@Test
public void shouldReturnConfigLabelsOnLevel1() {
// check expanded column group
LabelStack stack = this.columnGroupHeaderLayer.getConfigLabelsByPosition(4, 0);
assertEquals(2, stack.getLabels().size());
assertTrue(stack.hasLabel(GridRegion.COLUMN_GROUP_HEADER));
assertTrue(stack.hasLabel(GroupHeaderConfigLabels.GROUP_EXPANDED_CONFIG_TYPE));
// check collapsed column group
this.columnGroupHeaderLayer.collapseGroup(1, 4);
stack = this.columnGroupHeaderLayer.getConfigLabelsByPosition(4, 0);
assertEquals(2, stack.getLabels().size());
assertTrue(stack.hasLabel(GridRegion.COLUMN_GROUP_HEADER));
assertTrue(stack.hasLabel(GroupHeaderConfigLabels.GROUP_COLLAPSED_CONFIG_TYPE));
}
@Test
public void shouldReturnConfigLabelsOnLevel0WithoutLevel0() {
// check column 0 where we only have a group on level 0 but not on level
// 0
LabelStack stack = this.columnGroupHeaderLayer.getConfigLabelsByPosition(0, 0);
assertEquals(2, stack.getLabels().size());
assertTrue(stack.hasLabel(GridRegion.COLUMN_GROUP_HEADER));
assertTrue(stack.hasLabel(GroupHeaderConfigLabels.GROUP_EXPANDED_CONFIG_TYPE));
// check collapsed column group
this.columnGroupHeaderLayer.collapseGroup(0);
stack = this.columnGroupHeaderLayer.getConfigLabelsByPosition(0, 0);
assertEquals(2, stack.getLabels().size());
assertTrue(stack.hasLabel(GridRegion.COLUMN_GROUP_HEADER));
assertTrue(stack.hasLabel(GroupHeaderConfigLabels.GROUP_COLLAPSED_CONFIG_TYPE));
}
@Test
public void shouldExpandCollapseLevel0ViaLevel1WithoutLevel1Group() {
Group level0Group = this.columnGroupHeaderLayer.getGroupByPosition(0, 0);
assertFalse(level0Group.isCollapsed());
// trigger the command for the origin row position of the column group
this.gridLayer.doCommand(new ColumnGroupExpandCollapseCommand(this.gridLayer, 1, 0));
assertTrue(level0Group.isCollapsed());
}
@Test
public void shouldNotDragReorderFromUnbreakableLevel1GroupToEnd() {
// increase the client area to show all columns
this.gridLayer.setClientAreaProvider(new IClientAreaProvider() {
@Override
public Rectangle getClientArea() {
return new Rectangle(0, 0, 1600, 250);
}
});
this.gridLayer.doCommand(new ClientAreaResizeCommand(new Shell(Display.getDefault(), SWT.V_SCROLL | SWT.H_SCROLL)));
// remove Personal group
this.columnGroupHeaderLayer.removeGroup(0, 11);
this.columnGroupHeaderLayer.setGroupUnbreakable(1, 4, true);
// try to reorder the first group in level 0 to end
this.gridLayer.doCommand(new ColumnGroupReorderStartCommand(this.gridLayer, 0, 5));
this.gridLayer.doCommand(new ColumnGroupReorderEndCommand(this.gridLayer, 0, 15));
// add the Personal group back
this.columnGroupHeaderLayer.addGroup("Personal", 11, 3);
// verify that nothing has changed
assertEquals(15, this.gridLayer.getColumnCount());
ILayerCell cell = this.columnGroupHeaderLayer.getCellByPosition(0, 0);
assertEquals(0, cell.getOriginColumnPosition());
assertEquals(0, cell.getColumnPosition());
assertEquals(0, cell.getColumnIndex());
assertEquals(4, cell.getColumnSpan());
assertEquals(0, cell.getOriginRowPosition());
assertEquals(0, cell.getRowPosition());
assertEquals(0, cell.getRowIndex());
assertEquals(2, cell.getRowSpan());
assertEquals("Person", cell.getDataValue());
assertEquals(0, cell.getBounds().x);
assertEquals(0, cell.getBounds().y);
assertEquals(400, cell.getBounds().width);
assertEquals(40, cell.getBounds().height);
cell = this.columnGroupHeaderLayer.getCellByPosition(4, 1);
assertEquals(4, cell.getOriginColumnPosition());
assertEquals(4, cell.getColumnPosition());
assertEquals(4, cell.getColumnIndex());
assertEquals(4, cell.getColumnSpan());
assertEquals(1, cell.getOriginRowPosition());
assertEquals(1, cell.getRowPosition());
assertEquals(1, cell.getRowIndex());
assertEquals(1, cell.getRowSpan());
assertEquals("Address", cell.getDataValue());
assertEquals(400, cell.getBounds().x);
assertEquals(20, cell.getBounds().y);
assertEquals(400, cell.getBounds().width);
assertEquals(20, cell.getBounds().height);
cell = this.columnGroupHeaderLayer.getCellByPosition(8, 1);
assertEquals(8, cell.getOriginColumnPosition());
assertEquals(8, cell.getColumnPosition());
assertEquals(8, cell.getColumnIndex());
assertEquals(3, cell.getColumnSpan());
assertEquals(1, cell.getOriginRowPosition());
assertEquals(1, cell.getRowPosition());
assertEquals(1, cell.getRowIndex());
assertEquals(1, cell.getRowSpan());
assertEquals("Facts", cell.getDataValue());
assertEquals(800, cell.getBounds().x);
assertEquals(20, cell.getBounds().y);
assertEquals(300, cell.getBounds().width);
assertEquals(20, cell.getBounds().height);
cell = this.columnGroupHeaderLayer.getCellByPosition(11, 0);
assertEquals(11, cell.getOriginColumnPosition());
assertEquals(11, cell.getColumnPosition());
assertEquals(11, cell.getColumnIndex());
assertEquals(3, cell.getColumnSpan());
assertEquals(0, cell.getOriginRowPosition());
assertEquals(0, cell.getRowPosition());
assertEquals(0, cell.getRowIndex());
assertEquals(2, cell.getRowSpan());
assertEquals("Personal", cell.getDataValue());
assertEquals(1100, cell.getBounds().x);
assertEquals(0, cell.getBounds().y);
assertEquals(300, cell.getBounds().width);
assertEquals(40, cell.getBounds().height);
cell = this.columnGroupHeaderLayer.getCellByPosition(11, 1);
assertEquals(11, cell.getOriginColumnPosition());
assertEquals(11, cell.getColumnPosition());
assertEquals(11, cell.getColumnIndex());
assertEquals(3, cell.getColumnSpan());
assertEquals(0, cell.getOriginRowPosition());
assertEquals(1, cell.getRowPosition());
assertEquals(1, cell.getRowIndex());
assertEquals(2, cell.getRowSpan());
assertEquals("Personal", cell.getDataValue());
assertEquals(1100, cell.getBounds().x);
assertEquals(0, cell.getBounds().y);
assertEquals(300, cell.getBounds().width);
assertEquals(40, cell.getBounds().height);
// second level column group
cell = this.columnGroupHeaderLayer.getCellByPosition(4, 0);
assertEquals(4, cell.getOriginColumnPosition());
assertEquals(4, cell.getColumnPosition());
assertEquals(4, cell.getColumnIndex());
assertEquals(7, cell.getColumnSpan());
assertEquals(0, cell.getOriginRowPosition());
assertEquals(0, cell.getRowPosition());
assertEquals(0, cell.getRowIndex());
assertEquals(1, cell.getRowSpan());
assertEquals("Test", cell.getDataValue());
assertEquals(400, cell.getBounds().x);
assertEquals(0, cell.getBounds().y);
assertEquals(700, cell.getBounds().width);
assertEquals(20, cell.getBounds().height);
cell = this.columnGroupHeaderLayer.getCellByPosition(8, 0);
assertEquals(4, cell.getOriginColumnPosition());
assertEquals(8, cell.getColumnPosition());
assertEquals(8, cell.getColumnIndex());
assertEquals(7, cell.getColumnSpan());
assertEquals(0, cell.getOriginRowPosition());
assertEquals(0, cell.getRowPosition());
assertEquals(0, cell.getRowIndex());
assertEquals(1, cell.getRowSpan());
assertEquals("Test", cell.getDataValue());
assertEquals(400, cell.getBounds().x);
assertEquals(0, cell.getBounds().y);
assertEquals(700, cell.getBounds().width);
assertEquals(20, cell.getBounds().height);
}
}