Skip to content

Commit 841ab81

Browse files
committed
Use window visibililty settings on startup.
1 parent eee2ecb commit 841ab81

11 files changed

+76
-21
lines changed

RetailCoder.VBE/Settings/WindowSettings.cs

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,11 @@
11
using System.Xml.Serialization;
2+
using Rubberduck.Properties;
3+
using Rubberduck.UI;
4+
using Rubberduck.UI.CodeExplorer;
5+
using Rubberduck.UI.Inspections;
6+
using Rubberduck.UI.SourceControl;
7+
using Rubberduck.UI.ToDoItems;
8+
using Rubberduck.UI.UnitTesting;
29

310
namespace Rubberduck.Settings
411
{
@@ -9,6 +16,8 @@ public interface IWindowSettings
916
bool SourceControlVisibleOnStartup { get; set; }
1017
bool TestExplorerVisibleOnStartup { get; set; }
1118
bool TodoExplorerVisibleOnStartup { get; set; }
19+
20+
bool IsWindowVisible(DockableToolwindowPresenter candidate);
1221
}
1322

1423
[XmlType(AnonymousType = true)]
@@ -34,5 +43,33 @@ public WindowSettings(bool codeExplorerVisibleOnStartup, bool codeInspectionsVis
3443
public bool SourceControlVisibleOnStartup { get; set; }
3544
public bool TestExplorerVisibleOnStartup { get; set; }
3645
public bool TodoExplorerVisibleOnStartup { get; set; }
46+
47+
public bool IsWindowVisible(DockableToolwindowPresenter candidate)
48+
{
49+
//I'm sure there's a better way to do this, because this is a lazy-ass way to do it.
50+
//We're injecting into the base class, so check the derived class:
51+
if (candidate is CodeExplorerDockablePresenter)
52+
{
53+
return CodeExplorerVisibleOnStartup;
54+
}
55+
if (candidate is CodeInspectionsDockablePresenter)
56+
{
57+
return CodeInspectionsVisibleOnStartup;
58+
}
59+
if (candidate is SourceControlDockablePresenter)
60+
{
61+
return SourceControlVisibleOnStartup;
62+
}
63+
if (candidate is TestExplorerDockablePresenter)
64+
{
65+
return TestExplorerVisibleOnStartup;
66+
}
67+
if (candidate is ToDoExplorerDockablePresenter)
68+
{
69+
return TodoExplorerVisibleOnStartup;
70+
}
71+
//Oh. Hello. I have no clue who you are...
72+
return false;
73+
}
3774
}
3875
}

RetailCoder.VBE/UI/CodeExplorer/CodeExplorerDockablePresenter.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
1-
using Rubberduck.VBEditor.SafeComWrappers.Abstract;
1+
using Rubberduck.Settings;
2+
using Rubberduck.SettingsProvider;
3+
using Rubberduck.VBEditor.SafeComWrappers.Abstract;
24

