Files
cappuccino/Tests/Manual/TableTest/ViewBased/AppController.j
T

121 lines
3.4 KiB
Plaintext

/*
* AppController.j
* CPTableViewViewBased
*
* Created by cacaodev.
* Copyright 2011, Your Company All rights reserved.
*/
@import <Foundation/CPObject.j>
CPLogRegister(CPLogConsole)
@implementation AppController : CPObject
{
CPTableView tableView;
}
- (void)applicationDidFinishLaunching:(CPNotification)aNotification
{
var theWindow = [[CPWindow alloc] initWithContentRect:CGRectMakeZero() styleMask:CPBorderlessBridgeWindowMask],
contentView = [theWindow contentView];
[self buildModel];
tableView = [[CPTableView alloc] initWithFrame:CGRectMakeZero()];
[tableView setDataSource:self];
[tableView setDelegate:self];
var columnA = [[CPTableColumn alloc] initWithIdentifier:"A"];
[tableView addTableColumn:columnA];
[[columnA headerView] setStringValue:"A"];
[columnA setWidth:175];
var columnB = [[CPTableColumn alloc] initWithIdentifier:"B"];
[tableView addTableColumn:columnB];
[[columnB headerView] setStringValue:"B"];
[columnB setWidth:175]
var columnC = [[CPTableColumn alloc] initWithIdentifier:"C"];
[tableView addTableColumn:columnC];
[[columnC headerView] setStringValue:"C"];
[columnC setWidth:175];
var columnD = [[CPTableColumn alloc] initWithIdentifier:"D"];
[tableView addTableColumn:columnD];
[[columnD headerView] setStringValue:"D"];
[columnD setWidth:175];
var columnE = [[CPTableColumn alloc] initWithIdentifier:"E"];
[tableView addTableColumn:columnE];
[[columnE headerView] setStringValue:"E"];
[columnE setWidth:175];
var scrollView = [[CPScrollView alloc] initWithFrame:CGRectMake(100,100,700,400)];
[scrollView setDocumentView:tableView];
[contentView addSubview:scrollView];
[theWindow orderFront:self];
}
- (void)buildModel // For the editable view aka the slider
{
content = [];
var count = 10000;
while (count--)
content.push({A:10,B:10,C:10,D:10,E:10});
}
- (IBAction)sliderAction:(id)sender
{
var row = [tableView rowForView:sender],
column = [tableView columnForView:sender],
identifier = [[[tableView tableColumns] objectAtIndex:column] identifier];
CPLog.debug(_cmd + " from " + sender + " row = " + row + " column = " + column + " value = " + [sender intValue]);
content[row][identifier] = [sender doubleValue];
}
- (int)numberOfRowsInTableView:(id)aTableView
{
return content.length;
}
- (void)tableView:(CPTableView)aTableView dataViewForTableColumn:(CPTableColumn)aTableColumn row:(CPInteger)aRow
{
var n = (aRow % 3),
viewKind = "view_kind_" + n,
tableColumnId = [aTableColumn identifier],
view = [aTableView makeViewWithIdentifier:viewKind owner:self];
if (view == nil)
{
if (n == 0)
view = [[CPTableCellView alloc] initWithFrame:CGRectMakeZero()];
else if (n == 1)
{
view = [[CPSlider alloc] initWithFrame:CGRectMakeZero()];
[view setMinValue:0];
[view setMaxValue:20];
[view setTarget:self];
[view setAction:@selector(sliderAction:)];
}
else
view = [[CPLevelIndicator alloc] initWithFrame:CGRectMakeZero()];
[view setIdentifier:viewKind];
}
if (n == 0)
[view setObjectValue:("Column " + tableColumnId + " Row " + aRow)];
else if (n == 1)
[view setDoubleValue:content[aRow][tableColumnId]];
return view;
}
@end