private void HandleAction(ToolAction action) { if (!IsToolActionEnabled(action)) { return; } switch (action) { case ToolAction.ToolActionReload: GlobalReload(); break; case ToolAction.ToolActionNew: CreateNewCatalog(); break; case ToolAction.ToolActionOpen: OpenCatalog(); break; case ToolAction.ToolActionSave: if (_cat != null && _cat.IsInDefaultLocation) { goto case ToolAction.ToolActionSaveAs; } else { SaveCatalogNoDialog(); } break; case ToolAction.ToolActionSaveAs: SaveCatalogWithDialog(); break; case ToolAction.ToolActionDelete: List <string> sel = GetSelectedVPaths(); foreach (string vpath in sel) { CatalogItem item = _cat.GetByVPath(vpath); if (item != null) { if (item.IsFolder) { // Only folders in tree view tvCatalog.RemoveItem(item); } lvCatalogFolder.RemoveItem(item); item.Delete(); } } break; case ToolAction.ToolActionMerge: MergeCatalog(); break; case ToolAction.ToolActionCatalog: { Task task = null; if (_cat != null) { task = new Task(); task.CatalogPath = _cat.Path; } if (ImportWizardMain.Execute(ref task) == DialogResult.OK) { _cat = new Catalog((task as Task).CatalogPath); DisplayCatalog(); } } break; case ToolAction.ToolActionBack: ExploreBack(); break; case ToolAction.ToolActionFwd: ExploreForward(); break; case ToolAction.ToolActionUp: NavigateUp(); break; case ToolAction.ToolActionSearch: SearchWizard.Tasks.Task taskSearch = new SearchWizard.Tasks.Task(); taskSearch.Catalog = _cat; taskSearch.SearchPath = (_curFolder != null) ? _curFolder.VPath : null; if (SearchWizardMain.Execute(taskSearch) == DialogResult.OK) { switch (taskSearch.Action) { case ToolAction.ToolActionProTONEEnqueue: RunProTONEActionOnVPaths(taskSearch.MatchingItems, OPMedia.Runtime.ProTONE.RemoteControl.CommandType.EnqueueFiles); break; case ToolAction.ToolActionProTONEPlay: RunProTONEActionOnVPaths(taskSearch.MatchingItems, OPMedia.Runtime.ProTONE.RemoteControl.CommandType.PlayFiles); break; case ToolAction.ToolActionJumpToItem: if (taskSearch.MatchingItems.Count > 0) { JumpToItem(taskSearch.MatchingItems[0]); } break; case ToolAction.ToolActionDelete: foreach (string vpath in taskSearch.MatchingItems) { CatalogItem item = _cat.GetByVPath(vpath); if (item != null) { if (item.IsFolder) { // Only folders in tree view tvCatalog.RemoveItem(item); } lvCatalogFolder.RemoveItem(item); item.Delete(); } } break; } } break; case ToolAction.ToolActionProTONEEnqueue: RunProTONEActionOnVPaths(GetSelectedVPaths(), OPMedia.Runtime.ProTONE.RemoteControl.CommandType.EnqueueFiles); break; case ToolAction.ToolActionProTONEPlay: RunProTONEActionOnVPaths(GetSelectedVPaths(), OPMedia.Runtime.ProTONE.RemoteControl.CommandType.PlayFiles); break; case ToolAction.ToolActionRename: lvCatalogFolder.Rename(); break; } }