public ContentFolderViewModel(ContentFolder model, ContentFolderViewModel parent, IMessenger messenger)
            : base(messenger)
        {
            this.model = model;

            Parent = parent;
            Children = new ObservableCollection<ContentFolderViewModel>();
            Children.Add(dummyChild);

            CreateSubFolderCommand = new RelayCommand(CreateSubFolder, () => IsSelected);
            DeleteCommand = new RelayCommand(Delete, () => IsSelected);
        }
        public ContentFileViewModel(ContentFile model, ContentFolderViewModel parent, IMessenger messenger)
            : base(messenger)
        {
            this.model = model;
            Parent = parent;
            IsAsset = (model.Asset != null);

            EditCommand = new RelayCommand(Edit);
            ViewCommand = new RelayCommand(View, () => IsAsset);
            DeleteCommand = new RelayCommand(Delete);
            RegisterAsAssetCommand = new RelayCommand(RegisterAsAsset, () => !IsAsset);
            EditAssetCommand = new RelayCommand(EditAsset, () => IsAsset);
            UnregisterAsAssetCommand = new RelayCommand(UnregisterAsAsset, () => IsAsset);
        }
        void CreateProject()
        {
            // プロジェクトが既に開かれていて、変更があるならば、保存を促します。
            PromptSaveProject();

            var message = new NewProjectMessage();

            Messenger.Send(message);
            if (message.Result != true) return;

            var fileName = message.ProjectName + ".contentproj";
            var path = Path.Combine(message.DirectoryPath, fileName);

            // プロジェクトが既に開かれているならば、それを閉じます。
            CloseProject();

            Model.NewProject(path);

            CurrentFolder = new ContentFolderViewModel(Model.RootFolder, null, Messenger);
            RootFolders.Add(CurrentFolder);

            // 展開状態に設定します。
            CurrentFolder.IsExpanded = true;
            // 選択状態に設定します。
            CurrentFolder.IsSelected = true;

            // タイトルに選択したプロジェクト ファイル名を設定します。
            Title = Path.GetFileName(Model.Project.FullPath) + " - Content Studio";
        }
        public void OpenProject(string path)
        {
            // プロジェクトが既に開かれているならば、それを閉じます。
            // 同一プロジェクトを選択した場合にはロード状態の衝突が発生するため、
            // 選択したプロジェクトを開く前に既存のプロジェクトを閉じます。
            CloseProject();

            // プロジェクトを開きます。
            Model.OpenProject(path);

            CurrentFolder = new ContentFolderViewModel(Model.RootFolder, null, Messenger);
            RootFolders.Add(CurrentFolder);

            // 展開状態に設定します。
            CurrentFolder.IsExpanded = true;
            // 選択状態に設定します。
            CurrentFolder.IsSelected = true;

            // タイトルに選択したプロジェクト ファイル名を設定します。
            Title = Path.GetFileName(Model.Project.FullPath) + " - Content Studio";
        }