void Save(ILItem item, string prefix = "") { prefix += item.DisplayName; if (item == _selectedItem) { Selection = prefix; } if (item.Children.Count > 0) { if (item.IsExpanded) { Expanded.Add(prefix); } else { Collapsed.Add(prefix); return; } prefix += "."; foreach (var child in item.Children) { Save(child, prefix); } } }
void Restore(ILItem item, ref bool hasSelection, string prefix = "") { prefix += item.DisplayName; if (prefix == Selection) { item.Select(); hasSelection = true; } if (item.Children.Count > 0) { if (Expanded.Contains(prefix)) { item.IsExpanded = true; } else if (Collapsed.Contains(prefix)) { item.IsExpanded = false; return; } prefix += "."; foreach (var child in item.Children) { Restore(child, ref hasSelection, prefix); } } }
static ContextMenu GetContextMenu(ILItem ilItem) { var menu = new ContextMenu(); if (ilItem == null) { return(menu); } foreach (var command in ILItem.Commands) { if (command == null) { if (menu.Items.Count > 0 && !(menu.Items[menu.Items.Count - 1] is Separator)) { menu.Items.Add(new Separator()); } } else if (command.CanShow(ilItem)) { var menuItem = new MenuItem { Header = command.Header, Icon = new Image { Source = ILIconConverter.GetBitmapImage(command.GetIcon(ilItem)), Stretch = Stretch.Fill, Width = 16, Height = 16 }, IsEnabled = command.CanExecute(ilItem), FontWeight = command.IsDefault(ilItem) ? FontWeights.Bold : FontWeights.Normal }; menuItem.Click += (sender, args) => command.Execute(ilItem); menu.Items.Add(menuItem); } } if (menu.Items.Count > 0 && menu.Items[menu.Items.Count - 1] is Separator) { menu.Items.RemoveAt(menu.Items.Count - 1); } if (menu.Items.Count == 0) { menu.Items.Add(new MenuItem { Header = "(no commands)", IsEnabled = false }); } return(menu); }
public TreeState(TreeView view) { _selectedItem = (ILItem)view.SelectedItem; foreach (var _item in view.Items) { Save((ILItem)_item); } }
static void DoubleClick(ILItem ilItem) { if (ilItem == null) { return; } foreach (var command in ILItem.Commands) { if (command != null && command.CanShow(ilItem) && command.IsDefault(ilItem) && command.CanExecute(ilItem)) { command.Execute(ilItem); return; } } }
public virtual bool CanExecute(ILItem item) { return(CanShow(item)); }
public virtual bool CanShow(ILItem item) { return(true); }
public virtual bool IsDefault(ILItem item) { return(false); }
public override void Execute(ILItem item) { var file = (IFile)item; Process.Start("explorer.exe", (Directory.Exists(file.FullName) ? null : "/select,") + file.FullName.QuoteSpace()); }
public override bool CanExecute(ILItem item) { var file = (IFile)item; return(Directory.Exists(file.FullName) || File.Exists(file.FullName)); }
public override bool IsDefault(ILItem item) { return(item.GetVisibleChildCount() == 0); }
public override void Execute(ILItem item) { var file = (IFile)item; Process.Start("rundll32.exe", "shell32.dll, OpenAs_RunDLL " + file.FullName.QuoteSpace()); }
public override bool CanShow(ILItem item) { return(PlatformDetection.IsWindows && item is IFile && !(item is FolderBase)); }
public override ILIcon GetIcon(ILItem item) { return(item.Icon); }
public abstract void Execute(ILItem item);
public virtual ILIcon GetIcon(ILItem item) { return(0); }
public override ILIcon GetIcon(ILItem item) { return(ILIcon.FolderOpen); }
public override bool CanShow(ILItem item) { return(PlatformDetection.IsWindows && item is IFile); }
public override void Execute(ILItem item) { var file = (IFile)item; Clipboard.SetText(file.FullName); }