mirror of
https://github.com/cappuccino/cappuccino.git
synced 2026-10-07 01:18:02 +00:00
added various hacks to make the cptokenfield work with the new enstore admin
This commit is contained in:
1 parent
c80a28077a
commit
9f4dd3c2b8
1 file changed
+31
-19
+31
-19
@@ -89,24 +89,16 @@ var CPTokenFieldTableColumnIdentifier = @"CPTokenFieldTableColumnIdentifier";
|
||||
[_autocompleteScrollView setHasHorizontalScroller:NO];
|
||||
[_autocompleteContainer addSubview:_autocompleteScrollView];
|
||||
|
||||
_autocompleteView = [[CPTableView alloc] initWithFrame:CPRectMakeZero()];
|
||||
_autocompleteView = [[CPTableView alloc] initWithFrame:CPRectMakeZero()];
|
||||
|
||||
var tableColumn = [[CPTableColumn alloc] initWithIdentifier:CPTokenFieldTableColumnIdentifier];
|
||||
[tableColumn setResizingMask:CPTableColumnAutoresizingMask];
|
||||
|
||||
var dataView = [[CPTextField alloc] init];
|
||||
[dataView setValue:[CPFont systemFontOfSize:13.0] forThemeAttribute:@"font"];
|
||||
[dataView setValue:[CPColor colorWithHexString:@"3a3b3f"] forThemeAttribute:@"text-color"];
|
||||
[dataView setValue:CGInsetMake(0.0, 0.0, 3.0, 10.0) forThemeAttribute:@"content-inset"];
|
||||
[dataView setValue:CPCenterVerticalTextAlignment forThemeAttribute:@"vertical-alignment"];
|
||||
[tableColumn setDataView:dataView];
|
||||
|
||||
[tableColumn setResizingMask:CPTableColumnAutoresizingMask];
|
||||
[_autocompleteView addTableColumn:tableColumn];
|
||||
|
||||
[_autocompleteView setDataSource:self];
|
||||
[_autocompleteView setDelegate:self];
|
||||
[_autocompleteView setAllowsMultipleSelection:NO];
|
||||
// [_autocompleteView setHeaderView:nil];
|
||||
[_autocompleteView setHeaderView:nil];
|
||||
[_autocompleteView setCornerView:nil];
|
||||
[_autocompleteView setRowHeight:30.0];
|
||||
[_autocompleteView setGridStyleMask:CPTableViewSolidHorizontalGridLineMask];
|
||||
@@ -140,7 +132,9 @@ var CPTokenFieldTableColumnIdentifier = @"CPTokenFieldTableColumnIdentifier";
|
||||
|
||||
[self _hideCompletions];
|
||||
|
||||
var token = _cachedCompletions[[_autocompleteView selectedRow]];
|
||||
var token = _cachedCompletions[[_autocompleteView selectedRow]],
|
||||
shouldRemoveLastObject = token !== @"" && [self _inputElement].value !== @"";
|
||||
|
||||
if (!token)
|
||||
token = [self _inputElement].value;
|
||||
|
||||
@@ -165,11 +159,15 @@ var CPTokenFieldTableColumnIdentifier = @"CPTokenFieldTableColumnIdentifier";
|
||||
|
||||
// Remove the uncompleted token and add the token string.
|
||||
// Explicitely remove the last object because the array contains strings and removeObject uses isEqual to compare objects
|
||||
var indexOfLastObject = [objectValue count] - 1;
|
||||
if (!indexOfLastObject)
|
||||
indexOfLastObject = 0;
|
||||
|
||||
[objectValue removeObjectAtIndex:indexOfLastObject];
|
||||
if (shouldRemoveLastObject)
|
||||
{
|
||||
var indexOfLastObject = [objectValue count] - 1;
|
||||
if (!indexOfLastObject)
|
||||
indexOfLastObject = 0;
|
||||
|
||||
[objectValue removeObjectAtIndex:indexOfLastObject];
|
||||
}
|
||||
|
||||
[objectValue addObject:token];
|
||||
[self setObjectValue:objectValue];
|
||||
|
||||
@@ -209,6 +207,8 @@ var CPTokenFieldTableColumnIdentifier = @"CPTokenFieldTableColumnIdentifier";
|
||||
|
||||
[objectValue removeObjectAtIndex:indexOfToken];
|
||||
[self setObjectValue:objectValue];
|
||||
|
||||
[self textDidChange:[CPNotification notificationWithName:CPControlTextDidChangeNotification object:self userInfo:nil]];
|
||||
}
|
||||
|
||||
- (CPIndexSet)_selectedTokenIndexes
|
||||
@@ -354,6 +354,11 @@ var CPTokenFieldTableColumnIdentifier = @"CPTokenFieldTableColumnIdentifier";
|
||||
return [super objectValue];
|
||||
}
|
||||
|
||||
- (CPString)stringValue
|
||||
{
|
||||
return [[self objectValue] componentsJoinedByString:@","];
|
||||
}
|
||||
|
||||
- (id)objectValue
|
||||
{
|
||||
var objectValue = [];
|
||||
@@ -368,9 +373,7 @@ var CPTokenFieldTableColumnIdentifier = @"CPTokenFieldTableColumnIdentifier";
|
||||
}
|
||||
|
||||
if ([self _inputElement].value != @"")
|
||||
{
|
||||
[objectValue addObject:[self _inputElement].value];
|
||||
}
|
||||
|
||||
return objectValue;
|
||||
}
|
||||
@@ -407,6 +410,13 @@ var CPTokenFieldTableColumnIdentifier = @"CPTokenFieldTableColumnIdentifier";
|
||||
[super setObjectValue:objectValue];
|
||||
}
|
||||
|
||||
// Incredible hack to disable supers implementation
|
||||
// so it cannot change our object value and break the tokenfield
|
||||
- (void)_setStringValue:(id)aValue
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
// ========
|
||||
// = VIEW =
|
||||
// ========
|
||||
@@ -723,6 +733,8 @@ var CPTokenFieldTableColumnIdentifier = @"CPTokenFieldTableColumnIdentifier";
|
||||
[_autocompleteContainer setHidden:NO];
|
||||
var frameOrigin = [self convertPoint:[self bounds].origin toView:nil];
|
||||
[_autocompleteContainer setFrameOrigin:CPPointMake(frameOrigin.x, frameOrigin.y + frame.size.height)];
|
||||
[_autocompleteContainer setFrameSize:CPSizeMake(CPRectGetWidth([self bounds]), 100.0)];
|
||||
[_autocompleteScrollView setFrameSize:CPSizeMake([_autocompleteContainer frame].size.width - 19.0, 90.0)];
|
||||
}
|
||||
else
|
||||
[_autocompleteContainer setHidden:YES];
|
||||
|
||||
Reference in new issue
Block a user