-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathSSYDynamicMenu.m
72 lines (58 loc) · 1.59 KB
/
SSYDynamicMenu.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
#import "SSYDynamicMenu.h"
#import "SSYRuntimeUtilities.h"
@implementation SSYDynamicMenu
@synthesize target = m_target ;
@synthesize selector = m_selector ;
@synthesize targetInfo = m_targetInfo ;
@synthesize representedObjects = m_representedObjects ;
@synthesize selectedRepresentedObject = m_selectedRepresentedObject ;
@synthesize owningPopUpButton = m_owningPopUpButton ;
- (id)initWithTitle:(NSString*)title {
self = [super initWithTitle:title] ;
[self setDelegate:self] ;
return self ;
}
- (id)initWithCoder:(NSCoder *)coder {
self = [super initWithCoder:coder] ;
[self setDelegate:self] ;
return self ;
}
- (void)dealloc {
[m_target release] ;
[m_targetInfo release] ;
[m_representedObjects release] ;
[m_selectedRepresentedObject release] ;
[super dealloc] ;
}
- (id)initWithTarget:(id)target
selector:(SEL)selector
targetInfo:(id)targetInfo {
self = [super init] ;
if(self) {
[self setTarget:target] ;
[self setSelector:selector] ;
[self setTargetInfo:targetInfo] ;
}
return self ;
}
- (IBAction)hierarchicalMenuAction:(id)sender {
SEL selector = [self selector] ;
NSInteger numberOfArguments = [SSYRuntimeUtilities numberOfArgumentsInSelector:selector] ;
switch (numberOfArguments) {
case 1:
[[self target] performSelector:selector
withObject:[sender representedObject]] ;
break ;
case 2:
[[self target] performSelector:selector
withObject:[self targetInfo]
withObject:[sender representedObject]] ;
break ;
default:
NSLog(@"Internal Error 657-0183") ;
}
}
- (void)reload {
[[self delegate] menuNeedsUpdate:self] ;
}
@end