示例#1
0
        protected override void OnMouseUp(MouseButtonEventArgs e)
        {
            if (sourceItem != null)
            {
                ModelTreeViewModel vm = this.diagramDesigner.DataContext as ModelTreeViewModel;
                if (sourceItem.SelectedData is TreeNodeViewModel)
                {
                    if ((sourceItem.SelectedData as TreeNodeViewModel).Element is DomainClass)
                    {
                        List <DomainClass> domainClassesSrc = new List <DomainClass>();
                        domainClassesSrc.Add((sourceItem.SelectedData as TreeNodeViewModel).Element as DomainClass);

                        bool bDone = false;
                        if (hitItem != null)
                        {
                            if (hitItem.SelectedData is TreeNodeViewModel)
                            {
                                if ((hitItem.SelectedData as TreeNodeViewModel).Element is DomainClass)
                                {
                                    bDone = true;

                                    // reference or embedding?
                                    if (Keyboard.Modifiers == ModifierKeys.Shift)
                                    {
                                        ModelTreeOperations.AddNewEmbeddingRelationship(domainClassesSrc, (hitItem.SelectedData as TreeNodeViewModel).Element as DomainClass);
                                    }
                                    else if (Keyboard.Modifiers == ModifierKeys.Control)
                                    {
                                        ModelTreeOperations.AddNewReferenceRelationship(domainClassesSrc, (hitItem.SelectedData as TreeNodeViewModel).Element as DomainClass);
                                    }
                                    else
                                    {
                                        Forms.RelationshipTypeSelector dlg = new Forms.RelationshipTypeSelector();
                                        if (dlg.ShowDialog() == true)
                                        {
                                            if (dlg.EmbeddedRelationshipSelected == true)
                                            {
                                                ModelTreeOperations.AddNewEmbeddingRelationship(domainClassesSrc, (hitItem.SelectedData as TreeNodeViewModel).Element as DomainClass);
                                            }
                                            else if (dlg.EmbeddedRelationshipSelected == false)
                                            {
                                                ModelTreeOperations.AddNewReferenceRelationship(domainClassesSrc, (hitItem.SelectedData as TreeNodeViewModel).Element as DomainClass);
                                            }
                                        }
                                    }
                                }
                            }
                        }

                        if (!bDone)
                        {
                            ModelTreeOperations.AddNewEmbeddingRelationship(domainClassesSrc);
                        }
                    }
                }
            }


            if (this.IsMouseCaptured)
            {
                this.ReleaseMouseCapture();
            }

            AdornerLayer adornerLayer = AdornerLayer.GetAdornerLayer(this.diagramDesigner);

            if (adornerLayer != null)
            {
                adornerLayer.Remove(this);
            }
        }
