Skip to content

Commit 76dc28e

Browse files
committed
Add build type filter combo box to toolbar
ToolbarPopUpButtonItem class added to VS Mac so it is now possible to show a combo box in the pad toolbar with the build types. This is used to filter the list items.
1 parent ab3f024 commit 76dc28e

File tree

1 file changed

+31
-11
lines changed

1 file changed

+31
-11
lines changed

src/MonoDevelop.ProjectSystem.Tools/MonoDevelop.ProjectSystem.Tools.Gui/BuildLoggingPad.cs

Lines changed: 31 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,8 @@ public class BuildLoggingPad : PadContent
4242
ToolbarButtonItem startButton;
4343
ToolbarButtonItem stopButton;
4444
ToolbarButtonItem clearButton;
45-
ComboBox buildTypeFilterComboBox;
45+
ToolbarPopUpButtonItem buildTypeFilterComboBox;
46+
ContextMenu buildTypeFilterMenu;
4647
ToolbarSearchItem searchEntry;
4748
TimeSpan searchDelayTimeSpan = TimeSpan.FromMilliseconds (250);
4849
IDisposable searchTimer;
@@ -72,9 +73,12 @@ public override void Dispose ()
7273
startButton.Clicked -= OnStartButtonClicked;
7374
stopButton.Clicked -= OnStopButtonClicked;
7475
clearButton.Clicked -= OnClearButtonClicked;
75-
buildTypeFilterComboBox.Changed -= BuildTypeFilterComboBoxChanged;
7676
searchEntry.TextChanged -= SearchEntryChanged;
7777

78+
foreach (ContextMenuItem menuItem in buildTypeFilterMenu.Items) {
79+
menuItem.Clicked -= BuildTypeFilterComboBoxChanged;
80+
}
81+
7882
DisposeExistingTimer ();
7983

8084
widget.Dispose ();
@@ -106,13 +110,9 @@ protected override void Initialize (IPadWindow window)
106110
clearButton.Tooltip = GettextCatalog.GetString ("Clear");
107111
toolbar.AddItem (clearButton);
108112

109-
//string[] buildTypeItems = buildTypes
110-
// .Select (buildType => GetDisplayText (buildType))
111-
// .ToArray ();
112-
//buildTypeFilterComboBox = new ComboBox (buildTypeItems);
113-
//buildTypeFilterComboBox.Active = 0;
114-
//buildTypeFilterComboBox.Changed += BuildTypeFilterComboBoxChanged;
115-
//toolbar.Add (buildTypeFilterComboBox);
113+
buildTypeFilterComboBox = new ToolbarPopUpButtonItem (toolbar.Properties, nameof (buildTypeFilterComboBox));
114+
buildTypeFilterComboBox.MenuCreator = () => CreateBuildTypeFilterMenu ();
115+
toolbar.AddItem (buildTypeFilterComboBox);
116116

117117
searchEntry = new ToolbarSearchItem (toolbar.Properties, nameof (searchEntry));
118118
searchEntry.Position = ToolbarItemPosition.Trailing;
@@ -130,6 +130,26 @@ protected override void Initialize (IPadWindow window)
130130
ProjectSystemService.MSBuildTargetFinished += MSBuildTargetFinished;
131131
}
132132

133+
ContextMenu CreateBuildTypeFilterMenu ()
134+
{
135+
string[] buildTypeItems = buildTypes
136+
.Select (buildType => GetDisplayText (buildType))
137+
.ToArray ();
138+
139+
buildTypeFilterMenu = new ContextMenu ();
140+
141+
foreach (BuildType buildType in buildTypes) {
142+
var menuItem = new ContextMenuItem ();
143+
menuItem.Label = GetDisplayText (buildType);
144+
menuItem.Context = buildType;
145+
menuItem.Clicked += BuildTypeFilterComboBoxChanged;
146+
147+
buildTypeFilterMenu.Items.Add (menuItem);
148+
}
149+
150+
return buildTypeFilterMenu;
151+
}
152+
133153
void OnStartButtonClicked (object sender, EventArgs e)
134154
{
135155
ProjectSystemService.IsEnabled = true;
@@ -177,9 +197,9 @@ static string GetDisplayText (BuildType buildType)
177197
}
178198
}
179199

180-
void BuildTypeFilterComboBoxChanged (object sender, EventArgs e)
200+
void BuildTypeFilterComboBoxChanged (object sender, ContextMenuItemClickedEventArgs e)
181201
{
182-
widget.BuildType = buildTypes [buildTypeFilterComboBox.Active];
202+
widget.BuildType = (BuildType)e.Context;
183203
}
184204

185205
void SearchEntryChanged (object sender, EventArgs e)

0 commit comments

Comments
 (0)