// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under MIT X11 license (for details please see \doc\license.txt)
using System;
using System.Collections.Generic;
using ICSharpCode.TreeView;
namespace ICSharpCode.ILSpy
{
///
/// Stores the navigation history.
///
sealed class NavigationHistory
{
List back = new List();
List forward = new List();
public bool CanNavigateBack {
get { return back.Count > 0; }
}
public bool CanNavigateForward {
get { return forward.Count > 0; }
}
public SharpTreeNode GoBack(SharpTreeNode oldNode)
{
if (oldNode != null)
forward.Add(oldNode);
SharpTreeNode node = back[back.Count - 1];
back.RemoveAt(back.Count - 1);
return node;
}
public SharpTreeNode GoForward(SharpTreeNode oldNode)
{
if (oldNode != null)
back.Add(oldNode);
SharpTreeNode node = forward[forward.Count - 1];
forward.RemoveAt(forward.Count - 1);
return node;
}
public void RemoveAll(Predicate predicate)
{
back.RemoveAll(predicate);
forward.RemoveAll(predicate);
}
public void Clear()
{
back.Clear();
forward.Clear();
}
public void Record(SharpTreeNode node)
{
forward.Clear();
back.Add(node);
}
}
}