-
Notifications
You must be signed in to change notification settings - Fork 12
/
Copy pathSMFDictionaryObjectEditor.m
141 lines (135 loc) · 3.64 KB
/
SMFDictionaryObjectEditor.m
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
//
// SMFDictionaryObjectEditor.m
// SMFramework
//
// Created by Thomas Cool on 5/1/11.
// Copyright 2011 Thomas Cool. All rights reserved.
//
#import "SMFDictionaryObjectEditor.h"
#import "Backrow/AppleTV.h"
#import "SMFramework.h"
typedef enum _kSMFKe{
kSMFEditorKey,
kSMFEditorValue,
kSMFEditorType,
kSMFEditorSave,
kSMFEditorDelete,
kSMFEditorCount,
}kSMFKe;
@implementation SMFDictionaryObjectEditor
@synthesize delegate,obj,key;
-(id)initWithKey:(NSString *)k withObject:(NSObject *)o withDelegate:(NSObject *)del
{
self=[super init];
if (self) {
initialKey=[k copy];
if(k!=nil)
self.key=k;
if(o!=nil)
self.obj=o;
self.delegate=del;
[self setListTitle:@"Object Editor"];
}
return self;
}
-(long)itemCount
{
return kSMFEditorCount;
}
-(id)titleForRow:(long)row
{
if(row==kSMFEditorKey)
return @"Key";
else if(row==kSMFEditorValue)
return @"Object";
else if(row==kSMFEditorType)
return @"Type";
else if(row==kSMFEditorSave)
return @"Save";
else if(row==kSMFEditorDelete)
return @"Delete";
return @"___";
}
-(id)itemTextForRow:(long)row
{
if (row==kSMFEditorKey)
return [NSString stringWithFormat:@"%@",self.key,nil];
else if(row==kSMFEditorValue)
return [NSString stringWithFormat:@"%@",self.obj,nil];
else if(row==kSMFEditorType)
{
if (self.obj!=nil)
return NSStringFromClass([self.obj class]);
else
return @"";
}
return @"";
}
-(id)itemForRow:(long)row
{
SMFMenuItem *it = [SMFMenuItem menuItem];
[it setTitle:[self titleForRow:row]];
[it setRightText:[self itemTextForRow:row]];
return it;
}
-(void)itemSelected:(long)selected
{
lastItemSelected=selected;
switch (selected) {
case kSMFEditorKey:
{
BRTextEntryController *c = [[BRTextEntryController alloc] initWithTextEntryStyle:1];
[c setTitle:@"Set Key"];
[c setInitialTextEntryText:[NSString stringWithFormat:@"%@",self.key,nil]];
[c setTextFieldDelegate:self];
[[self stack]pushController:[c autorelease]];
}
break;
case kSMFEditorValue:
{
BRTextEntryController *c = [[BRTextEntryController alloc] initWithTextEntryStyle:1];
[c setTitle:@"Set Value"];
[c setInitialTextEntryText:[NSString stringWithFormat:@"%@",self.obj,nil]];
[c setTextFieldDelegate:self];
[[self stack]pushController:[c autorelease]];
}
break;
case kSMFEditorSave:
{
if (self.delegate && [self.delegate respondsToSelector:@selector(setObject:forKey:)]) {
[self.delegate setObject:self.obj forKey:self.key];
[[self stack]popController];
}
break;
}
case kSMFEditorDelete:
{
if (self.delegate && [self.delegate respondsToSelector:@selector(deleteObjectForKey:)]) {
[self.delegate deleteObjectForKey:(initialKey!=nil?initialKey:self.key)];
[[self stack]popController];
}
break;
}
default:
break;
}
}
-(void)textDidChange:(id)text
{
}
-(void)textDidEndEditing:(id)text
{
switch (lastItemSelected) {
case kSMFEditorKey:
self.key=[text stringValue];
break;
case kSMFEditorValue:
self.obj=[text stringValue];
break;
default:
break;
}
[[self stack] popToController:self];
[[self list]reload];
}
@end