private void CreateFolders() { foreach (var diffPart in Parts.Values) { var path = diffPart.Uri; // format is folder/partfilename.ext var folderEnd = path.LastIndexOf('/'); string folderPath; if (folderEnd == -1) { folderPath = string.Empty; } else { folderPath = path.Substring(0, folderEnd); } var partPath = path.Substring(folderEnd + 1, path.Length - (folderEnd + 1)); // get existing folder or create new one DiffPackageItem folder; if (!Folders.TryGetValue(folderPath, out folder)) { folder = new DiffPackageItem(this, folderPath, null); Folders.Add(folderPath, folder); } folder.AddItem(new DiffPackageItem(this, partPath, diffPart)); } }
private void treeViewFolders_MouseRightButtonUp(object sender, MouseButtonEventArgs e) { if (e.OriginalSource == null) { return; } DiffPackageItem packageItem = null; // search up the tree for the element with the data context var elt = e.OriginalSource as FrameworkElement; while (elt != null) { packageItem = elt.DataContext as DiffPackageItem; if (packageItem != null) { break; } elt = elt.Parent as FrameworkElement; } // setting IsSelected to true causes weird display issue so don't do that for now //var treeViewItem = treeViewZipFiles.ContainerFromElement(elt) as TreeViewItem; //if (treeViewItem != null) // treeViewItem.IsSelected = true; e.Handled = true; // populate and show context menu ShowTreeViewContextMenu(packageItem); }
public void AddItem(DiffPackageItem item) { if (!IsFolder()) { throw new InvalidOperationException("Can't add children to parts"); } if (m_children == null) { m_children = new Dictionary <string, DiffPackageItem>(StringComparer.OrdinalIgnoreCase); } m_children.Add(item.Path, item); }
private void ShowTreeViewContextMenu(DiffPackageItem packageItem) { if ((packageItem == null) || packageItem.IsFolder()) { return; } var contextMenu = new ContextMenu(); AddOpenWithContextMenu(contextMenu, packageItem.Part.Left, "Open Left With"); AddOpenWithContextMenu(contextMenu, packageItem.Part.Right, "Open Right With"); contextMenu.IsOpen = true; }
private void SetActivePart(DiffPackageItem packageItem) { if (packageItem.IsFolder()) { return; } // TODO: find existing tab item bool canDiff = (packageItem.Part.Left != null) ? packageItem.Part.Left.IsAnyTextType() : packageItem.Part.Right.IsAnyTextType(); if (canDiff) { var webItem = new DiffWebViewTabItem(Data, packageItem); partsTabControl.Items.Add(webItem); partsTabControl.SelectedItem = webItem; } else { // TODO } }