blob: fb33c74ee3ee3254a547c270ab899bf82814e692 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2013, 2020 Dirk Fauth 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:
* Dirk Fauth <dirk.fauth@googlemail.com> - initial API and implementation
*******************************************************************************/
package org.eclipse.nebula.widgets.nattable.reorder.command;
import org.eclipse.nebula.widgets.nattable.command.ILayerCommand;
import org.eclipse.nebula.widgets.nattable.command.LayerCommandUtil;
import org.eclipse.nebula.widgets.nattable.coordinate.RowPositionCoordinate;
import org.eclipse.nebula.widgets.nattable.layer.ILayer;
/**
* Command to start row reordering. Will transport the position of the row that
* will be reordered via dragging.
*/
public class RowReorderStartCommand implements ILayerCommand {
/**
* The coordinate of the row that should be reordered
*/
private RowPositionCoordinate fromRowPositionCoordinate;
/**
*
* @param layer
* The layer the position is related to
* @param fromRowPosition
* The position of the row that should be reordered
*/
public RowReorderStartCommand(ILayer layer, int fromRowPosition) {
this.fromRowPositionCoordinate = new RowPositionCoordinate(layer, fromRowPosition);
}
/**
* Constructor used for cloning purposes
*
* @param command
* The command which is base for the new one
*/
protected RowReorderStartCommand(RowReorderStartCommand command) {
this.fromRowPositionCoordinate = command.fromRowPositionCoordinate;
}
/**
* @return The position of the row that should be reordered
*/
public int getFromRowPosition() {
return this.fromRowPositionCoordinate.getRowPosition();
}
@Override
public boolean convertToTargetLayer(ILayer targetLayer) {
RowPositionCoordinate targetFromRowPositionCoordinate =
LayerCommandUtil.convertRowPositionToTargetContext(this.fromRowPositionCoordinate, targetLayer);
if (targetFromRowPositionCoordinate != null) {
this.fromRowPositionCoordinate = targetFromRowPositionCoordinate;
return true;
} else {
return false;
}
}
@Override
public RowReorderStartCommand cloneCommand() {
return new RowReorderStartCommand(this);
}
}