示例#1
0
        private void RecordModels(UndoRedoRecorder recorder)
        {
            if (model.InPorts.Count == 0)
            {
                return;
            }

            var connectors = model.InPorts.Last().Connectors;

            if (connectors.Count != 0)
            {
                if (connectors.Count != 1)
                {
                    throw new InvalidOperationException(
                              "There should be only one connection to an input port");
                }
                var models = new Dictionary <ModelBase, UndoRedoRecorder.UserAction>
                {
                    { connectors[0], UndoRedoRecorder.UserAction.Deletion },
                    { model, UndoRedoRecorder.UserAction.Modification }
                };
                WorkspaceModel.RecordModelsForUndo(models, recorder);
            }
            else
            {
                WorkspaceModel.RecordModelForModification(model, recorder);
            }
        }
        private void RecordUndoModels(WorkspaceModel workspace, List <ModelBase> undoItems, List <ModelBase> deletedItems)
        {
            var userActionDictionary = new Dictionary <ModelBase, UndoRedoRecorder.UserAction>();

            //Add models that were newly created
            foreach (var undoItem in undoItems)
            {
                userActionDictionary.Add(undoItem, UndoRedoRecorder.UserAction.Creation);
            }
            //Add models that were newly deleted
            foreach (var deletedItem in deletedItems)
            {
                userActionDictionary.Add(deletedItem, UndoRedoRecorder.UserAction.Deletion);
            }
            WorkspaceModel.RecordModelsForUndo(userActionDictionary, workspace.UndoRecorder);
        }