/******************************************************************************* * Copyright (c) 2012, 2014 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 * Dirk Fauth <dirk.fauth@googlemail.com> - Bug 454909 ******************************************************************************/ package org.eclipse.nebula.widgets.nattable.sort.command; import org.eclipse.nebula.widgets.nattable.command.AbstractColumnCommand; import org.eclipse.nebula.widgets.nattable.layer.ILayer; import org.eclipse.nebula.widgets.nattable.sort.SortDirectionEnum; import org.eclipse.nebula.widgets.nattable.sort.SortHeaderLayer; /** * Command to trigger sorting. * * @see SortHeaderLayer * @see SortCommandHandler */ public class SortColumnCommand extends AbstractColumnCommand { private boolean accumulate; private SortDirectionEnum sortDirection; /** * Create a {@link SortColumnCommand} that triggers sorting for replacing an * existing sort state (no accumulate) without specifying a sort direction. * * @param layer * The layer to which the column position belongs. * @param columnPosition * The position of the column for which the sorting should be * applied. */ public SortColumnCommand(ILayer layer, int columnPosition) { this(layer, columnPosition, false, null); } /** * Create a {@link SortColumnCommand} that triggers sorting without * specifying a sort direction. * * @param layer * The layer to which the column position belongs. * @param columnPosition * The position of the column for which the sorting should be * applied. * @param accumulate * <code>true</code> if the sorting should be accumulated to an * already applied sorting, <code>false</code> if the sorting * should replace an existing sorting. */ public SortColumnCommand(ILayer layer, int columnPosition, boolean accumulate) { this(layer, columnPosition, accumulate, null); } /** * Create a {@link SortColumnCommand} that triggers sorting for replacing an * existing sort state (no accumulate). * * @param layer * The layer to which the column position belongs. * @param columnPosition * The position of the column for which the sorting should be * applied. */ public SortColumnCommand(ILayer layer, int columnPosition, SortDirectionEnum sortDirection) { this(layer, columnPosition, false, sortDirection); } /** * * @param layer * The layer to which the column position belongs. * @param columnPosition * The position of the column for which the sorting should be * applied. * @param accumulate * <code>true</code> if the sorting should be accumulated to an * already applied sorting, <code>false</code> if the sorting * should replace an existing sorting. * @param sortDirection * The sort direction that should be used for sorting. Can be * <code>null</code> which means that the sort direction will be * used that is calculated by the ISortModel for the given * column. */ public SortColumnCommand(ILayer layer, int columnPosition, boolean accumulate, SortDirectionEnum sortDirection) { super(layer, columnPosition); this.accumulate = accumulate; this.sortDirection = sortDirection; } /** * Constructor that is used to clone a command. * * @param command * The command instance that should be cloned. */ protected SortColumnCommand(SortColumnCommand command) { super(command); this.accumulate = command.accumulate; this.sortDirection = command.sortDirection; } /** * * @return <code>true</code> if the sorting should be accumulated to an * already applied sorting, <code>false</code> if the sorting should * replace an existing sorting. */ public boolean isAccumulate() { return this.accumulate; } /** * * @return The sort direction that should be used for sorting. Can be * <code>null</code> which means that the sort direction will be * used that is calculated by the ISortModel for the given column. */ public SortDirectionEnum getSortDirection() { return this.sortDirection; } @Override public SortColumnCommand cloneCommand() { return new SortColumnCommand(this); } }