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}