main
 1using System;
 2using System.Windows.Forms;
 3using Gorilla.Commons.Infrastructure.Container;
 4using MoMoney.Presentation.Winforms.Resources;
 5using MoMoney.Service.Infrastructure.Eventing;
 6using MoMoney.Service.Infrastructure.Threading;
 7
 8namespace MoMoney.Presentation.Model.Menu
 9{
10    public class ToolBarItemBuilder : IToolbarItemBuilder, IToolbarButton
11    {
12        readonly DependencyRegistry registry;
13        readonly ToolStripButton item;
14        readonly CommandProcessor processor;
15        Func<bool> the_condition;
16
17        public ToolBarItemBuilder(DependencyRegistry registry, IEventAggregator aggregator, CommandProcessor processor)
18        {
19            this.registry = registry;
20            this.processor = processor;
21            aggregator.subscribe(this);
22            the_condition = () => true;
23            item = new ToolStripButton {};
24        }
25
26        public IToolbarItemBuilder with_tool_tip_text_as(string text)
27        {
28            item.Text = text;
29            return this;
30        }
31
32        public IToolbarItemBuilder when_clicked_executes<Command>() where Command : gorilla.commons.utility.Command
33        {
34            item.Click += (sender, args) => processor.add(registry.get_a<Command>());
35            return this;
36        }
37
38        public IToolbarItemBuilder displays_icon(HybridIcon icon)
39        {
40            item.Image = icon;
41            return this;
42        }
43
44        public IToolbarItemBuilder can_be_clicked_when(Func<bool> condition)
45        {
46            the_condition = condition;
47            item.Enabled = condition();
48            return this;
49        }
50
51        public IToolbarButton button()
52        {
53            return this;
54        }
55
56        public void add_to(ToolStrip tool_strip)
57        {
58            tool_strip.Items.Add(item);
59        }
60
61        public void refresh()
62        {
63            item.Enabled = the_condition();
64        }
65    }
66}