-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMainWindowController.cs
More file actions
149 lines (126 loc) · 3.18 KB
/
MainWindowController.cs
File metadata and controls
149 lines (126 loc) · 3.18 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
using System;
using System.Collections.Generic;
using System.Linq;
using MonoMac.Foundation;
using MonoMac.AppKit;
using System.Timers;
namespace outlineViewSelected
{
public class SimpleModel : NSObject
{
public SimpleModel(string fruit)
{
_fruit = fruit;
}
private string _fruit;
public string Fruit {
get { return _fruit; }
set {
if (_fruit != value) {
_fruit = value;
}
}
}
public override void SetValueForKey (NSObject value, NSString key)
{
switch (key) {
case "fruit":
Fruit = value.ToString ();
break;
}
}
public override NSObject ValueForKey (NSString key)
{
switch (key) {
case "Fruit":
return new NSString (Fruit);
case "Children":
return new NSMutableArray ();
case "Count":
return new NSNumber(0);
}
return new NSNull();
}
[Export("copyWithZone:")]
public NSObject CopyWithZone (IntPtr zone)
{
return new SimpleModel(_fruit).Retain ();
}
public SimpleModel[] Children {
get { return null; }
}
}
public partial class MainWindowController : MonoMac.AppKit.NSWindowController
{
#region Constructors
// Called when created from unmanaged code
public MainWindowController (IntPtr handle) : base (handle)
{
Initialize ();
}
// Called when created directly from a XIB file
[Export ("initWithCoder:")]
public MainWindowController (NSCoder coder) : base (coder)
{
Initialize ();
}
// Call to load from the XIB/NIB file
public MainWindowController () : base ("MainWindow")
{
Initialize ();
}
// Shared initialization code
void Initialize ()
{
}
#endregion
//strongly typed window accessor
public new MainWindow Window {
get {
return (MainWindow)base.Window;
}
}
Timer _timer;
int i;
bool isAddAtOnce = false;
private void addFruits()
{
i++;
if (arrayController.Content != null) {
((NSMutableArray)(arrayController.Content)).RemoveAllObjects (); // what if it is not mutable...
}
Console.WriteLine ("Adding more fruits");
if (isAddAtOnce) {
var array = new NSMutableArray (4);
array.Add (new SimpleModel ("strawberry" + i.ToString ()));
array.Add (new SimpleModel ("raspberry" + i.ToString ()));
array.Add (new SimpleModel ("blueberry" + i.ToString ()));
array.Add (new SimpleModel ("fig" + i.ToString ()));
arrayController.AddObjects (array);
} else {
arrayController.AddObject (new SimpleModel ("strawberry" + i.ToString ()));
arrayController.AddObject (new SimpleModel ("raspberry" + i.ToString ()));
arrayController.AddObject (new SimpleModel ("blueberry" + i.ToString ()));
arrayController.AddObject (new SimpleModel ("fig" + i.ToString ()));
}
}
public override void WindowDidLoad ()
{
base.WindowDidLoad ();
arrayController.SelectsInsertedObjects = false;
// treeController.SelectsInsertedObjects = false;
tableView.Delegate = new TableViewDelegate();
outlineView.Delegate = new OutlineViewDelegate ();
addFruits ();
_timer = new Timer (2000);
_timer.Enabled = true;
_timer.Elapsed += (object sender, ElapsedEventArgs e) => {
InvokeOnMainThread(() =>
{
addFruits();
});
};
_timer.Start();
}
}
}