blob: cfc33fa002731e73815ba6d78abc2ecdc7e05c38 [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.test.integration;
import static org.junit.Assert.assertEquals;
import java.util.Properties;
import org.eclipse.nebula.widgets.nattable.hideshow.command.ColumnHideCommand;
import org.eclipse.nebula.widgets.nattable.layer.IUniqueIndexLayer;
import org.eclipse.nebula.widgets.nattable.layer.NoScalingDpiConverter;
import org.eclipse.nebula.widgets.nattable.layer.command.ConfigureScalingCommand;
import org.eclipse.nebula.widgets.nattable.layer.stack.DummyGridLayerStack;
import org.eclipse.nebula.widgets.nattable.reorder.RowReorderLayer;
import org.eclipse.nebula.widgets.nattable.reorder.command.ColumnReorderCommand;
import org.eclipse.nebula.widgets.nattable.reorder.command.RowReorderCommand;
import org.eclipse.nebula.widgets.nattable.resize.command.ColumnResizeCommand;
import org.eclipse.nebula.widgets.nattable.resize.command.RowResizeCommand;
import org.eclipse.nebula.widgets.nattable.test.fixture.NatTableFixture;
import org.eclipse.swt.widgets.Shell;
import org.junit.Before;
import org.junit.Test;
public class PersistenceIntegrationTest {
public static final String TEST_PERSISTENCE_PREFIX = "testPrefix";
private Properties properties;
private NatTableFixture natTableFixture;
@Before
public void setup() {
this.natTableFixture = new NatTableFixture(new Shell(),
new DummyGridLayerStack() {
@Override
protected void init(IUniqueIndexLayer bodyDataLayer,
IUniqueIndexLayer columnHeaderDataLayer,
IUniqueIndexLayer rowHeaderDataLayer,
IUniqueIndexLayer cornerDataLayer) {
RowReorderLayer rowReorderLayer = new RowReorderLayer(bodyDataLayer);
super.init(rowReorderLayer, columnHeaderDataLayer, rowHeaderDataLayer, cornerDataLayer);
}
});
this.natTableFixture.doCommand(new ConfigureScalingCommand(new NoScalingDpiConverter()));
this.properties = new Properties();
}
@Test
public void stateIsLoadedCorrectlyFromProperties() throws Exception {
saveStateToPropeties();
this.natTableFixture.loadState(TEST_PERSISTENCE_PREFIX, this.properties);
// Originally resized position 2, after reorder became position 1
assertEquals(200, this.natTableFixture.getColumnWidthByPosition(1));
// Originally resized position 2, after reorder became position 1
assertEquals(100, this.natTableFixture.getRowHeightByPosition(1));
assertEquals(1, this.natTableFixture.getColumnIndexByPosition(1));
assertEquals(0, this.natTableFixture.getColumnIndexByPosition(3));
}
public void saveStateToPropeties() throws Exception {
// Resize column 2 to 200px
assertEquals(100, this.natTableFixture.getColumnWidthByPosition(2));
this.natTableFixture.doCommand(new ColumnResizeCommand(this.natTableFixture, 2, 200));
assertEquals(200, this.natTableFixture.getColumnWidthByPosition(2));
// Resize row 2 to 100px
assertEquals(20, this.natTableFixture.getRowHeightByPosition(2));
this.natTableFixture.doCommand(new RowResizeCommand(this.natTableFixture, 2, 100));
assertEquals(100, this.natTableFixture.getRowHeightByPosition(2));
// Reorder column 1 --> 5 (grid coordinates)
// 0, 1, 2, 3, 4, 5,.. --> 1, 2, 3, 0, 4, 5,..
assertEquals(0, this.natTableFixture.getColumnIndexByPosition(1));
this.natTableFixture.doCommand(new ColumnReorderCommand(this.natTableFixture, 1, 5));
assertEquals(1, this.natTableFixture.getColumnIndexByPosition(1));
// Reorder row 1 --> 5 (grid coordinates)
// 0, 1, 2, 3, 4, 5,.. --> 1, 2, 3, 0, 4, 5,..
assertEquals(0, this.natTableFixture.getRowIndexByPosition(1));
this.natTableFixture.doCommand(new RowReorderCommand(this.natTableFixture, 1, 5));
assertEquals(1, this.natTableFixture.getRowIndexByPosition(1));
// Hide column with index 3 (grid coordinates)
assertEquals(3, this.natTableFixture.getColumnIndexByPosition(3));
this.natTableFixture.doCommand(new ColumnHideCommand(this.natTableFixture, 3));
assertEquals(0, this.natTableFixture.getColumnIndexByPosition(3));
this.natTableFixture.saveState(TEST_PERSISTENCE_PREFIX, this.properties);
// Ensure that properties got persisted
assertEquals(
"true",
this.properties.get("testPrefix.COLUMN_HEADER.columnWidth.resizableByDefault"));
assertEquals(
"100",
this.properties.get("testPrefix.COLUMN_HEADER.columnWidth.defaultSize"));
assertEquals(
"true",
this.properties.get("testPrefix.COLUMN_HEADER.rowHeight.resizableByDefault"));
assertEquals(
"40",
this.properties.get("testPrefix.ROW_HEADER.columnWidth.defaultSize"));
assertEquals(
"true",
this.properties.get("testPrefix.ROW_HEADER.rowHeight.resizableByDefault"));
assertEquals(
"true",
this.properties.get("testPrefix.ROW_HEADER.columnWidth.resizableByDefault"));
assertEquals(
"40",
this.properties.get("testPrefix.ROW_HEADER.rowHeight.defaultSize"));
assertEquals(
"20",
this.properties.get("testPrefix.CORNER.rowHeight.defaultSize"));
assertEquals(
"true",
this.properties.get("testPrefix.CORNER.columnWidth.resizableByDefault"));
assertEquals(
"true",
this.properties.get("testPrefix.CORNER.rowHeight.resizableByDefault"));
assertEquals(
"20",
this.properties.get("testPrefix.BODY.rowHeight.defaultSize"));
assertEquals(
"true",
this.properties.get("testPrefix.BODY.rowHeight.resizableByDefault"));
assertEquals(
"true",
this.properties.get("testPrefix.BODY.columnWidth.resizableByDefault"));
assertEquals(
"1,2,3,0,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19",
this.properties.get("testPrefix.BODY.columnIndexOrder"));
assertEquals(
"1:100,",
this.properties.get("testPrefix.BODY.rowHeight.sizes"));
assertEquals(
"1:200,",
this.properties.get("testPrefix.BODY.columnWidth.sizes"));
}
@Test
public void tableShouldDefaultProperlyIfNoPropertiesAreLoaded() throws Exception {
this.natTableFixture.loadState(TEST_PERSISTENCE_PREFIX, this.properties);
}
}