/// <inheritdoc/> public override bool UIKeyPressed(KeyInfo key) { if (key == null) throw new ArgumentNullException("key"); switch (key.VirtualKeyCode) { case KeyCode.LeftArrow: { if (!key.Is() && !key.IsAlt() || Far.Api.CommandLine.Length > 0) break; FarFile file = CurrentFile; if (file == null) break; TreeFile node = (TreeFile)file; if (node._State == 1) { // reset if (key.IsAlt()) { node.ChildFiles.Clear(); node._State = 0; UpdateRedraw(false); return true; } // collapse OpenFile(file); } else if (node.Parent != null) { PostFile(node.Parent); Redraw(); } return true; } case KeyCode.RightArrow: { if (!key.Is() && !key.IsAlt() || Far.Api.CommandLine.Length > 0) break; FarFile file = CurrentFile; if (file == null) break; TreeFile node = (TreeFile)file; if (node != null && node._State != 1 && node.IsNode) { // reset if (key.IsAlt()) { node.ChildFiles.Clear(); node._State = 0; } // open OpenFile(file); } else { // go to next Redraw(CurrentIndex + 1, -1); } return true; } } // base return base.UIKeyPressed(key); }