diff -r 000000000000 -r 818e61de6cd1 crashanalysercmd/Libraries/Engine/CrashItemLib/Crash/Messages/CIMessage.cs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/crashanalysercmd/Libraries/Engine/CrashItemLib/Crash/Messages/CIMessage.cs Thu Feb 11 15:50:58 2010 +0200 @@ -0,0 +1,264 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ +using System; +using System.Text; +using System.IO; +using System.Drawing; +using System.Collections.Generic; +using CrashItemLib.Crash; +using CrashItemLib.Crash.Base; +using CrashItemLib.Crash.Base.DataBinding; +using CrashItemLib.Crash.Processes; +using CrashItemLib.Crash.Container; +using System.ComponentModel; +using SymbianUtils.Range; +using SymbianStructuresLib.Uids; +using SymbianUtils.DataBuffer; + +namespace CrashItemLib.Crash.Messages +{ + [CIDBAttributeColumn( "Type", 0 )] + [CIDBAttributeColumn( "Overview", 1, true )] + public class CIMessage : CIElement, IEnumerable + { + #region Enumerations + public enum TType + { + [Description( "Warning" )] + ETypeWarning = 0, + + [Description( "Error" )] + ETypeError, + + [Description( "Message" )] + ETypeMessage, + + [Description( "Other" )] + ETypeOther + } + #endregion + + #region Static constructors + public static CIMessage NewMessage( CIContainer aContainer ) + { + CIMessage ret = new CIMessage( aContainer ); + ret.Type = TType.ETypeMessage; + return ret; + } + + internal static CIMessage Null( CIContainer aContainer ) + { + CIMessage ret = new CIMessage( aContainer ); + ret.Type = TType.ETypeOther; + return ret; + } + #endregion + + #region Constructors + protected CIMessage( CIContainer aContainer ) + : this( aContainer, string.Empty ) + { + } + + protected CIMessage( CIContainer aContainer, string aTitle ) + : base( aContainer ) + { + iTitle = aTitle; + } + #endregion + + #region API + public override void Clear() + { + base.Clear(); + iLines.Clear(); + } + + public void SetLine( string aLine ) + { + iLines.Clear(); + iLines.Add( aLine ); + } + + public void SetLineFormatted( string aFormat, params object[] aArgs ) + { + string line = string.Format( aFormat, aArgs ); + SetLine( line ); + } + + public void AddLine( string aLine ) + { + using ( StringReader reader = new StringReader( aLine ) ) + { + string line = reader.ReadLine(); + while ( line != null ) + { + iLines.Add( line ); + line = reader.ReadLine(); + } + } + } + + public void AddLineFormatted( string aFormat, params object[] aArgs ) + { + string line = string.Format( aFormat, aArgs ); + AddLine( line ); + } + + public static string TypeToString( TType aType ) + { + return SymbianUtils.Enum.EnumUtils.ToString( aType ); + } + #endregion + + #region Properties + public override string Name + { + get { return Title; } + set { Title = value; } + } + + [Base.DataBinding.CIDBAttributeCell( "Title", 1 )] + public string Title + { + get { return iTitle; } + set { iTitle = value; } + } + + public string Description + { + get { return ToString(); } + set + { + List lines = new List(); + // + using ( StringReader reader = new StringReader( value ) ) + { + string line = reader.ReadLine(); + while ( line != null ) + { + lines.Add( line ); + line = reader.ReadLine(); + } + } + // + iLines = lines; + } + } + + public string FullText + { + get + { + StringBuilder ret = new StringBuilder(); + // + ret.AppendLine( Title ); + ret.Append( System.Environment.NewLine ); + ret.Append( Description ); + // + return ret.ToString(); + } + } + + public TType Type + { + get { return iType; } + protected set { iType = value; } + } + + [Base.DataBinding.CIDBAttributeCell( "Type", 0 )] + public string TypeName + { + get { return TypeToString( Type ); } + } + + public virtual Font Font + { + get { return iFont; } + set { iFont = value; } + } + + public virtual Color Color + { + get { return iColor; } + set { iColor = value; } + } + + public int LineCount + { + get { return iLines.Count; } + } + #endregion + + #region Operators + public static implicit operator CIDBRow( CIMessage aMessage ) + { + CIDBRow row = new CIDBRow(); + + // To ensure that the register and cells are correctly associated + row.Element = aMessage; + + row.Add( new CIDBCell( aMessage.TypeName ) ); + row.Add( new CIDBCell( aMessage.Title ) ); + // + return row; + } + #endregion + + #region Internal methods + #endregion + + #region From System.Object + public override string ToString() + { + StringBuilder ret = new StringBuilder(); + for ( int i = 0; i < iLines.Count; i++ ) + { + ret.Append( iLines[ i ].Trim() ); + ret.Append( " " ); + } + return ret.ToString(); + } + #endregion + + #region From IEnumerable + public new IEnumerator GetEnumerator() + { + foreach ( string s in iLines ) + { + yield return s; + } + } + + System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() + { + foreach ( string s in iLines ) + { + yield return s; + } + } + #endregion + + #region Data members + private TType iType = TType.ETypeWarning; + private Font iFont = new Font( "Tahoma", 8.25f ); + private Color iColor = Color.Black; + private string iTitle = string.Empty; + private List iLines = new List(); + #endregion + } +}