Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoriain holmes <iain@xamarin.com>2016-06-24 18:54:40 +0300
committeriain holmes <iain@xamarin.com>2016-10-28 17:26:24 +0300
commitd4ce43be92ce80b5ada8ed4c0dff63bc54228f3a (patch)
treea2dea82f9707b20246a64f0b9bae858fd6d4a162 /main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar
parent0468c6d87ebdff825fe97087aa00785d07f7dee0 (diff)
[IDE] Prepare the Button bar for accessibility labels
For accessibility we need a way to label each different button bar. Instead of just passing a list of buttons and separators, create a ButtonBarGroup and pass a list of those. The button bar group is named from the codon's label or Id.
Diffstat (limited to 'main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar')
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/ButtonBar.cs12
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/IButtonBarButton.cs16
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/IMainToolbarView.cs2
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/MainToolbar.cs12
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/MainToolbarController.cs16
5 files changed, 53 insertions, 5 deletions
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/ButtonBar.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/ButtonBar.cs
index 90440b377b..2c4d671d4e 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/ButtonBar.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/ButtonBar.cs
@@ -54,6 +54,18 @@ namespace MonoDevelop.Components.MainToolbar
QueueResize ();
}
}
+
+ public IEnumerable<ButtonBarGroup> Groups {
+ set {
+ var buttonList = new List<IButtonBarButton> ();
+ foreach (var g in value) {
+ buttonList.AddRange (g.Buttons);
+ }
+
+ Buttons = buttonList;
+ }
+ }
+
Dictionary<IButtonBarButton, Gdk.Rectangle> allocations = new Dictionary<IButtonBarButton, Gdk.Rectangle> ();
IButtonBarButton[] visibleButtons;
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/IButtonBarButton.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/IButtonBarButton.cs
index a43e3d1dba..41ca0801d2 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/IButtonBarButton.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/IButtonBarButton.cs
@@ -24,10 +24,26 @@
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
using System;
+using System.Collections.Generic;
using MonoDevelop.Core;
namespace MonoDevelop.Components.MainToolbar
{
+ public class ButtonBarGroup
+ {
+ // The title of the button group. Used for accessibility
+ public string Title { get; private set; }
+
+ // The buttons in this group
+ public List<IButtonBarButton> Buttons { get; }
+
+ public ButtonBarGroup (string title)
+ {
+ Title = title;
+ Buttons = new List<IButtonBarButton> ();
+ }
+ }
+
public interface IButtonBarButton
{
/// <summary>
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/IMainToolbarView.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/IMainToolbarView.cs
index 2d58bb2182..a2248988a9 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/IMainToolbarView.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/IMainToolbarView.cs
@@ -242,7 +242,9 @@ namespace MonoDevelop.Components.MainToolbar
/// Rebuilds the toolbar.
/// </summary>
/// <param name="buttons">A list of buttons.</param>
+ [Obsolete ("Use RebuildToolbar(IEnumerable<ButtonBarGroup> groups) instead")]
void RebuildToolbar (IEnumerable<IButtonBarButton> buttons);
+ void RebuildToolbar (IEnumerable<ButtonBarGroup> groups);
/// <summary>
/// Sets a value indicating whether the button bar is interactible.
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/MainToolbar.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/MainToolbar.cs
index 0a041a4baf..6fa425088f 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/MainToolbar.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/MainToolbar.cs
@@ -593,6 +593,18 @@ namespace MonoDevelop.Components.MainToolbar
buttonBar.Buttons = buttons;
}
+ public void RebuildToolbar (IEnumerable<ButtonBarGroup> groups)
+ {
+ if (!groups.Any ()) {
+ buttonBarBox.Hide ();
+ return;
+ }
+
+ buttonBarBox.Show ();
+ buttonBar.ShowAll ();
+ buttonBar.Groups = groups;
+ }
+
public bool ButtonBarSensitivity {
set { buttonBar.Sensitive = value; }
}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/MainToolbarController.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/MainToolbarController.cs
index cbfd4b690b..9315639765 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/MainToolbarController.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/MainToolbarController.cs
@@ -694,16 +694,22 @@ namespace MonoDevelop.Components.MainToolbar
{
var bars = AddinManager.GetExtensionNodes<ItemSetCodon> (ToolbarExtensionPath)
.Where (n => visibleBars.Contains (n.Id))
- .Select (b => b.ChildNodes.OfType<CommandItemCodon> ().Select (n => n.Id));
+ .Select (b => new { Label = b.Label, Buttons = b.ChildNodes.OfType<CommandItemCodon> ().Select (n => n.Id) });
+ var buttonGroups = new List<ButtonBarGroup> ();
buttonBarButtons.Clear ();
foreach (var bar in bars) {
- foreach (string commandId in bar)
- buttonBarButtons.Add (new ButtonBarButton (this, commandId));
- buttonBarButtons.Add (new ButtonBarButton (this));
+ var group = new ButtonBarGroup (bar.Label);
+
+ buttonGroups.Add (group);
+ foreach (string commandId in bar.Buttons) {
+ var button = new ButtonBarButton (this, commandId);
+ group.Buttons.Add (button);
+ buttonBarButtons.Add (button);
+ }
}
- ToolbarView.RebuildToolbar (buttonBarButtons);
+ ToolbarView.RebuildToolbar (buttonGroups);
}
static void HandleStartButtonClicked (object sender, EventArgs e)