Exemplo n.º 1
0
        /// <summary>
        /// Saves the given file.
        /// </summary>
        protected override void Save(string fileName)
        {
            DslModeling::SerializationResult serializationResult = new DslModeling::SerializationResult();

            global::Altinoren.ActiveWriter.Model modelRoot = (global::Altinoren.ActiveWriter.Model) this.RootElement;


            global::System.Collections.Generic.IList <DslDiagrams::PresentationElement> diagrams = DslDiagrams::PresentationViewsSubject.GetPresentation(this.RootElement);
            if (diagrams.Count > 0)
            {
                global::Altinoren.ActiveWriter.ActiveRecordMapping diagram = diagrams[0] as global::Altinoren.ActiveWriter.ActiveRecordMapping;
                if (diagram != null)
                {
                    string diagramFileName = fileName + this.DiagramExtension;

                    try
                    {
                        this.SuspendFileChangeNotification(diagramFileName);

                        global::Altinoren.ActiveWriter.ActiveWriterSerializationHelper.Instance.SaveModelAndDiagram(serializationResult, modelRoot, fileName, diagram, diagramFileName, this.Encoding, false);
                        if (!serializationResult.Failed)
                        {
                            // fileName != this.FileName is false in the case of Save As.  Allow OnFileNameChanged() below to handle this case.
                            if (global::System.StringComparer.OrdinalIgnoreCase.Compare(fileName, this.FileName) == 0 && global::System.IO.File.Exists(diagramFileName))
                            {
                                DslShell::SubordinateFileHelper.EnsureChildProjectItem(this.Hierarchy, this.ItemId, diagramFileName);
                            }
                        }
                    }
                    finally
                    {
                        this.ResumeFileChangeNotification(diagramFileName);
                    }
                }
            }
            if (!serializationResult.Failed)
            {
                global::Altinoren.ActiveWriter.ActiveWriterSerializationHelper.Instance.SaveModel(serializationResult, modelRoot, fileName, this.Encoding, false);
            }
            // Report serialization messages.
            this.SuspendErrorListRefresh();
            try
            {
                foreach (DslModeling::SerializationMessage serializationMessage in serializationResult)
                {
                    this.AddErrorListItem(new DslShell::SerializationErrorListItem(this.ServiceProvider, serializationMessage));
                }
            }
            finally
            {
                this.ResumeErrorListRefresh();
            }

            if (serializationResult.Failed)
            {                   // Save failed.
                throw new global::System.InvalidOperationException(global::Altinoren.ActiveWriter.ActiveWriterDomainModel.SingletonResourceManager.GetString("CannotSaveDocument"));
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Called on both document load and reload.
        /// </summary>
        protected virtual void OnDocumentLoaded()
        {
            // Validate the document
            this.ValidationController.Validate(this.Store, DslValidation::ValidationCategories.Open);

            // Enable CompartmentItems events.
            global::Altinoren.ActiveWriter.Model modelRoot = this.RootElement as global::Altinoren.ActiveWriter.Model;
            if (modelRoot != null)
            {
                global::System.Collections.Generic.IList <DslDiagrams::PresentationElement> diagrams = DslDiagrams::PresentationViewsSubject.GetPresentation(modelRoot);
                if (diagrams.Count > 0)
                {
                    global::Altinoren.ActiveWriter.ActiveRecordMapping diagram = diagrams[0] as global::Altinoren.ActiveWriter.ActiveRecordMapping;
                    if (diagram != null)
                    {
                        diagram.SubscribeCompartmentItemsEvents();
                    }
                }
            }
        }