mirror of
https://github.com/cappuccino/cappuccino.git
synced 2026-08-25 04:57:03 +00:00
Tests: CPRuleEditorCibTest, CPPredicateEditorCibTest, SmartFoldersDemo: a real world usage of CPPredicateEditor. Documentation for these 3 new classes.
91 lines
2.1 KiB
Plaintext
91 lines
2.1 KiB
Plaintext
/*
|
|
* Created by cacaodev@gmail.com.
|
|
* Copyright (c) 2011 Pear, Inc. All rights reserved.
|
|
*/
|
|
|
|
@class _CPPredicateEditorTree;
|
|
@implementation _CPPredicateEditorRowNode : CPObject
|
|
{
|
|
_CPPredicateEditorTree tree @accessors;
|
|
CPMutableArray templateViews @accessors;
|
|
CPMutableArray copiedTemplateContainer @accessors;
|
|
CPArray children @accessors(copy);
|
|
}
|
|
|
|
- (BOOL)applyTemplate:(id)template withViews:(id)views forOriginalTemplate:(id)arg3
|
|
{
|
|
return YES; // not in use
|
|
}
|
|
|
|
+ (id)rowNodeFromTree:(id)aTree
|
|
{
|
|
return [_CPPredicateEditorRowNode _rowNodeFromTree:aTree withTemplate:[aTree template]];
|
|
}
|
|
|
|
+ (id)_rowNodeFromTree:(id)aTree withTemplate:(id)template
|
|
{
|
|
var nodeChildren = [CPArray array],
|
|
treeChildren = [aTree children],
|
|
count = [treeChildren count];
|
|
|
|
for (var i = 0; i < count; i++)
|
|
{
|
|
var childnode = [self _rowNodeFromTree:treeChildren[i] withTemplate:template];
|
|
[nodeChildren addObject:childnode];
|
|
}
|
|
|
|
var node = [_CPPredicateEditorRowNode new];
|
|
[node setTree:aTree];
|
|
[node setCopiedTemplateContainer:[CPMutableArray arrayWithObject:template]];
|
|
[node setTemplateViews:[template templateViews]];
|
|
[node setChildren:nodeChildren];
|
|
|
|
return node;
|
|
}
|
|
|
|
|
|
- (BOOL)isEqual:(id)node
|
|
{
|
|
return (self === node || tree === [node tree]);
|
|
}
|
|
|
|
- (void)copyTemplateIfNecessary
|
|
{
|
|
if ([[self templateForRow] rightIsWildcard])
|
|
{
|
|
var copy = [[tree template] copy];
|
|
[self setCopiedTemplateContainer:[CPMutableArray arrayWithObject:copy]];
|
|
[self setTemplateViews:[copy templateViews]];
|
|
}
|
|
}
|
|
|
|
- (CPView)templateView
|
|
{
|
|
return [templateViews objectAtIndex:[tree indexIntoTemplate]];
|
|
}
|
|
|
|
- (id)templateForRow
|
|
{
|
|
return [copiedTemplateContainer lastObject];
|
|
}
|
|
|
|
- (CPString)title
|
|
{
|
|
return [tree title];
|
|
}
|
|
|
|
- (id)displayValue
|
|
{
|
|
var title = [self title];
|
|
if (title == nil)
|
|
return [self templateView];
|
|
|
|
return title;
|
|
}
|
|
|
|
- (CPString)description
|
|
{
|
|
return [CPString stringWithFormat:@"<%@ %@ %@ %p>", [self className], [self title], [self displayValue], self];
|
|
}
|
|
|
|
@end |