//============================================================================ //PointPairList Class //Copyright ?2006 John Champion // //This library is free software; you can redistribute it and/or //modify it under the terms of the GNU Lesser General Public //License as published by the Free Software Foundation; either //version 2.1 of the License, or (at your option) any later version. // //This library is distributed in the hope that it will be useful, //but WITHOUT ANY WARRANTY; without even the implied warranty of //MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU //Lesser General Public License for more details. // //You should have received a copy of the GNU Lesser General Public //License along with this library; if not, write to the Free Software //Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA //============================================================================= using System; using System.Drawing; using System.Collections.Generic; namespace DrawGraph { /// /// A collection class containing a list of objects /// that define the set of points to be displayed on the curve. /// /// /// John Champion based on code by Jerry Vos /// $Revision: 3.4 $ $Date: 2007/02/18 05:51:54 $ [Serializable] public class StockPointList : List, IPointList, IPointListEdit { #region Properties /// /// Indexer to access the specified object by /// its ordinal position in the list. /// /// The ordinal position (zero-based) of the /// object to be accessed. /// A object reference. public new PointPair this[int index] { get { return base[index]; } set { base[index] = new StockPt( value ); } } #endregion #region Constructors /// /// Default constructor for the collection class /// public StockPointList() { } /// /// The Copy Constructor /// /// The StockPointList from which to copy public StockPointList( StockPointList rhs ) { for ( int i = 0; i < rhs.Count; i++ ) { StockPt pt = new StockPt( rhs[i] ); this.Add( pt ); } } /// /// Implement the interface in a typesafe manner by just /// calling the typed version of /// /// A deep copy of this object object ICloneable.Clone() { return this.Clone(); } /// /// Typesafe, deep-copy clone method. /// /// A new, independent copy of this class public StockPointList Clone() { return new StockPointList( this ); } #endregion #region Methods /// /// Add a object to the collection at the end of the list. /// /// The object to /// be added new public void Add( StockPt point ) { base.Add( new StockPt( point ) ); } /// /// Add a object to the collection at the end of the list. /// /// The object to be added public void Add( PointPair point ) { // throw new ArgumentException( "Error: Only the StockPt type can be added to StockPointList" + // ". An ordinary PointPair is not allowed" ); base.Add( new StockPt( point ) ); } /// /// Add a object to the collection at the end of the list using /// the specified values. The unspecified values (low, open, close) are all set to /// . /// /// An value /// The high value for the day /// The zero-based ordinal index where the point was added in the list. public void Add( double date, double high ) { Add( new StockPt( date, high, PointPair.Missing, PointPair.Missing, PointPair.Missing, PointPair.Missing ) ); } /// /// Add a single point to the from values of type double. /// /// An value /// The high value for the day /// The low value for the day /// The opening value for the day /// The closing value for the day /// The trading volume for the day /// The zero-based ordinal index where the point was added in the list. public void Add( double date, double high, double low, double open, double close, double vol ) { StockPt point = new StockPt( date, high, low, open, close, vol ); Add( point ); } /// /// Access the at the specified ordinal index. /// /// /// To be compatible with the interface, the /// must implement an index that returns a /// rather than a . This method /// will return the actual at the specified position. /// /// The ordinal position (zero-based) in the list /// The specified . /// public StockPt GetAt( int index ) { return base[index]; } #endregion } }