示例#2
0
        /// <summary>
        /// Constuctor.
        /// </summary>
        /// <param name="viewModelStore">The store this view model belongs to.</param>
        public ModelContextViewModel(ViewModelStore viewModelStore, BaseModelContext baseModelContext, bool isLocked)
            : base(viewModelStore)
        {
            this.modelContext = baseModelContext;

            this.copyCommand              = new DelegateCommand(CopyCommand_Executed, CopyCommand_CanExecute);
            this.pasteCommand             = new DelegateCommand(PasteCommand_Executed, PasteCommand_CanExecute);
            this.copyAllTreeCommand       = new DelegateCommand(CopyAllTreeCommand_Executed, CopyAllTreeCommand_CanExecute);
            this.copyEmbeddingTreeCommand = new DelegateCommand(CopyEmbeddingTreeCommand_Executed, CopyAllTreeCommand_CanExecute);
            this.copyReferenceTreeCommand = new DelegateCommand(CopyReferenceTreeCommand_Executed, CopyAllTreeCommand_CanExecute);
            //this.cutCommand = new DelegateCommand(CutCommand_Executed, CutCommand_CanExecute);
            this.optimizeCommand = new DelegateCommand(OptimizeCommand_Executed);

            if (baseModelContext is ModelContext)
            {
                ModelContext modelContext = baseModelContext as ModelContext;

                this.modelTreeViewModel          = new ModelTreeViewModel(viewModelStore, this, modelContext.ViewContext.DomainModelTreeView);
                this.modelTreeViewModel.IsLocked = isLocked;
                this.diagramViewModel            = new DiagramViewModel(viewModelStore, this, modelContext.ViewContext.DiagramView);
                this.serializationViewModel      = new SerializationViewModel(viewModelStore, modelContext.SerializationModel);

                this.modelContextType = ModelContextViewType.ModelContext;
            }
            else if (baseModelContext is ExternModelContext)
            {
                ExternModelContext modelContext = baseModelContext as ExternModelContext;
                if (modelContext.ModelContext != null)
                {
                    this.AddModelContext(modelContext.ModelContext);
                }

                this.EventManager.GetEvent <ModelElementLinkAddedEvent>().Subscribe(this.Store.DomainDataDirectory.GetDomainRelationship(ExternModelContextReferencesModelContext.DomainClassId),
                                                                                    true, this.modelContext.Id, new System.Action <ElementAddedEventArgs>(OnModelContextAdded));
                this.EventManager.GetEvent <ModelElementLinkDeletedEvent>().Subscribe(this.Store.DomainDataDirectory.GetDomainRelationship(ExternModelContextReferencesModelContext.DomainClassId),
                                                                                      true, this.modelContext.Id, new System.Action <ElementDeletedEventArgs>(OnModelContextRemoved));
                this.EventManager.GetEvent <ModelRolePlayerChangedEvent>().Subscribe(this.Store.DomainDataDirectory.GetDomainRole(ExternModelContextReferencesModelContext.ExternModelContextDomainRoleId),
                                                                                     new System.Action <RolePlayerChangedEventArgs>(OnModelContextChanged));
                this.EventManager.GetEvent <ModelRolePlayerChangedEvent>().Subscribe(this.Store.DomainDataDirectory.GetDomainRole(ExternModelContextReferencesModelContext.ModelContextDomainRoleId),
                                                                                     new System.Action <RolePlayerChangedEventArgs>(OnModelContextChanged));

                this.modelContextType = ModelContextViewType.ExternModelContext;
            }
            else if (baseModelContext is LibraryModelContext)
            {
                LibraryModelContext modelContext = baseModelContext as LibraryModelContext;
                this.modelTreeViewModel          = new ModelTreeViewModel(viewModelStore, this, modelContext.ViewContext.DomainModelTreeView);
                this.modelTreeViewModel.IsLocked = isLocked;
                this.diagramViewModel            = new DiagramViewModel(viewModelStore, this, modelContext.ViewContext.DiagramView);
                this.modelContextType            = ModelContextViewType.LibraryContext;
                this.serializationViewModel      = new SerializationViewModel(viewModelStore, modelContext.SerializationModel);
            }

            this.selectedItem = this.ModelTreeViewModel;

            if (this.ModelContext != null)
            {
                this.EventManager.GetEvent <ModelElementPropertyChangedEvent>().Subscribe(
                    this.Store.DomainDataDirectory.GetDomainProperty(BaseModelContext.NameDomainPropertyId), this.ModelContext.Id, new System.Action <ElementPropertyChangedEventArgs>(NamePropertyChanged));
            }
        }
示例#3
0
 /// <summary>
 /// Constuctor.
 /// </summary>
 /// <param name="viewModelStore">The store this view model belongs to.</param>
 /// <param name="rootNode">Root node.</param>
 /// <param name="parent">Parent.</param>
 public RootNodeViewModel(ViewModelStore viewModelStore, RootNode rootNode, ModelTreeViewModel parent)
     : base(viewModelStore, rootNode, null)
 {
     this.parentVM = parent;
 }