Permalink
Browse files

Made CPCollectionViewItem a subclass of CPViewController and improved…

… nib2cib support for CPCollectionView, CPCollectionViewItem, and CPViewController.

Reviewed by me.
  • Loading branch information...
1 parent 25d76c9 commit 0497888edf166ecc6caed900e53940f198402bfa @tolmasky tolmasky committed Sep 15, 2009
View
@@ -34,6 +34,7 @@
@import "CPCibLoading.j"
@import "CPCibOutletConnector.j"
@import "CPClipView.j"
+@import "CPCollectionViewItem.j"
@import "CPCollectionView.j"
@import "CPColor.j"
@import "CPColorPanel.j"
@@ -75,6 +76,7 @@
@import "CPToolbar.j"
@import "CPToolbarItem.j"
@import "CPView.j"
+@import "CPViewController.j"
@import "CPWebView.j"
@import "CPWindow.j"
@import "CPWindowController.j"
View
@@ -26,7 +26,8 @@
@import <Foundation/CPKeyedArchiver.j>
@import <Foundation/CPKeyedUnarchiver.j>
-@import <AppKit/CPView.j>
+@import "CPView.j"
+@import "CPCollectionViewItem.j"
/*!
@@ -61,6 +62,7 @@
@param indices the indices to obtain drag types
@return an array of drag types (CPString)
*/
+
@implementation CPCollectionView : CPView
{
CPArray _content;
@@ -668,95 +670,6 @@
@end
-/*!
- Represents an object inside a CPCollectionView.
-*/
-@implementation CPCollectionViewItem : CPObject
-{
- id _representedObject;
-
- CPView _view;
-
- BOOL _isSelected;
-}
-
-// Setting the Represented Object
-/*!
- Sets the object to be represented by this item.
- @param anObject the object to be represented
-*/
-- (void)setRepresentedObject:(id)anObject
-{
- if (_representedObject == anObject)
- return;
-
- _representedObject = anObject;
-
- // FIXME: This should be set up by bindings
- [_view setRepresentedObject:anObject];
-}
-
-/*!
- Returns the object represented by this view item
-*/
-- (id)representedObject
-{
- return _representedObject;
-}
-
-// Modifying the View
-/*!
- Sets the view that is used represent this object.
- @param aView the view used to represent this object
-*/
-- (void)setView:(CPView)aView
-{
- _view = aView;
-}
-
-/*!
- Returns the view that represents this object.
-*/
-- (CPView)view
-{
- return _view;
-}
-
-// Modifying the Selection
-/*!
- Sets whether this view item should be selected.
- @param shouldBeSelected \c YES makes the item selected. \c NO deselects it.
-*/
-- (void)setSelected:(BOOL)shouldBeSelected
-{
- if (_isSelected == shouldBeSelected)
- return;
-
- _isSelected = shouldBeSelected;
-
- // FIXME: This should be set up by bindings
- [_view setSelected:_isSelected];
-}
-
-/*!
- Returns \c YES if the item is currently selected. \c NO if the item is not selected.
-*/
-- (BOOL)isSelected
-{
- return _isSelected;
-}
-
-// Parent Collection View
-/*!
- Returns the collection view of which this item is a part.
-*/
-- (CPCollectionView)collectionView
-{
- return [_view superview];
-}
-
-@end
-
var CPCollectionViewMinItemSizeKey = @"CPCollectionViewMinItemSizeKey",
CPCollectionViewMaxItemSizeKey = @"CPCollectionViewMaxItemSizeKey",
CPCollectionViewVerticalMarginKey = @"CPCollectionViewVerticalMarginKey",
@@ -811,47 +724,3 @@ var CPCollectionViewMinItemSizeKey = @"CPCollectionViewMinItemSizeKey",
}
@end
-
-var CPCollectionViewItemViewKey = @"CPCollectionViewItemViewKey";
-
-@implementation CPCollectionViewItem (CPCoding)
-
-/*
- FIXME Not yet implemented
-*/
-- (id)copy
-{
-
-}
-
-@end
-
-var CPCollectionViewItemViewKey = @"CPCollectionViewItemViewKey";
-
-@implementation CPCollectionViewItem (CPCoding)
-
-/*!
- Initializes the view item by unarchiving data from a coder.
- @param aCoder the coder from which the data will be unarchived
- @return the initialized collection view item
-*/
-- (id)initWithCoder:(CPCoder)aCoder
-{
- self = [super init];
-
- if (self)
- _view = [aCoder decodeObjectForKey:CPCollectionViewItemViewKey];
-
- return self;
-}
-
-/*!
- Archives the colletion view item to the provided coder.
- @param aCoder the coder to which the view item should be archived
-*/
-- (void)encodeWithCoder:(CPCoder)aCoder
-{
- [aCoder encodeObject:_view forKey:CPCollectionViewItemViewKey];
-}
-
-@end
@@ -0,0 +1,85 @@
+/*
+ * CPCollectionViewItem.j
+ * AppKit
+ *
+ * Created by Francisco Tolmasky.
+ * Copyright 2009, 280 North, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+@import "CPViewController.j"
+
+/*!
+ Represents an object inside a CPCollectionView.
+*/
+@implementation CPCollectionViewItem : CPViewController
+{
+ BOOL _isSelected;
+}
+
+// Setting the Represented Object
+/*!
+ Sets the object to be represented by this item.
+ @param anObject the object to be represented
+*/
+- (void)setRepresentedObject:(id)anObject
+{
+ [super setRepresentedObject:anObject];
+
+ var view = [self view];
+
+ if ([view respondsToSelector:@selector(setRepresentedObject:)])
+ [view setRepresentedObject:[self representedObject]];
+}
+
+// Modifying the Selection
+/*!
+ Sets whether this view item should be selected.
+ @param shouldBeSelected \c YES makes the item selected. \c NO deselects it.
+*/
+- (void)setSelected:(BOOL)shouldBeSelected
+{
+ shouldBeSelected = !!shouldBeSelected;
+
+ if (_isSelected === shouldBeSelected)
+ return;
+
+ _isSelected = shouldBeSelected;
+
+ var view = [self view];
+
+ if ([view respondsToSelector:@selector(setSelected:)])
+ [view setSelected:[self isSelected]];
+}
+
+/*!
+ Returns \c YES if the item is currently selected. \c NO if the item is not selected.
+*/
+- (BOOL)isSelected
+{
+ return _isSelected;
+}
+
+// Parent Collection View
+/*!
+ Returns the collection view of which this item is a part.
+*/
+- (CPCollectionView)collectionView
+{
+ return [_view superview];
+}
+
+@end
View
@@ -163,3 +163,41 @@
}
@end
+
+
+var CPViewControllerViewKey = @"CPViewControllerViewKey",
+ CPViewControllerTitleKey = @"CPViewControllerTitleKey";
+
+@implementation CPViewController (CPCoding)
+
+/*!
+ Initializes the view item by unarchiving data from a coder.
+ @param aCoder the coder from which the data will be unarchived
+ @return the initialized collection view item
+*/
+- (id)initWithCoder:(CPCoder)aCoder
+{
+ self = [super initWithCoder:aCoder];
+
+ if (self)
+ {
+ _view = [aCoder decodeObjectForKey:CPViewControllerViewKey];
+ _title = [aCoder decodeObjectForKey:CPViewControllerTitleKey];
+ }
+
+ return self;
+}
+
+/*!
+ Archives the colletion view item to the provided coder.
+ @param aCoder the coder to which the view item should be archived
+*/
+- (void)encodeWithCoder:(CPCoder)aCoder
+{
+ [super encodeWithCoder:aCoder];
+
+ [aCoder encodeObject:_view forKey:CPViewControllerViewKey];
+ [aCoder encodeObject:_title forKey:CPViewControllerTitleKey];
+}
+
+@end
View
@@ -27,6 +27,7 @@
@import "NSColor.j"
@import "NSColorWell.j"
@import "NSCollectionView.j"
+@import "NSCollectionViewItem.j"
@import "NSControl.j"
@import "NSCustomObject.j"
@import "NSCustomResource.j"
@@ -54,6 +55,7 @@
@import "NSTextField.j"
@import "NSToolbar.j"
@import "NSView.j"
+@import "NSViewController.j"
@import "NSWindowTemplate.j"
@import "WebView.j"
@@ -72,29 +72,3 @@
}
@end
-
-
-@implementation CPCollectionViewItem (NSCoding)
-
-- (id)NS_initWithCoder:(CPCoder)aCoder
-{
- return [super init];
-}
-
-@end
-
-@implementation NSCollectionViewItem : CPCollectionViewItem
-{
-}
-
-- (id)initWithCoder:(CPCoder)aCoder
-{
- return [self NS_initWithCoder:aCoder];
-}
-
-- (Class)classForKeyedArchiver
-{
- return [CPCollectionViewItem class];
-}
-
-@end
Oops, something went wrong.

0 comments on commit 0497888

Please sign in to comment.