// 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); } } }