コード例 #1
0
        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));
            }
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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;
        }
コード例 #5
0
        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
            }
        }