// Copyright (C) Stichting Deltares 2016. All rights reserved.
//
// This file is part of Ringtoets.
//
// Ringtoets is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program 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 General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see .
//
// All names, logos, and references to "Deltares" are registered trademarks of
// Stichting Deltares and remain full property of Stichting Deltares at all times.
// All rights reserved.
using System;
using System.Windows.Forms;
using Application.Ringtoets.Properties;
using Core.Common.Controls.Dialogs;
using Core.Common.Gui.Commands;
namespace Application.Ringtoets
{
///
/// Class for showing an exception dialog.
/// The exception dialog can return the following results:
///
/// -
/// : this result represents a request for restarting the application.
///
/// -
/// : this result represents a request for closing the application.
///
///
///
public partial class ExceptionDialog : DialogBase
{
private readonly ICommandsOwner commands;
private Action openLogClicked;
///
/// Constructs a new .
///
/// The owner of the dialog.
/// The commands available in the application.
/// The exception to show in the dialog.
public ExceptionDialog(IWin32Window dialogParent, ICommandsOwner commands, Exception exception) : base(dialogParent, Resources.bug__exclamation, 470, 200)
{
this.commands = commands;
InitializeComponent();
buttonOpenLog.Enabled = false;
exceptionTextBox.Text = exception == null ? "" : exception.ToString();
}
///
/// Gets or sets the action that should be performed after clicking the log button.
///
/// The log button is only enabled when this action is set.
public Action OpenLogClicked
{
private get
{
return openLogClicked;
}
set
{
openLogClicked = value;
buttonOpenLog.Enabled = openLogClicked != null;
}
}
protected override Button GetCancelButton()
{
return buttonExit;
}
private void ButtonRestartClick(object sender, EventArgs e)
{
DialogResult = DialogResult.OK;
Close();
}
private void ButtonExitClick(object sender, EventArgs e)
{
DialogResult = DialogResult.Cancel;
Close();
}
private void ButtonCopyTextToClipboardClick(object sender, EventArgs e)
{
Clipboard.SetDataObject(exceptionTextBox.Text, true);
}
private void ButtonOpenLogClick(object sender, EventArgs e)
{
OpenLogClicked();
}
private void ButtonSaveProjectClick(object sender, EventArgs e)
{
bool saved;
try
{
saved = commands.StorageCommands.SaveProjectAs();
}
catch (Exception)
{
saved = false;
}
ShowMessageDialog(
saved ? Resources.ExceptionDialog_ButtonSaveProjectClick_Succesfully_saved_project : Resources.ExceptionDialog_ButtonSaveProjectClick_Saving_project_failed,
saved ? Resources.ExceptionDialog_ButtonSaveProjectClick_Succesfully_saved_project_caption : Resources.ExceptionDialog_ButtonSaveProjectClick_Saving_project_failed_caption);
}
private void ShowMessageDialog(string message, string caption)
{
MessageBox.Show(message, caption, MessageBoxButtons.OK);
}
}
}