forked from jerrykrinock/ClassesObjC
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathAMCollectionViewItem.m
141 lines (118 loc) · 2.9 KB
/
AMCollectionViewItem.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
//
// AMCollectionViewItem.m
// AMCollectionViewTest
//
// Created by Andreas on 20.11.07.
// Copyright 2007 Andreas Mayer. All rights reserved.
//
#import "AMCollectionViewItem.h"
#import "AMCollectionView.h"
@implementation AMCollectionViewItem
- (id)initWithCollectionView:(AMCollectionView *)theCollectionView representedObject:(id)theObject
{
self = [super init];
if (self != nil) {
[self setCollectionView:theCollectionView];
[self setRepresentedObject:theObject];
}
return self;
}
- (void)dealloc
{
[representedObject release];
[view release];
[super dealloc];
}
- (id)copyWithZone:(NSZone *)zone
{
id result = [[AMCollectionViewItem allocWithZone:zone] init];
[result setView:[self view]];
[result setRepresentedObject:[self representedObject]];
[result setCollectionView:[self collectionView]];
[result setSelected:[self isSelected]];
return result;
}
- (void)removeFromCollectionView
{
[[self view] removeFromSuperview];
[self setView:nil];
[self setRepresentedObject:nil];
}
- (AMCollectionView *)collectionView
{
return collectionView;
}
- (void)setCollectionView:(AMCollectionView *)value
{
if (collectionView != value) {
collectionView = value; // weak reference
}
}
- (id)representedObject
{
return [[representedObject retain] autorelease];
}
- (void)setRepresentedObject:(id)value
{
if (representedObject != value) {
[representedObject release];
representedObject = [value retain];
}
}
- (NSView *)view
{
return [[view retain] autorelease];
}
- (void)setView:(NSView *)value
{
if (view != value) {
[view release];
view = [value retain];
}
}
- (BOOL)isSelected
{
return selected;
}
- (void)setSelected:(BOOL)value
{
if (selected != value) {
selected = value;
}
}
- (BOOL)isFirstResponder
{
BOOL result = NO;
id theFirstResponder = [[[self view] window] firstResponder];
if (!(result = (theFirstResponder == self))) {
if ([theFirstResponder isKindOfClass:[NSView class]]) {
while (theFirstResponder = [theFirstResponder superview]) {
if (theFirstResponder == self) {
result = YES;
break;
}
}
}
}
return result;
}
//============================================================================
#pragma mark NSCoding methods
//============================================================================
- (id)initWithCoder:(NSCoder *)coder
{
self = [super init];
[self setView:[coder decodeObjectForKey:@"AMCVIView"]];
[self setCollectionView:[coder decodeObjectForKey:@"AMCVICollectionView"]];
[self setRepresentedObject:[coder decodeObjectForKey:@"AMCVIObject"]];
[self setSelected:[coder decodeBoolForKey:@"AMCVISelected"]];
return self;
}
- (void)encodeWithCoder:(NSCoder *)coder
{
[coder encodeObject:view forKey:@"AMCVIView"];
[coder encodeConditionalObject:collectionView forKey:@"AMCVICollectionView"];
[coder encodeConditionalObject:representedObject forKey:@"AMCVIObject"];
[coder encodeBool:selected forKey:@"AMCVISelected"];
}
@end