//######################################################################################### //★★★★★★★ http://www.cnpopsoft.com [华普软件] ★★★★★★★ //★★★★★★★ 华普软件 - VB & C#.NET 专业论文与源码荟萃! ★★★★★★★ //######################################################################################### /* * Copyright ?2005, Mathew Hall * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, * are permitted provided that the following conditions are met: * * - Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * - Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. */ using System; using System.Collections; using System.Windows.Forms; using XPTable.Models; namespace XPTable.Sorting { /// /// Base class for comparers used to sort the Cells contained in a TableModel /// public abstract class ComparerBase : IComparer { #region Class Data /// /// The TableModel that contains the Cells to be sorted /// private TableModel tableModel; /// /// The index of the Column to be sorted /// private int column; /// /// Specifies how the Column is to be sorted /// private SortOrder sortOrder; #endregion #region Constructor /// /// Initializes a new instance of the ComparerBase class with the specified /// TableModel, Column index and SortOrder /// /// The TableModel that contains the data to be sorted /// The index of the Column to be sorted /// Specifies how the Column is to be sorted public ComparerBase(TableModel tableModel, int column, SortOrder sortOrder) { this.tableModel = tableModel; this.column = column; this.sortOrder = sortOrder; } #endregion #region Methods /// /// Compares two objects and returns a value indicating whether one is less /// than, equal to or greater than the other /// /// First object to compare /// Second object to compare /// -1 if a is less than b, 1 if a is greater than b, or 0 if a equals b public abstract int Compare(object a, object b); #endregion #region Properties /// /// Gets the TableModel that contains the Cells to be sorted /// public TableModel TableModel { get { return this.tableModel; } } /// /// Gets the index of the Column to be sorted /// public int SortColumn { get { return this.column; } } /// /// Gets how the Column is to be sorted /// public SortOrder SortOrder { get { return this.sortOrder; } } #endregion } }