/******************************************************************************* * Copyright (c) 2012, 2013 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.selection.command; import org.eclipse.nebula.widgets.nattable.command.AbstractMultiRowCommand; import org.eclipse.nebula.widgets.nattable.command.LayerCommandUtil; import org.eclipse.nebula.widgets.nattable.coordinate.ColumnPositionCoordinate; import org.eclipse.nebula.widgets.nattable.coordinate.RowPositionCoordinate; import org.eclipse.nebula.widgets.nattable.layer.ILayer; import org.eclipse.nebula.widgets.nattable.util.ArrayUtil; public class SelectRowsCommand extends AbstractMultiRowCommand { private ColumnPositionCoordinate columnPositionCoordinate; private final boolean withShiftMask; private final boolean withControlMask; private RowPositionCoordinate rowPositionCoordinateToMoveIntoViewport; public SelectRowsCommand(ILayer layer, int columnPosition, int rowPosition, boolean withShiftMask, boolean withControlMask) { this(layer, columnPosition, ArrayUtil.asIntArray(rowPosition), withShiftMask, withControlMask, rowPosition); } public SelectRowsCommand(ILayer layer, int columnPosition, int[] rowPositions, boolean withShiftMask, boolean withControlMask, int rowPositionToMoveIntoViewport) { super(layer, rowPositions); this.columnPositionCoordinate = new ColumnPositionCoordinate(layer, columnPosition); this.withControlMask = withControlMask; this.withShiftMask = withShiftMask; this.rowPositionCoordinateToMoveIntoViewport = new RowPositionCoordinate( layer, rowPositionToMoveIntoViewport); } protected SelectRowsCommand(SelectRowsCommand command) { super(command); this.columnPositionCoordinate = command.columnPositionCoordinate; this.withShiftMask = command.withShiftMask; this.withControlMask = command.withControlMask; this.rowPositionCoordinateToMoveIntoViewport = command.rowPositionCoordinateToMoveIntoViewport; } @Override public boolean convertToTargetLayer(ILayer targetLayer) { ColumnPositionCoordinate targetColumnPositionCoordinate = LayerCommandUtil .convertColumnPositionToTargetContext(this.columnPositionCoordinate, targetLayer); if (targetColumnPositionCoordinate != null && targetColumnPositionCoordinate.getColumnPosition() >= 0 && super.convertToTargetLayer(targetLayer)) { this.columnPositionCoordinate = targetColumnPositionCoordinate; this.rowPositionCoordinateToMoveIntoViewport = LayerCommandUtil .convertRowPositionToTargetContext( this.rowPositionCoordinateToMoveIntoViewport, targetLayer); return true; } return false; } public int getColumnPosition() { return this.columnPositionCoordinate.getColumnPosition(); } public boolean isWithShiftMask() { return this.withShiftMask; } public boolean isWithControlMask() { return this.withControlMask; } public int getRowPositionToMoveIntoViewport() { if (this.rowPositionCoordinateToMoveIntoViewport != null) { return this.rowPositionCoordinateToMoveIntoViewport.getRowPosition(); } else { return -1; } } @Override public SelectRowsCommand cloneCommand() { return new SelectRowsCommand(this); } }