Index: src/DeltaShell/DeltaShell.Plugins.ProjectExplorer/ProjectExplorer.cs =================================================================== diff -u -r2ace0d3a03d5bf9e372a9c1032f996488fe2c4eb -r5fc71a385897af92ccb092f2f969b5709afab85a --- src/DeltaShell/DeltaShell.Plugins.ProjectExplorer/ProjectExplorer.cs (.../ProjectExplorer.cs) (revision 2ace0d3a03d5bf9e372a9c1032f996488fe2c4eb) +++ src/DeltaShell/DeltaShell.Plugins.ProjectExplorer/ProjectExplorer.cs (.../ProjectExplorer.cs) (revision 5fc71a385897af92ccb092f2f969b5709afab85a) @@ -13,7 +13,6 @@ public partial class ProjectExplorer : UserControl, IProjectExplorer { private static readonly ILog log = LogManager.GetLogger(typeof(ProjectExplorer)); - private ProjectTreeView projectTreeView; private IGui gui; public ProjectExplorer() @@ -26,69 +25,75 @@ gui = guiPlugin.Gui; InitializeComponent(); - projectTreeView = new ProjectTreeView(guiPlugin) { Dock = DockStyle.Fill }; - projectTreeView.TreeView.BeforeWaitUntilAllEventsAreProcessed += TreeViewOnBeforeWaitUntilAllEventsAreProcessed; - treeViewPanel.Controls.Add(projectTreeView); + ProjectTreeView = new ProjectTreeView(guiPlugin) + { + Dock = DockStyle.Fill + }; + ProjectTreeView.TreeView.BeforeWaitUntilAllEventsAreProcessed += TreeViewOnBeforeWaitUntilAllEventsAreProcessed; + treeViewPanel.Controls.Add(ProjectTreeView); gui.DocumentViews.ActiveViewChanged += DocumentViewsActiveViewChanged; } - public new void Dispose() + public ProjectTreeView ProjectTreeView { get; private set; } + + public ITreeView TreeView { - projectTreeView.Data = null; - if (gui != null && gui.DocumentViews != null) + get { - gui.DocumentViews.ActiveViewChanged -= DocumentViewsActiveViewChanged; + return ProjectTreeView.TreeView; } - gui = null; - - projectTreeView.TreeView.BeforeWaitUntilAllEventsAreProcessed -= TreeViewOnBeforeWaitUntilAllEventsAreProcessed; - projectTreeView.Dispose(); - base.Dispose(); } - private void TreeViewOnBeforeWaitUntilAllEventsAreProcessed() + public object Data { - if (!gui.MainWindow.Visible) + get { - // fail fast, this error indicates that the code (usually test) interacts with gui not in showAction - throw new InvalidOperationException(Resources.ProjectExplorer_TreeViewOnBeforeWaitUntilAllEventsAreProcessed_MainWindow_must_be_visible_when_WaitUntilAllEventsAreProcessed_is_called_on_project_tree_view_); + return ProjectTreeView.Data; } + set + { + ProjectTreeView.Data = value; + } } - public ITreeView TreeView { get { return projectTreeView.TreeView; } } - - public IMenuItem GetContextMenu(ITreeNode sender, object o) + public Image Image { get; set; } + public ViewInfo ViewInfo { get; set; } + + public void EndWaitMode() { - return ProjectTreeView.GetContextMenu(o); + ProjectTreeView.EnableEvents(); } - public ProjectTreeView ProjectTreeView { get { return projectTreeView; } } - - void DocumentViewsActiveViewChanged(object sender, ActiveViewChangeEventArgs e) + public void BeginWaitMode() { - buttonScrollToItemInActiveView.Enabled = gui.DocumentViews.ActiveView != null && - gui.CommandHandler.GetProjectItemForActiveView() != null; + ProjectTreeView.DisableEvents(); } - private void ButtonScrollToItemInActiveViewClick(object sender, EventArgs e) + public new void Dispose() { - var activeViewProjectItem = gui.CommandHandler.GetProjectItemForActiveView(); - - if(activeViewProjectItem != null) + ProjectTreeView.Data = null; + if (gui != null && gui.DocumentViews != null) { - ScrollTo(activeViewProjectItem); - return; + gui.DocumentViews.ActiveViewChanged -= DocumentViewsActiveViewChanged; } + gui = null; - log.WarnFormat(Resources.ProjectExplorer_ButtonScrollToItemInActiveViewClick_Can_t_find_project_item_for_view_data___0_, gui.DocumentViews.ActiveView.Data); + ProjectTreeView.TreeView.BeforeWaitUntilAllEventsAreProcessed -= TreeViewOnBeforeWaitUntilAllEventsAreProcessed; + ProjectTreeView.Dispose(); + base.Dispose(); } + public IMenuItem GetContextMenu(ITreeNode sender, object o) + { + return ProjectTreeView.GetContextMenu(o); + } + public void ScrollTo(IProjectItem projectItem) { var nodeToSelect = TreeView.GetNodeByTag(projectItem); - if(nodeToSelect == null) + if (nodeToSelect == null) { log.DebugFormat(Resources.ProjectExplorer_ScrollTo_Can_t_find_tree_node_for_item___0_, projectItem); return; @@ -97,24 +102,34 @@ TreeView.SelectedNode = nodeToSelect; } - public object Data + public void EnsureVisible(object item) {} + + private void TreeViewOnBeforeWaitUntilAllEventsAreProcessed() { - get { return ProjectTreeView.Data; } - set { ProjectTreeView.Data = value; } + if (!gui.MainWindow.Visible) + { + // fail fast, this error indicates that the code (usually test) interacts with gui not in showAction + throw new InvalidOperationException(Resources.ProjectExplorer_TreeViewOnBeforeWaitUntilAllEventsAreProcessed_MainWindow_must_be_visible_when_WaitUntilAllEventsAreProcessed_is_called_on_project_tree_view_); + } } - public Image Image { get; set; } - public void EnsureVisible(object item) { } - public ViewInfo ViewInfo { get; set; } - - public void EndWaitMode() + private void DocumentViewsActiveViewChanged(object sender, ActiveViewChangeEventArgs e) { - ProjectTreeView.EnableEvents(); + buttonScrollToItemInActiveView.Enabled = gui.DocumentViews.ActiveView != null && + gui.CommandHandler.GetProjectItemForActiveView() != null; } - public void BeginWaitMode() + private void ButtonScrollToItemInActiveViewClick(object sender, EventArgs e) { - ProjectTreeView.DisableEvents(); + var activeViewProjectItem = gui.CommandHandler.GetProjectItemForActiveView(); + + if (activeViewProjectItem != null) + { + ScrollTo(activeViewProjectItem); + return; + } + + log.WarnFormat(Resources.ProjectExplorer_ButtonScrollToItemInActiveViewClick_Can_t_find_project_item_for_view_data___0_, gui.DocumentViews.ActiveView.Data); } } -} +} \ No newline at end of file