Exemplo n.º 1
0
        public dynWorkspaceViewModel(dynWorkspaceModel model, DynamoViewModel vm)
        {
            _model = model;

            var nodesColl = new CollectionContainer {
                Collection = Nodes
            };

            WorkspaceElements.Add(nodesColl);

            var connColl = new CollectionContainer {
                Collection = Connectors
            };

            WorkspaceElements.Add(connColl);

            var notesColl = new CollectionContainer {
                Collection = Notes
            };

            WorkspaceElements.Add(notesColl);

            //respond to collection changes on the model by creating new view models
            //currently, view models are added for notes and nodes
            //connector view models are added during connection
            _model.Nodes.CollectionChanged      += Nodes_CollectionChanged;
            _model.Notes.CollectionChanged      += Notes_CollectionChanged;
            _model.Connectors.CollectionChanged += Connectors_CollectionChanged;
            _model.PropertyChanged += ModelPropertyChanged;

            HideCommand                   = new DelegateCommand <object>(Hide, CanHide);
            CrossSelectCommand            = new DelegateCommand <object>(CrossingSelect, CanCrossSelect);
            ContainSelectCommand          = new DelegateCommand <object>(ContainSelect, CanContainSelect);
            SetCurrentOffsetCommand       = new DelegateCommand <object>(SetCurrentOffset, CanSetCurrentOffset);
            NodeFromSelectionCommand      = new DelegateCommand(CreateNodeFromSelection, CanCreateNodeFromSelection);
            SetZoomCommand                = new DelegateCommand <object>(SetZoom, CanSetZoom);
            FindByIdCommand               = new DelegateCommand <object>(FindById, CanFindById);
            AlignSelectedCommand          = new DelegateCommand <string>(AlignSelected, CanAlignSelected);
            SelectAllCommand              = new DelegateCommand(SelectAll, CanSelectAll);
            FindNodesFromSelectionCommand = new DelegateCommand(FindNodesFromSelection, CanFindNodesFromSelection);

            DynamoSelection.Instance.Selection.CollectionChanged += NodeFromSelectionCanExecuteChanged;

            // sync collections
            Nodes_CollectionChanged(null, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, _model.Nodes));
            Connectors_CollectionChanged(null, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, _model.Connectors));
            Notes_CollectionChanged(null, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, _model.Notes));
        }
Exemplo n.º 2
0
        public WorkspaceViewModel(WorkspaceModel model, DynamoViewModel dynamoViewModel)
        {
            this.DynamoViewModel = dynamoViewModel;
            Model        = model;
            stateMachine = new StateMachine(this);

            var nodesColl = new CollectionContainer {
                Collection = Nodes
            };

            WorkspaceElements.Add(nodesColl);

            var connColl = new CollectionContainer {
                Collection = Connectors
            };

            WorkspaceElements.Add(connColl);

            var notesColl = new CollectionContainer {
                Collection = Notes
            };

            WorkspaceElements.Add(notesColl);

            var errorsColl = new CollectionContainer {
                Collection = Errors
            };

            WorkspaceElements.Add(errorsColl);

            var annotationsColl = new CollectionContainer {
                Collection = Annotations
            };

            WorkspaceElements.Add(annotationsColl);

            //respond to collection changes on the model by creating new view models
            //currently, view models are added for notes and nodes
            //connector view models are added during connection

            Model.NodeAdded    += Model_NodeAdded;
            Model.NodeRemoved  += Model_NodeRemoved;
            Model.NodesCleared += Model_NodesCleared;

            Model.NoteAdded    += Model_NoteAdded;
            Model.NoteRemoved  += Model_NoteRemoved;
            Model.NotesCleared += Model_NotesCleared;

            Model.AnnotationAdded    += Model_AnnotationAdded;
            Model.AnnotationRemoved  += Model_AnnotationRemoved;
            Model.AnnotationsCleared += Model_AnnotationsCleared;

            Model.ConnectorAdded        += Connectors_ConnectorAdded;
            Model.ConnectorDeleted      += Connectors_ConnectorDeleted;
            Model.PropertyChanged       += ModelPropertyChanged;
            Model.PopulateJSONWorkspace += Model_PopulateJSONWorkspace;

            DynamoSelection.Instance.Selection.CollectionChanged += RefreshViewOnSelectionChange;

            DynamoViewModel.CopyCommand.CanExecuteChanged  += CopyPasteChanged;
            DynamoViewModel.PasteCommand.CanExecuteChanged += CopyPasteChanged;

            // sync collections

            foreach (NodeModel node in Model.Nodes)
            {
                Model_NodeAdded(node);
            }
            foreach (NoteModel note in Model.Notes)
            {
                Model_NoteAdded(note);
            }
            foreach (AnnotationModel annotation in Model.Annotations)
            {
                Model_AnnotationAdded(annotation);
            }
            foreach (ConnectorModel connector in Model.Connectors)
            {
                Connectors_ConnectorAdded(connector);
            }

            InCanvasSearchViewModel         = new SearchViewModel(DynamoViewModel);
            InCanvasSearchViewModel.Visible = true;
        }