| /******************************************************************************* |
| * Copyright (c) 2012, 2020 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.style; |
| |
| import static org.junit.Assert.assertEquals; |
| import static org.junit.Assert.assertFalse; |
| import static org.junit.Assert.assertTrue; |
| |
| import org.eclipse.nebula.widgets.nattable.grid.layer.RowHeaderLayer; |
| import org.eclipse.nebula.widgets.nattable.layer.LabelStack; |
| import org.eclipse.nebula.widgets.nattable.layer.cell.ILayerCell; |
| import org.eclipse.nebula.widgets.nattable.selection.command.SelectCellCommand; |
| import org.eclipse.nebula.widgets.nattable.test.fixture.InitializeClientAreaCommandFixture; |
| import org.eclipse.nebula.widgets.nattable.test.fixture.layer.GridLayerFixture; |
| import org.eclipse.nebula.widgets.nattable.viewport.command.ViewportSelectRowCommand; |
| import org.junit.Before; |
| import org.junit.Test; |
| |
| public class RowHeaderSelectionTest { |
| |
| private GridLayerFixture gridLayer; |
| |
| @Before |
| public void setUp() { |
| this.gridLayer = new GridLayerFixture(); |
| this.gridLayer.doCommand(new InitializeClientAreaCommandFixture()); |
| } |
| |
| @Test |
| public void willSelectBodyCellAndShouldHaveColumnHeaderSelected() { |
| // Select body cell |
| // The row position is a grid layer position |
| this.gridLayer.doCommand(new SelectCellCommand(this.gridLayer, 2, 2, false, false)); |
| |
| // Get row header cell corresponding to the selected body cell |
| RowHeaderLayer rowHeaderLayer = this.gridLayer.getRowHeaderLayer(); |
| // The column position is 0 because it takes into account the offset of |
| // the row header |
| ILayerCell cell = rowHeaderLayer.getCellByPosition(0, 1); |
| |
| // Assert the cell is in selected state |
| assertEquals(DisplayMode.SELECT, cell.getDisplayMode()); |
| } |
| |
| @Test |
| public void shouldReturnFullySelectedStyle() { |
| // Select full column |
| this.gridLayer.doCommand(new ViewportSelectRowCommand(this.gridLayer, 1, false, false)); |
| |
| RowHeaderLayer rowHeaderLayer = this.gridLayer.getRowHeaderLayer(); |
| |
| // Since I selected using grid coordinates, the column position should |
| // be 1 rather than 2 |
| int rowPosition = this.gridLayer.localToUnderlyingRowPosition(1); |
| LabelStack labelStack = rowHeaderLayer.getConfigLabelsByPosition(0, rowPosition); |
| assertTrue(labelStack.hasLabel(SelectionStyleLabels.ROW_FULLY_SELECTED_STYLE)); |
| |
| rowPosition = this.gridLayer.localToUnderlyingRowPosition(4); |
| labelStack = rowHeaderLayer.getConfigLabelsByPosition(0, rowPosition); |
| assertFalse("Should not have returned fully selected style.", labelStack.hasLabel(SelectionStyleLabels.ROW_FULLY_SELECTED_STYLE)); |
| } |
| } |