public ProjectManagerViewModel(BaseViewModel parent)
            : base(parent)
        {
            Config = new Config.ConfigViewModel(this);

            Project = new ProjectViewModel(this);
            Project.FileRequested += Project_FileRequested;
            Project.SelectionChanged += Project_SelectionChanged;
            Project.FileCreated += Project_FileCreated;
            Project.ReferenceAdded += Project_ReferenceAdded;
            Project.FileDeleted += Project_FileDeleted;
            Project.ProjectCreated += Project_ProjectCreated;
            Project.ProjectOpened += Project_ProjectOpened;
            Project.ProjectClosed += Project_ProjectClosed;

            Blueprint = new BlueprintViewModel(this);
            Blueprint.InsertRequested += Blueprint_InsertRequested;

            Editor = new EditorViewModel(this);
            Editor.FileChanged += Editor_FileChanged;
            Editor.Items.CollectionChanged += Editor_CollectionChanged;

            Classes = new ClassViewModel(this);
            BuildClasses();

            Output = new OutputViewModel(this);

            Backup = new BackupViewModel(this);
            Backup.RestoreRequested += Backup_RestoreRequested;

            FindReplace = new FindReplaceViewModel(this);

            _NewProjectCommand = new Commands.DelegateCommand(PerformNewProject);
            _OpenProjectCommand = new Commands.DelegateCommand(PerformOpenProject);
            _CloseProjectCommand = new Commands.DelegateCommand(PerformCloseProject);

            _SaveFileCommand = new Commands.DelegateCommand(PerformSaveFile);
            _SaveAllCommand = new Commands.DelegateCommand(PerformSaveAll);

            _RunScriptCommand = new Commands.DelegateCommand(PerformRunScript);
            _OpenSelectedCommand = new Commands.DelegateCommand(PerformOpenSelected);

            _CloseFileCommand = new Commands.DelegateCommand(PerformCloseFile);
            _CloseAllCommand = new Commands.DelegateCommand(PerformCloseAll);

            _UndoCommand = new Commands.DelegateCommand(PerformUndo);
            _RedoCommand = new Commands.DelegateCommand(PerformRedo);
            _CutCommand = new Commands.DelegateCommand(PerformCut);
            _CopyCommand = new Commands.DelegateCommand(PerformCopy);
            _PasteCommand = new Commands.DelegateCommand(PerformPaste);
            _DeleteCommand = new Commands.DelegateCommand(PerformDelete);
            _SelectAllCommand = new Commands.DelegateCommand(PerformSelectAll);

            _CloseViewCommand = new Commands.DelegateCommand(PerformCloseView);
        }
        public ProjectManagerViewModel(BaseViewModel parent) : base(parent)
        {
            Config = new Config.ConfigViewModel(this);

            Project = new ProjectViewModel(this);
            Project.FileRequested    += Project_FileRequested;
            Project.SelectionChanged += Project_SelectionChanged;
            Project.FileCreated      += Project_FileCreated;
            Project.ReferenceAdded   += Project_ReferenceAdded;
            Project.FileDeleted      += Project_FileDeleted;
            Project.ProjectCreated   += Project_ProjectCreated;
            Project.ProjectOpened    += Project_ProjectOpened;
            Project.ProjectClosed    += Project_ProjectClosed;

            Blueprint = new BlueprintViewModel(this);
            Blueprint.InsertRequested += Blueprint_InsertRequested;

            Editor                          = new EditorViewModel(this);
            Editor.FileChanged             += Editor_FileChanged;
            Editor.Items.CollectionChanged += Editor_CollectionChanged;

            Classes = new ClassViewModel(this);
            BuildClasses();

            Output = new OutputViewModel(this);

            Backup = new BackupViewModel(this);
            Backup.RestoreRequested += Backup_RestoreRequested;

            FindReplace = new FindReplaceViewModel(this);

            _NewProjectCommand   = new Commands.DelegateCommand(PerformNewProject);
            _OpenProjectCommand  = new Commands.DelegateCommand(PerformOpenProject);
            _CloseProjectCommand = new Commands.DelegateCommand(PerformCloseProject);

            _SaveFileCommand = new Commands.DelegateCommand(PerformSaveFile);
            _SaveAllCommand  = new Commands.DelegateCommand(PerformSaveAll);

            _RunScriptCommand    = new Commands.DelegateCommand(PerformRunScript);
            _OpenSelectedCommand = new Commands.DelegateCommand(PerformOpenSelected);

            _CloseFileCommand = new Commands.DelegateCommand(PerformCloseFile);
            _CloseAllCommand  = new Commands.DelegateCommand(PerformCloseAll);

            _UndoCommand      = new Commands.DelegateCommand(PerformUndo);
            _RedoCommand      = new Commands.DelegateCommand(PerformRedo);
            _CutCommand       = new Commands.DelegateCommand(PerformCut);
            _CopyCommand      = new Commands.DelegateCommand(PerformCopy);
            _PasteCommand     = new Commands.DelegateCommand(PerformPaste);
            _DeleteCommand    = new Commands.DelegateCommand(PerformDelete);
            _SelectAllCommand = new Commands.DelegateCommand(PerformSelectAll);

            _CloseViewCommand = new Commands.DelegateCommand(PerformCloseView);
        }