35
namespace Rubberduck.UI.CodeExplorer
46
{
57
public class CodeExplorerDockablePresenter : DockableToolwindowPresenter
68
{
7-
public CodeExplorerDockablePresenter(IVBE vbe, IAddIn addIn, CodeExplorerWindow view)
8-
: base(vbe, addIn, view)
9+
public CodeExplorerDockablePresenter(IVBE vbe, IAddIn addIn, CodeExplorerWindow view, IConfigProvider<WindowSettings> settings)
10+
: base(vbe, addIn, view, settings)
911
{
1012
}
1113
}

RetailCoder.VBE/UI/Controls/SearchResultsDockablePresenter.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ namespace Rubberduck.UI.Controls
44
{
55
public class SearchResultsDockablePresenter : DockableToolwindowPresenter
66
{
7-
public SearchResultsDockablePresenter(IVBE vbe, IAddIn addin, IDockableUserControl view)
8-
: base(vbe, addin, view)
7+
public SearchResultsDockablePresenter(IVBE vbe, IAddIn addin, IDockableUserControl view)
8+
: base(vbe, addin, view, null)
99
{
1010
}
1111

RetailCoder.VBE/UI/DockableToolwindowPresenter.cs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
using System;
2+
using System.Configuration;
23
using System.Runtime.InteropServices;
34
using System.Windows.Forms;
45
using NLog;
6+
using Rubberduck.Settings;
7+
using Rubberduck.SettingsProvider;
58
using Rubberduck.VBEditor.SafeComWrappers.Abstract;
69

710
namespace Rubberduck.UI
@@ -23,13 +26,18 @@ public abstract class DockableToolwindowPresenter : IDockablePresenter, IDisposa
2326
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
2427
private readonly IWindow _window;
2528
private readonly UserControl _userControl;
29+
private readonly WindowSettings _settings; //Storing this really doesn't matter - it's only checked on startup and never persisted.
2630

27-
protected DockableToolwindowPresenter(IVBE vbe, IAddIn addin, IDockableUserControl view)
31+
protected DockableToolwindowPresenter(IVBE vbe, IAddIn addin, IDockableUserControl view, IConfigProvider<WindowSettings> settingsProvider)
2832
{
2933
_vbe = vbe;
3034
_addin = addin;
3135
Logger.Trace(string.Format("Initializing Dockable Panel ({0})", GetType().Name));
3236
_userControl = view as UserControl;
37+
if (settingsProvider != null)
38+
{
39+
_settings = settingsProvider.Create();
40+
}
3341
_window = CreateToolWindow(view);
3442
}
3543

@@ -69,7 +77,7 @@ private IWindow CreateToolWindow(IDockableUserControl control)
6977

7078
EnsureMinimumWindowSize(toolWindow);
7179

72-
toolWindow.IsVisible = false; //hide it again
80+
toolWindow.IsVisible = _settings != null && !_settings.IsWindowVisible(this);
7381

7482
userControlHost.AddUserControl(control as UserControl, new IntPtr(_vbe.MainWindow.HWnd));
7583
return toolWindow;

RetailCoder.VBE/UI/IdentifierReferences/IdentifierReferencesListDockablePresenter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ namespace Rubberduck.UI.IdentifierReferences
77
public class IdentifierReferencesListDockablePresenter : DockableToolwindowPresenter
88
{
99
public IdentifierReferencesListDockablePresenter(IVBE vbe, IAddIn addin, SimpleListControl control, Declaration target)
10-
: base(vbe, addin, control)
10+
: base(vbe, addin, control, null)
1111
{
1212
BindTarget(target);
1313
}

RetailCoder.VBE/UI/IdentifierReferences/ImplementationsListDockablePresenter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ namespace Rubberduck.UI.IdentifierReferences
99
public class ImplementationsListDockablePresenter : DockableToolwindowPresenter
1010
{
1111
public ImplementationsListDockablePresenter(IVBE vbe, IAddIn addin, IDockableUserControl control, IEnumerable<Declaration> implementations)
12-
: base(vbe, addin, control)
12+
: base(vbe, addin, control, null)
1313
{
1414
BindTarget(implementations);
1515
}

RetailCoder.VBE/UI/Inspections/CodeInspectionsDockablePresenter.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
1-
using Rubberduck.VBEditor.SafeComWrappers.Abstract;
1+
using Rubberduck.Settings;
2+
using Rubberduck.SettingsProvider;
3+
using Rubberduck.VBEditor.SafeComWrappers.Abstract;
24

35
namespace Rubberduck.UI.Inspections
46
{
57
public class CodeInspectionsDockablePresenter : DockableToolwindowPresenter
68
{
7-
public CodeInspectionsDockablePresenter(IVBE vbe, IAddIn addin, CodeInspectionsWindow window)
8-
:base(vbe, addin, window)
9+
public CodeInspectionsDockablePresenter(IVBE vbe, IAddIn addin, CodeInspectionsWindow window, IConfigProvider<WindowSettings> settings)
10+
: base(vbe, addin, window, settings)
911
{
1012
}
1113
}

RetailCoder.VBE/UI/ParserErrors/ParserErrorsPresenter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ public interface IParserErrorsPresenter
1717
public class ParserErrorsPresenter : DockableToolwindowPresenter, IParserErrorsPresenter
1818
{
1919
public ParserErrorsPresenter(IVBE vbe, IAddIn addin)
20-
: base(vbe, addin, new SimpleListControl(RubberduckUI.ParseErrors_Caption))
20+
: base(vbe, addin, new SimpleListControl(RubberduckUI.ParseErrors_Caption), null)
2121
{
2222
_source = new BindingList<ParseErrorListItem>();
2323
var control = UserControl as SimpleListControl;

RetailCoder.VBE/UI/SourceControl/SourceControlDockablePresenter.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
using System.Diagnostics;
2+
using Rubberduck.Settings;
3+
using Rubberduck.SettingsProvider;
24
using Rubberduck.VBEditor.SafeComWrappers.Abstract;
35

46
namespace Rubberduck.UI.SourceControl
@@ -8,8 +10,8 @@ namespace Rubberduck.UI.SourceControl
810
/// </summary>
911
public class SourceControlDockablePresenter : DockableToolwindowPresenter
1012
{
11-
public SourceControlDockablePresenter(IVBE vbe, IAddIn addin, SourceControlPanel window)
12-
: base(vbe, addin, window)
13+
public SourceControlDockablePresenter(IVBE vbe, IAddIn addin, SourceControlPanel window, IConfigProvider<WindowSettings> settings)
14+
: base(vbe, addin, window, settings)
1315
{
1416
}
1517

RetailCoder.VBE/UI/ToDoItems/ToDoExplorerDockablePresenter.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
using Rubberduck.VBEditor.SafeComWrappers.Abstract;
1+
using Rubberduck.Settings;
2+
using Rubberduck.SettingsProvider;
3+
using Rubberduck.VBEditor.SafeComWrappers.Abstract;
24

35
namespace Rubberduck.UI.ToDoItems
46
{
@@ -7,8 +9,8 @@ namespace Rubberduck.UI.ToDoItems
79
/// </summary>
810
public class ToDoExplorerDockablePresenter : DockableToolwindowPresenter
911
{
10-
public ToDoExplorerDockablePresenter(IVBE vbe, IAddIn addin, ToDoExplorerWindow window)
11-
: base(vbe, addin, window)
12+
public ToDoExplorerDockablePresenter(IVBE vbe, IAddIn addin, ToDoExplorerWindow window, IConfigProvider<WindowSettings> settings)
13+
: base(vbe, addin, window, settings)
1214
{
1315
}
1416
}

RetailCoder.VBE/UI/UnitTesting/TestExplorerDockablePresenter.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
1-
using Rubberduck.VBEditor.SafeComWrappers.Abstract;
1+
using Rubberduck.Settings;
2+
using Rubberduck.SettingsProvider;
3+
using Rubberduck.VBEditor.SafeComWrappers.Abstract;
24

35
namespace Rubberduck.UI.UnitTesting
46
{
57
public class TestExplorerDockablePresenter : DockableToolwindowPresenter
68
{
7-
public TestExplorerDockablePresenter(IVBE vbe, IAddIn addin, TestExplorerWindow view)
8-
: base(vbe, addin, view)
9+
public TestExplorerDockablePresenter(IVBE vbe, IAddIn addin, TestExplorerWindow view, IConfigProvider<WindowSettings> settings)
10+
: base(vbe, addin, view, settings)
911
{
1012
}
1113
}

0 commit comments

Comments
 (0)