/********************************************************************
* FulcrumWeb RAD Framework - Fulcrum of your business *
* Copyright (c) 2002-2009 FulcrumWeb, ALL RIGHTS RESERVED *
* *
* THE SOURCE CODE CONTAINED WITHIN THIS FILE AND ALL RELATED *
* FILES OR ANY PORTION OF ITS CONTENTS SHALL AT NO TIME BE *
* COPIED, TRANSFERRED, SOLD, DISTRIBUTED, OR OTHERWISE MADE *
* AVAILABLE TO OTHER INDIVIDUALS WITHOUT EXPRESS WRITTEN CONSENT *
* AND PERMISSION FROM FULCRUMWEB. CONSULT THE END USER LICENSE *
* AGREEMENT FOR INFORMATION ON ADDITIONAL RESTRICTIONS. *
********************************************************************/
using System;
using System.Windows;
using System.Windows.Controls;
namespace Framework.Silverlight.Client
{
/// <summary>
/// Exception Dialog window.
/// </summary>
public class CxExceptionDialog : CxMessageBox
{
private readonly CxStackTrace m_stackTrace = new CxStackTrace();
private readonly bool m_showDetails;
//----------------------------------------------------------------------------
/// <summary>
/// Initializes a new instance of the CxExceptionDialog class.
/// </summary>
public CxExceptionDialog()
{
m_showDetails = Convert.ToBoolean(CxConfig.Instance["ShowExceptionDetails"]);
if (m_showDetails)
{
m_stackTrace.SetValue(Grid.RowProperty, 2);
LayoutRoot.Children.Add(m_stackTrace);
}
}
//----------------------------------------------------------------------------
/// <summary>
/// Displays a Exception dialog with the specified Exception.
/// </summary>
/// <param name="exception">The Exception to display.</param>
public void Show(Exception exception)
{
string title = "";
NxMessageBoxIcon icon = NxMessageBoxIcon.Error;
if (m_showDetails && !(exception is ExUnderConstructionException))
{
//todo: Add multilanguage here
title = "Error";
m_stackTrace.Visibility = Visibility.Visible;
string exceptionText;
if (exception is ExWebServiceException &&
((ExWebServiceException) exception).ErrorContainer != null)
{
exceptionText = ((ExWebServiceException) exception).ErrorContainer.AsString;// CxExceptionUtils.GetExceptionFullStackTrace(originalException);
}
else
exceptionText = exception.ToString();
m_stackTrace.Text = exceptionText;
}
else
{
//todo: Add multilanguage here
title = "Under Construction";
icon = NxMessageBoxIcon.Information;
m_stackTrace.Visibility = Visibility.Collapsed;
}
Show(
exception.Message,
title,
NxDialogButtons.OK,
icon,
NxDialogDefaultButton.Button1);
}
}
}