void TreeLessonsDragOver(object sender, DragEventArgs e) { e.Effect = DragDropEffects.None; if (!e.Data.GetDataPresent(typeof(Word))) { return; } TreeNode node = treeLessons.GetNodeAt(treeLessons.PointToClient(new Point(e.X, e.Y))); if (node == null) { return; } TreeNodeColumn column = node as TreeNodeColumn; if (column == null || column.Tag == null) { return; } Word dragObject = (Word)e.Data.GetData(typeof(Word)); lessonUnderMouseToDrop = (Lesson)column.Tag; if (dragObject.Entry.Lesson.Id == lessonUnderMouseToDrop.Id) { return; } e.Effect = DragDropEffects.Move; }
protected override void Run() { treeLessons.BeginUpdate(); try { treeLessons.Nodes.Clear(); TreeNodeColumn root = new TreeNodeColumn(Strings.Lessons); treeLessons.Nodes.Add(root); using (ISession session = DataHelper.OpenSession()) { IList <Lesson> lessons = session.QueryOver <Lesson>() .Where(x => x.Theme == host.CurrentTheme).List(); foreach (Lesson lesson in lessons) { AddLessonNode(lesson); } } UpdateAllCountEntries(); treeLessons.SelectedNode = treeLessons.Nodes[0]; treeLessons.Nodes[0].Expand(); } finally { treeLessons.EndUpdate(); } ShowWindow(host.Workbench, DockState.DockLeft); }
void TreeWordTypesDragOver(object sender, DragEventArgs e) { e.Effect = DragDropEffects.None; if (!e.Data.GetDataPresent(typeof(Word))) { return; } TreeNode node = treeWordTypes.GetNodeAt(treeWordTypes.PointToClient(new Point(e.X, e.Y))); if (node == null) { return; } TreeNodeColumn column = node as TreeNodeColumn; if (column == null || column.Tag == null) { return; } Word dragObject = (Word)e.Data.GetData(typeof(Word)); wordTypeUnderMouseToDrop = (WordType)column.Tag; if (dragObject.WordType.Id == wordTypeUnderMouseToDrop.Id) { return; } e.Effect = DragDropEffects.Link; }
void UpdateCountEntries(WordType wordType = null) { using (ISession session = DataHelper.OpenSession()) { using (ITransaction transaction = session.BeginTransaction()) { Word w = null; Lesson l = null; IQueryOver <Word, WordType> words = session.QueryOver <Word>(() => w) .JoinQueryOver(pr => pr.Entry) .JoinQueryOver(pr => pr.Lesson, () => l) .Where(() => l.Theme == host.CurrentTheme) .JoinQueryOver(pr => w.WordType); if (wordType != null) { words.And(() => w.WordType == wordType); } int count = words.RowCount(); TreeNodeColumn node = wordType == null ? (TreeNodeColumn)treeWordTypes.Nodes[0] : GetNode(treeWordTypes.Nodes[0].Nodes, wordType); node.FarText = count.ToString(); } } }
void AddLessonNode(Lesson lesson) { TreeNodeColumn node = new TreeNodeColumn(lesson.Name); node.Tag = lesson; node.FarText = "0"; treeLessons.Nodes[0].Nodes.Add(node); }
TreeNode AddWordTypeNode(TreeNodeCollection nodes, WordType wordType) { TreeNodeColumn node = new TreeNodeColumn(wordType.Name) { Tag = wordType }; nodes.Add(node); UpdateCountEntries(wordType); return(node); }
TreeNodeColumn GetNode(TreeNodeCollection nodes, WordType wordType) { TreeNodeColumn result = null; foreach (TreeNodeColumn node in nodes) { if (((WordType)node.Tag).Id == wordType.Id) { result = node; break; } result = GetNode(node.Nodes, wordType); if (result != null) { break; } } return(result); }
protected override void Run() { treeWordTypes.BeginUpdate(); try { treeWordTypes.Nodes.Clear(); TreeNodeColumn root = new TreeNodeColumn(Strings.WordTypes); treeWordTypes.Nodes.Add(root); UpdateCountEntries(); CreateWordTypeNodes(treeWordTypes.Nodes[0].Nodes); treeWordTypes.SelectedNode = treeWordTypes.Nodes[0]; treeWordTypes.Nodes[0].ExpandAll(); } finally { treeWordTypes.EndUpdate(); } ShowWindow(host.Workbench, DockState.DockLeft); }