/// <summary> /// Helper for avoiding refresh if Window is ICancellable and Cancelled /// </summary> /// <param name="window"></param> private void SetFilter(Window window) { if (window is ICancellable && ((ICancellable)window).Cancelled) { return; } SetFilter(SelectedNode == null? null : SelectedNode.GetData()); }
private void DeleteSelected() { try { if (SelectedNode == null) { MessageBoxFactory.ShowError("No item selected"); return; } INodeData parent = null; if (SelectedNode.IsBook) { Book bk = (Book)SelectedNode.GetData(); if (!MessageBoxFactory.ShowConfirmAsBool("Delete book and all notes for '" + bk.Title + "'?", "Delete Book")) { return; } parent = bk.DefaultTopic; Util.DB.Books.Remove(bk); } else if (SelectedNode.IsNote) { Note n = (Note)SelectedNode.GetData(); if (!MessageBoxFactory.ShowConfirmAsBool("Delete " + n.OriginalText + "'?", "Delete Note")) { return; } parent = n.Book; Util.DB.Notes.Remove(n); } else if (SelectedNode.IsTopic) { Util.DB.Topics.Remove((Topic)SelectedNode.GetData()); } else { throw new Exception("Type not supported: " + SelectedNode.GetDataType()); } Util.DB.SaveChanges(); SetFilter(parent); } catch (Exception e) { Util.DB.RejectChanges(); MessageBoxFactory.ShowError(e); } }