Beispiel #1
0
        // ---------------------------------------------------------------------------------------------------------------------------------------------------------
        /// <summary>
        /// Stops and discards this composition engine, closing and freeing its related entities, views and resources.
        /// Returns indication of discard executed or aborted (maybe due to cancellation by unsaved changes).
        /// </summary>
        public bool Stop(bool ForceDiscard = false)
        {
            base.Stop();

            // Stop watching any possible temp-files for Attachments being edited.
            DetailAttachmentEditor.StopWatchingAttachmentsFor(this);

            // Discard clipboard transfer content
            if (ClipboardTransferSourceView != null &&
                ClipboardTransferSourceView.OwnerCompositeContainer.OwnerComposition == this.TargetComposition)
            {
                ClipboardTransferSelectedObjects.Clear();
            }

            // Discards the visual views.
            this.Visualizer.DiscardAllViews();

            // Discards remembered for-edit objects
            Definitor.DefinitorMaintenance.DomainMaintainer.RememberedTemplateTestConcept.Remove(this.TargetComposition);
            Definitor.DefinitorMaintenance.DomainMaintainer.RememberedTemplateTestRelationship.Remove(this.TargetComposition);

            // PENDING: Free resources, if any.
            this.EntityChanged -= this.ExistenceUpdateAction;

            return(this.ExistenceStatus != EExistenceStatus.Modified);
        }
Beispiel #2
0
        /// <summary>
        /// Tries to close any pending resources still open (such as temporal Attachment files)
        /// </summary>
        public bool CloseRelatedResources(CompositionEngine Engine)
        {
            var Failure = DetailAttachmentEditor.TryLoadPendingAttachmentsFor(Engine);

            if (Failure == null)
            {
                return(true);
            }

            var Result = Display.DialogMessage("Error!",
                                               Failure.Message + "\n\nProblem: " + Failure.InnerException.Message + "\n\n" +
                                               "Do you want to ignore that problem and continue (potentially lossing information)?",
                                               EMessageType.Question,
                                               System.Windows.MessageBoxButton.OKCancel, System.Windows.MessageBoxResult.Cancel);

            return(Result == MessageBoxResult.OK);
        }