blob: 00a2b9b2e12e255ed41d2ccd487d279856f8b57a [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2012, 2020 Original authors and others.
*
* 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:
* Original authors and others - initial API and implementation
******************************************************************************/
package org.eclipse.nebula.widgets.nattable.resize.event;
import static org.junit.Assert.assertEquals;
import java.util.Collection;
import org.eclipse.nebula.widgets.nattable.test.fixture.layer.BaseColumnReorderLayerFixture;
import org.eclipse.nebula.widgets.nattable.test.fixture.layer.DataLayerFixture;
import org.eclipse.nebula.widgets.nattable.test.fixture.layer.LayerListenerFixture;
import org.eclipse.swt.graphics.Rectangle;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
/*
* This test was for selective repainting during resize i.e paint the bare minimum needed.
* This was done for performance reasons. This approach to performance has been abandoned.
* This would be a useful thing to do but is on low priority now. Hence these tests will
* be ignored till we pick this up again.
*/
@Ignore
public class ResizingVisibleReorderedColumnsTest {
private LayerListenerFixture layerListener;
private DataLayerFixture dataLayer;
private BaseColumnReorderLayerFixture reorderLayer;
@Before
public void setUp() {
this.dataLayer = new DataLayerFixture(100, 40);
this.reorderLayer = new BaseColumnReorderLayerFixture(this.dataLayer);
this.layerListener = new LayerListenerFixture();
this.reorderLayer.addLayerListener(this.layerListener);
}
@Test
public void changeShouldIncludeLastColumn() {
// Reorder columns should now be 0, 2, 3, 4, 1
this.reorderLayer.reorderColumnPosition(1, 4);
// Resize last column
this.dataLayer.setColumnWidthByPosition(1, 200);
// The changed position rectangle should just have one column, and the
// column position should be the last column (4)
Rectangle expectedRectangle = new Rectangle(4, 0, 1, 7);
Collection<Rectangle> actualRectangles = ((ColumnResizeEvent) this.layerListener
.getReceivedEvent(ColumnResizeEvent.class))
.getChangedPositionRectangles();
assertEquals(expectedRectangle, actualRectangles.iterator().next());
}
@Test
public void changeShouldIncludeHalfOfGrid() {
// Reorder columns should now be 0, 1, 3, 2, 4
this.reorderLayer.reorderColumnPosition(3, 2);
// Resize last column
this.dataLayer.setColumnWidthByPosition(3, 200);
// The changed position rectangle should just have one column, and the
// column position should be the last column (4)
Rectangle expectedRectangle = new Rectangle(2, 0, 3, 7);
Collection<Rectangle> actualRectangles = ((ColumnResizeEvent) this.layerListener
.getReceivedEvent(ColumnResizeEvent.class))
.getChangedPositionRectangles();
assertEquals(expectedRectangle, actualRectangles.iterator().next());
}
@Test
public void changeShouldIncludeAllColumns() {
// Reorder columns again, should now be 3, 0, 1, 2, 4
this.reorderLayer.reorderColumnPosition(3, 0);
// Resize first column
this.dataLayer.setColumnWidthByPosition(3, 200);
// The changed position rectangle should now be the entire grid
Rectangle expectedRectangle = new Rectangle(0, 0, 5, 7);
Collection<Rectangle> actualRectangles = ((ColumnResizeEvent) this.layerListener
.getReceivedEvent(ColumnResizeEvent.class))
.getChangedPositionRectangles();
assertEquals(expectedRectangle, actualRectangles);
}
}