| 1 using System; |
|
| 2 using System.Collections.Generic; |
|
| 3 using System.Linq; |
|
| 4 using System.Text; |
|
| 5 using System.Threading.Tasks; |
|
| 6 using System.Windows; |
|
| 7 using System.Windows.Controls; |
|
| 8 using System.Windows.Media; |
|
| 9 |
|
| 10 namespace UI |
|
| 11 { |
|
| 12 public class MainToolBar |
|
| 13 { |
|
| 14 Dictionary<string, IToolItem> Items = new Dictionary<string, IToolItem>(); |
|
| 15 List<string> Defaults = new List<string>(); |
|
| 16 |
|
| 17 public MainToolBar() |
|
| 18 { |
|
| 19 |
|
| 20 } |
|
| 21 |
|
| 22 public bool HasItems() |
|
| 23 { |
|
| 24 return Defaults.Count > 0 ? true : false; |
|
| 25 } |
|
| 26 |
|
| 27 public void AddDefault(string itemName) |
|
| 28 { |
|
| 29 Defaults.Add(itemName); |
|
| 30 } |
|
| 31 |
|
| 32 public void AddToolItem(string name, string label, Action<IntPtr> action) |
|
| 33 { |
|
| 34 ToolItem item = new ToolItem(); |
|
| 35 item.Label = label; |
|
| 36 item.Action = action; |
|
| 37 Items.Add(name, item); |
|
| 38 } |
|
| 39 |
|
| 40 public ToolBarTray CreateToolBarTray(IntPtr objptr) |
|
| 41 { |
|
| 42 ToolBarTray tray = new ToolBarTray(); |
|
| 43 ToolBar toolbar = new ToolBar(); |
|
| 44 tray.ToolBars.Add(toolbar); |
|
| 45 foreach(string s in Defaults) |
|
| 46 { |
|
| 47 IToolItem item = Items[s]; |
|
| 48 item.AddTo(toolbar, objptr); |
|
| 49 } |
|
| 50 |
|
| 51 return tray; |
|
| 52 } |
|
| 53 } |
|
| 54 |
|
| 55 public interface IToolItem |
|
| 56 { |
|
| 57 void AddTo(System.Windows.Controls.ToolBar toolbar, IntPtr uiobj); |
|
| 58 } |
|
| 59 |
|
| 60 public class ToolItem : IToolItem |
|
| 61 { |
|
| 62 public string Label { get; set; } |
|
| 63 // TODO: icon |
|
| 64 public Action<IntPtr> Action { get; set; } |
|
| 65 |
|
| 66 public void AddTo(System.Windows.Controls.ToolBar toolbar, IntPtr uiobj) |
|
| 67 { |
|
| 68 Button button = new Button(); |
|
| 69 button.Content = Label; |
|
| 70 |
|
| 71 EventCallback e = new EventCallback(uiobj, Action); |
|
| 72 button.Click += e.Callback; |
|
| 73 |
|
| 74 toolbar.Items.Add(button); |
|
| 75 } |
|
| 76 } |
|
| 77 } |
|