/// <summary> /// Validate command executed. /// </summary> protected override void OnValidateCommandExecuted() { if (this.SelectedItemViewModel == null) { return; } using (new ToolFramework.Modeling.Visualization.ViewModel.UI.WaitCursor()) { // clear error list this.EventManager.GetEvent <ErrorListClearItems>().Publish(this); List <IValidationMessage> messages = this.ModelData.CurrentModelContext.Validate(this.SelectedItemViewModel.Element); List <BaseErrorListItemViewModel> items = new List <BaseErrorListItemViewModel>(); foreach (IValidationMessage message in messages) { if (message is ModelValidationMessage) { ModelErrorListItemViewModel item = new ModelErrorListItemViewModel(this.ViewModelStore, message as ModelValidationMessage); items.Add(item); } else if (message is ValidationMessage) { StringErrorListItemViewModel item = new StringErrorListItemViewModel(this.ViewModelStore, message.MessageId, ModelErrorListItemViewModel.ConvertCategory(message.Type), message.Description); items.Add(item); } } // notify of change this.EventManager.GetEvent <ErrorListAddItems>().Publish(items); } }
/// <summary> /// Document loaded. /// </summary> public override void OnDocumentLoaded() { base.OnDocumentLoaded(); // clear current error list this.EventManager.GetEvent <ErrorListClearItems>().Publish(this); List <BaseErrorListItemViewModel> items = new List <BaseErrorListItemViewModel>(); if (this.SelectedModelContextViewModel.ModelContext.SerializationResult.Count() > 0) { // add serialization result items foreach (SerializationMessage serializationMessage in this.SelectedModelContextViewModel.ModelContext.SerializationResult) { SerializationErrorListItemViewModel item = new SerializationErrorListItemViewModel(this.ViewModelStore, serializationMessage); items.Add(item); } } if (this.SelectedModelContextViewModel.ModelContext.ValidationResult.Count > 0) { foreach (IValidationMessage message in this.SelectedModelContextViewModel.ModelContext.ValidationResult) { if (message is ModelValidationMessage) { ModelErrorListItemViewModel item = new ModelErrorListItemViewModel(this.ViewModelStore, message as ModelValidationMessage); items.Add(item); } else if (message is ValidationMessage) { StringErrorListItemViewModel item = new StringErrorListItemViewModel(this.ViewModelStore, message.MessageId, ModelErrorListItemViewModel.ConvertCategory(message.Type), message.Description); items.Add(item); } } } // notify of change if (items.Count > 0) { this.EventManager.GetEvent <ErrorListAddItems>().Publish(items); } }
/// <summary> /// Paste command executed. /// </summary> public virtual void OnPasteCommandExecuted() { using (new WaitCursor()) { try { ValidationResult result = CopyAndPasteOperations.ExecutePaste(this.Element); if (result != null) { List <BaseErrorListItemViewModel> errors = new List <BaseErrorListItemViewModel>(); foreach (IValidationMessage msg in result) { errors.Add(new StringErrorListItemViewModel(this.ViewModelStore, msg.MessageId, ModelErrorListItemViewModel.ConvertCategory(msg.Type), msg.Description)); } if (errors.Count > 0) { // clear error list this.EventManager.GetEvent <ErrorListClearItems>().Publish(this); // notify of change this.EventManager.GetEvent <ErrorListAddItems>().Publish(errors); } } } catch (System.Exception ex) { this.GlobalServiceProvider.Resolve <IMessageBoxService>().ShowError("Pasting failed: " + ex.Message); } } }
/// <summary> /// Assigns the property value to the property of every source element. /// </summary> /// <param name="value">Property value to be assigned.</param> public override void SetPropertyValue(object value) { // empty string values are treated as null... Html html = value as Html; if (html != null) { if (html.HtmlData.Trim() == string.Empty) { html = null; } } using (Transaction transaction = this.Store.TransactionManager.BeginTransaction("Update property value - " + this.PropertyName)) { PropertyGridEditorViewModel.SetPropertyValues(this.Elements, this.PropertyName, value); transaction.Commit(); } // handle errors if (html != null) { if (html.ValidationResult.Count() > 0) { // clear current error list this.EventManager.GetEvent <ErrorListClearItems>().Publish(this); // add serialization result items List <BaseErrorListItemViewModel> items = new List <BaseErrorListItemViewModel>(); foreach (IValidationMessage validationmessage in html.ValidationResult) { StringErrorListItemViewModel item = new StringErrorListItemViewModel(this.ViewModelStore, validationmessage.MessageId, ModelErrorListItemViewModel.ConvertCategory(validationmessage.Type), validationmessage.Description); items.Add(item); } // notify of change this.EventManager.GetEvent <ErrorListAddItems>().Publish(items); } } }
/// <summary> /// Open model. /// </summary> /// <param name="fileName">File to open.</param> public virtual void OpenModel(string fileName) { if (this.SelectedModelContextViewModel == null) { return; } if (this.SelectedModelContextViewModel.ModelContext == null) { return; } if (CloseModelCommandCanExecute()) { if (!CloseModelCommandExecute()) { return; } } if (this.Ribbon != null) { this.Ribbon.IsBackstageOpen = false; } if (!System.IO.File.Exists(fileName)) { IMessageBoxService messageBox = this.GlobalServiceProvider.Resolve <IMessageBoxService>(); messageBox.ShowError("File does not exists: " + fileName); return; } // LOAD model in background thread // in main UI thread, load avalondock // --> wait on ui thread for model load to finish... /*if (!this.isInitialyInitialized) * { #region MT-Load * PleaseWaitHelper.Show(); * * loadingModelEvent.Reset(); * * this.ViewModelStore.InLoad = true; * this.Reset(); * * System.ComponentModel.BackgroundWorker loadModel = new System.ComponentModel.BackgroundWorker(); * loadModel.DoWork += new System.ComponentModel.DoWorkEventHandler(loadModel_DoWork); * loadModel.RunWorkerAsync(fileName); * * this.Initialize(); * this.loadingModelEvent.WaitOne(); * * // add to mru list * this.MRUFilesViewModel.AddMRUEntry(fileName); * * // clear current error list * this.EventManager.GetEvent<ErrorListClearItems>().Publish(this); * * List<BaseErrorListItemViewModel> items = new List<BaseErrorListItemViewModel>(); * if (this.SelectedModelContextViewModel.ModelContext.SerializationResult.Count() > 0) * { * // add serialization result items * * foreach (SerializationMessage serializationMessage in this.SelectedModelContextViewModel.ModelContext.SerializationResult) * { * SerializationErrorListItemViewModel item = new SerializationErrorListItemViewModel(this.ViewModelStore, serializationMessage); * items.Add(item); * } * } * * if (this.SelectedModelContextViewModel.ModelContext.ValidationResult.Count > 0) * { * foreach (IValidationMessage message in this.SelectedModelContextViewModel.ModelContext.ValidationResult) * { * if (message is ModelValidationMessage) * { * ModelErrorListItemViewModel item = new ModelErrorListItemViewModel(this.ViewModelStore, message as ModelValidationMessage); * items.Add(item); * } * else if (message is ValidationMessage) * { * StringErrorListItemViewModel item = new StringErrorListItemViewModel(this.ViewModelStore, message.MessageId, ModelErrorListItemViewModel.ConvertCategory(message.Type), message.Description); * items.Add(item); * } * } * } * * this.ViewModelStore.InLoad = false; * * // Open views based on the configuration in the layout manager * if (this.LayoutManager != null) * if (this.LayoutManager.ConfigurationManager != null) * foreach (string paneName in this.LayoutManager.CurrentConfiguration.Configurations.Keys) * { * DockingPaneConfiguration paneConfig = this.LayoutManager.CurrentConfiguration.Configurations[paneName]; * if (paneConfig.IsRestorable && paneConfig.RestoreInformation != null && paneConfig.DockingPaneType != null) * { * if (!this.LayoutManager.HasWindow(paneConfig.PaneName)) * { * // create new modal window * BaseDiagramSurfaceViewModel vm = this.ViewModelStore.TopMostStore.Factory.CreateRestorableViewModel(paneConfig.DockingPaneType); * if (vm != null && vm is IRestorableDockableViewModel) * { * if ((vm as IRestorableDockableViewModel).Restore(paneConfig.RestoreInformation)) * { * OpenViewModelEventArgs args = new OpenViewModelEventArgs(vm); * args.DockingPaneStyle = PDE.ToolFramework.Modeling.Visualization.ViewModel.DockingPaneStyle.DockedInDocumentPane; * this.EventManager.GetEvent<OpenViewModelEvent>().Publish(args); * } * else * { * vm.Dispose(); * } * } * } * } * * * // notify of change * if (items.Count > 0) * this.EventManager.GetEvent<ErrorListAddItems>().Publish(items); * } * * PleaseWaitHelper.Hide(); #endregion * } * else * {*/ #region Normal Load using (new ToolFramework.Modeling.Visualization.ViewModel.UI.WaitCursor()) { this.ViewModelStore.InLoad = true; this.Reset(); this.SelectedModelContextViewModel.ModelContext.Load(fileName, false); // add to mru list this.MRUFilesViewModel.AddMRUEntry(fileName); // clear current error list this.EventManager.GetEvent <ErrorListClearItems>().Publish(this); List <BaseErrorListItemViewModel> items = new List <BaseErrorListItemViewModel>(); if (this.SelectedModelContextViewModel.ModelContext.SerializationResult.Count() > 0) { // add serialization result items foreach (SerializationMessage serializationMessage in this.SelectedModelContextViewModel.ModelContext.SerializationResult) { SerializationErrorListItemViewModel item = new SerializationErrorListItemViewModel(this.ViewModelStore, serializationMessage); items.Add(item); } } if (this.SelectedModelContextViewModel.ModelContext.ValidationResult.Count > 0) { foreach (IValidationMessage message in this.SelectedModelContextViewModel.ModelContext.ValidationResult) { if (message is ModelValidationMessage) { ModelErrorListItemViewModel item = new ModelErrorListItemViewModel(this.ViewModelStore, message as ModelValidationMessage); items.Add(item); } else if (message is ValidationMessage) { StringErrorListItemViewModel item = new StringErrorListItemViewModel(this.ViewModelStore, message.MessageId, ModelErrorListItemViewModel.ConvertCategory(message.Type), message.Description); items.Add(item); } } } this.ViewModelStore.InLoad = false; // Open views based on the configuration in the layout manager if (this.LayoutManager != null) { if (this.LayoutManager.ConfigurationManager != null) { foreach (string paneName in this.LayoutManager.CurrentConfiguration.Configurations.Keys) { DockingPaneConfiguration paneConfig = this.LayoutManager.CurrentConfiguration.Configurations[paneName]; if (paneConfig.IsRestorable && paneConfig.RestoreInformation != null && paneConfig.DockingPaneType != null) { if (!this.LayoutManager.HasWindow(paneConfig.PaneName)) { // create new modal window BaseDiagramSurfaceViewModel vm = this.ViewModelStore.TopMostStore.Factory.CreateRestorableViewModel(paneConfig.DockingPaneType); if (vm != null && vm is IRestorableDockableViewModel) { if ((vm as IRestorableDockableViewModel).Restore(paneConfig.RestoreInformation)) { OpenViewModelEventArgs args = new OpenViewModelEventArgs(vm); args.DockingPaneStyle = PDE.ToolFramework.Modeling.Visualization.ViewModel.DockingPaneStyle.DockedInDocumentPane; this.EventManager.GetEvent <OpenViewModelEvent>().Publish(args); } else { vm.Dispose(); } } } } } } } // notify of change if (items.Count > 0) { this.EventManager.GetEvent <ErrorListAddItems>().Publish(items); } } #endregion //} }