/******************************************************************************* * Copyright (c) 2012, 2016 Original authors and others. * 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: * Original authors and others - initial API and implementation ******************************************************************************/ package org.eclipse.nebula.widgets.nattable.resize.command; import static org.junit.Assert.assertEquals; 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.DummyBodyDataProvider; import org.eclipse.nebula.widgets.nattable.grid.layer.GridLayer; import org.eclipse.nebula.widgets.nattable.layer.DataLayer; import org.eclipse.nebula.widgets.nattable.layer.cell.ColumnLabelAccumulator; import org.eclipse.nebula.widgets.nattable.layer.stack.DummyGridLayerStack; import org.eclipse.swt.graphics.Rectangle; import org.junit.Before; import org.junit.Test; public class ColumnSizeConfigurationCommandTest { private DataLayer dataLayer; @Before public void setup() { this.dataLayer = new DataLayer(new DummyBodyDataProvider(4, 4)); this.dataLayer.setConfigLabelAccumulator(new ColumnLabelAccumulator()); } @Test public void testSetSize() { assertEquals(100, this.dataLayer.getColumnWidthByPosition(3)); int newWidth = 150; ColumnSizeConfigurationCommand command = new ColumnSizeConfigurationCommand("COLUMN_3", newWidth, false); this.dataLayer.doCommand(command); assertEquals(150, this.dataLayer.getColumnWidthByPosition(3)); } @Test public void testDefaultSize() { assertEquals(100, this.dataLayer.getColumnWidthByPosition(3)); assertEquals(100, this.dataLayer.getDefaultColumnWidth()); assertEquals(400, this.dataLayer.getWidth()); int newWidth = 150; ColumnSizeConfigurationCommand command = new ColumnSizeConfigurationCommand(null, newWidth, false); this.dataLayer.doCommand(command); assertEquals(150, this.dataLayer.getColumnWidthByPosition(3)); assertEquals(150, this.dataLayer.getDefaultColumnWidth()); assertEquals(600, this.dataLayer.getWidth()); } @Test public void testPercentageSizing() { assertEquals(100, this.dataLayer.getColumnWidthByPosition(0)); assertEquals(100, this.dataLayer.getColumnWidthByPosition(1)); assertEquals(100, this.dataLayer.getColumnWidthByPosition(2)); assertEquals(100, this.dataLayer.getColumnWidthByPosition(3)); ColumnSizeConfigurationCommand command = new ColumnSizeConfigurationCommand(null, null, true); this.dataLayer.doCommand(command); // recalculate percentages ClientAreaResizeCommand resizeCommand = new ClientAreaResizeCommand(null); resizeCommand.setCalcArea(new Rectangle(0, 0, 500, 500)); this.dataLayer.doCommand(resizeCommand); assertEquals(125, this.dataLayer.getColumnWidthByPosition(0)); assertEquals(125, this.dataLayer.getColumnWidthByPosition(1)); assertEquals(125, this.dataLayer.getColumnWidthByPosition(2)); assertEquals(125, this.dataLayer.getColumnWidthByPosition(3)); } @Test public void testSetPercentage() { assertEquals(100, this.dataLayer.getColumnWidthByPosition(0)); assertEquals(100, this.dataLayer.getColumnWidthByPosition(1)); assertEquals(100, this.dataLayer.getColumnWidthByPosition(2)); assertEquals(100, this.dataLayer.getColumnWidthByPosition(3)); this.dataLayer.doCommand(new ColumnSizeConfigurationCommand("COLUMN_0", 100, false)); this.dataLayer.doCommand(new ColumnSizeConfigurationCommand("COLUMN_1", 100, false)); this.dataLayer.doCommand(new ColumnSizeConfigurationCommand("COLUMN_2", null, true)); this.dataLayer.doCommand(new ColumnSizeConfigurationCommand("COLUMN_3", null, true)); // recalculate percentages ClientAreaResizeCommand resizeCommand = new ClientAreaResizeCommand(null); resizeCommand.setCalcArea(new Rectangle(0, 0, 500, 500)); this.dataLayer.doCommand(resizeCommand); assertEquals(100, this.dataLayer.getColumnWidthByPosition(0)); assertEquals(100, this.dataLayer.getColumnWidthByPosition(1)); assertEquals(150, this.dataLayer.getColumnWidthByPosition(2)); assertEquals(150, this.dataLayer.getColumnWidthByPosition(3)); } @Test public void testSetPercentageValue() { assertEquals(100, this.dataLayer.getColumnWidthByPosition(0)); assertEquals(100, this.dataLayer.getColumnWidthByPosition(1)); assertEquals(100, this.dataLayer.getColumnWidthByPosition(2)); assertEquals(100, this.dataLayer.getColumnWidthByPosition(3)); this.dataLayer.doCommand(new ColumnSizeConfigurationCommand("COLUMN_0", 20, true)); this.dataLayer.doCommand(new ColumnSizeConfigurationCommand("COLUMN_1", 20, true)); this.dataLayer.doCommand(new ColumnSizeConfigurationCommand("COLUMN_2", 30, true)); this.dataLayer.doCommand(new ColumnSizeConfigurationCommand("COLUMN_3", 30, true)); // recalculate percentages ClientAreaResizeCommand resizeCommand = new ClientAreaResizeCommand(null); resizeCommand.setCalcArea(new Rectangle(0, 0, 1000, 1000)); this.dataLayer.doCommand(resizeCommand); assertEquals(200, this.dataLayer.getColumnWidthByPosition(0)); assertEquals(200, this.dataLayer.getColumnWidthByPosition(1)); assertEquals(300, this.dataLayer.getColumnWidthByPosition(2)); assertEquals(300, this.dataLayer.getColumnWidthByPosition(3)); } @Test public void testSetSizeInGrid() { GridLayer grid = new DummyGridLayerStack(); assertEquals(40, grid.getRowHeaderLayer().getColumnWidthByPosition(0)); assertEquals(100, grid.getBodyLayer().getColumnWidthByPosition(0)); assertEquals(100, grid.getBodyLayer().getColumnWidthByPosition(9)); grid.doCommand(new ColumnSizeConfigurationCommand(null, 150, false)); assertEquals(150, grid.getRowHeaderLayer().getColumnWidthByPosition(0)); assertEquals(150, grid.getBodyLayer().getColumnWidthByPosition(0)); assertEquals(150, grid.getBodyLayer().getColumnWidthByPosition(9)); } @Test public void testSetSizeInBodyRegion() { GridLayer grid = new DummyGridLayerStack(); assertEquals(40, grid.getRowHeaderLayer().getColumnWidthByPosition(0)); assertEquals(100, grid.getBodyLayer().getColumnWidthByPosition(0)); assertEquals(100, grid.getBodyLayer().getColumnWidthByPosition(9)); grid.doCommand(new ColumnSizeConfigurationCommand(GridRegion.BODY, 150, false)); assertEquals(40, grid.getRowHeaderLayer().getColumnWidthByPosition(0)); assertEquals(150, grid.getBodyLayer().getColumnWidthByPosition(0)); assertEquals(150, grid.getBodyLayer().getColumnWidthByPosition(9)); } @Test public void testSetSizeInColumnHeaderRegion() { GridLayer grid = new DummyGridLayerStack(); assertEquals(40, grid.getRowHeaderLayer().getColumnWidthByPosition(0)); assertEquals(100, grid.getBodyLayer().getColumnWidthByPosition(0)); assertEquals(100, grid.getBodyLayer().getColumnWidthByPosition(9)); grid.doCommand(new ColumnSizeConfigurationCommand(GridRegion.ROW_HEADER, 150, false)); assertEquals(150, grid.getRowHeaderLayer().getColumnWidthByPosition(0)); assertEquals(100, grid.getBodyLayer().getColumnWidthByPosition(0)); assertEquals(100, grid.getBodyLayer().getColumnWidthByPosition(9)); } }