/Tests/Manual/CPTextField/AppController.j
http://github.com/cacaodev/cappuccino · Unknown · 167 lines · 123 code · 44 blank · 0 comment · 0 complexity · c71bcaadfdc5445ad63f340e2c43361f MD5 · raw file
- /*
- * AppController.j
- * CPTextField
- *
- * Created by Alexander Ljungberg on August 2, 2010.
- * Copyright 2010, WireLoad, LLC All rights reserved.
- */
- @import <Foundation/CPObject.j>
- @implementation AppController : CPObject
- {
- CPWindow aWindow;
- CPTextField bezelToggleField;
- }
- - (void)applicationDidFinishLaunching:(CPNotification)aNotification
- {
- var theWindow = [[CPWindow alloc] initWithContentRect:CGRectMakeZero() styleMask:CPBorderlessBridgeWindowMask],
- contentView = [theWindow contentView];
- var textField = [CPTextField textFieldWithStringValue:"" placeholder:"Edit me!" width:200],
- label = [[CPTextField alloc] initWithFrame:CGRectMake(15, 15, 400, 24)];
- [label setStringValue:"Edit and hit enter: editing should end."];
- [contentView addSubview:label];
- [textField setFrameOrigin:CGPointMake(15, 35)];
- [textField setEditable:YES];
- [textField setPlaceholderString:"Edit me!"];
- [textField setTarget:self];
- [textField setAction:@selector(textAction:)];
- [contentView addSubview:textField];
- var shadowLabel = [CPTextField labelWithTitle:@"This text should have a shadow."],
- championOfLightLabel = [CPTextField labelWithTitle:@"This text should have no shadow."];
- [shadowLabel setTextColor:[CPColor blackColor]];
- [shadowLabel setTextShadowOffset:CGSizeMake(0, 1)];
- [shadowLabel setTextShadowColor:[CPColor colorWithCSSString:@"rgba(0, 0, 0, 0.5)"]];
- [championOfLightLabel setTextColor:[CPColor blackColor]];
- [championOfLightLabel setTextShadowOffset:CGSizeMake(0, 1)];
- [championOfLightLabel setTextShadowColor:[CPColor clearColor]];
- [shadowLabel setFrame:CGRectMake(15, CGRectGetMaxY([textField frame]) + 10, 300, 18)];
- [championOfLightLabel setFrame:CGRectMake(15, CGRectGetMaxY([shadowLabel frame]) + 2, 300, 18)];
- var selectableLabel = [CPTextField labelWithTitle:@"This text should be selectable and you should see the selectable cursor."];
- [selectableLabel setSelectable:YES];
- [selectableLabel setFrame:CGRectMake(15, CGRectGetMaxY([championOfLightLabel frame]) + 8, 600, 18)];
- [contentView addSubview:shadowLabel];
- [contentView addSubview:championOfLightLabel];
- [contentView addSubview:selectableLabel];
- var jumpLabel = [CPTextField labelWithTitle:@"The text of these text fields should not move ('jump') when a field becomes the first responder. Labels on the right should replicate the input."];
- [jumpLabel sizeToFit];
- [jumpLabel setFrameOrigin:CGPointMake(15, 150)];
- [contentView addSubview:jumpLabel];
- var y = CGRectGetMaxY([jumpLabel frame]) + 10;
- for (var i = 0; i < 5; i++)
- {
- var size = 10 + 3 * i,
- textField = [CPTextField textFieldWithStringValue:@"Size " + size placeholder:@"Size " + size width:200],
- echoField = [CPTextField labelWithTitle:""];
- [textField setFont:[CPFont systemFontOfSize:size]];
- [textField sizeToFit];
- [textField setFrameOrigin:CGPointMake(15, y)];
- textField.echoField = echoField;
- [contentView addSubview:textField];
- [echoField setFont:[CPFont systemFontOfSize:size]];
- [echoField setStringValue:[textField stringValue]];
- [echoField sizeToFit];
- [echoField setFrameOrigin:CGPointMake(CGRectGetMaxX([textField frame]) + 15, CGRectGetMidY([textField frame]) - CGRectGetHeight([echoField frame]) / 2.0)];
- [contentView addSubview:echoField];
- [[CPNotificationCenter defaultCenter] addObserver:self selector:@selector(textDidChange:) name:CPControlTextDidChangeNotification object:textField];
- y = CGRectGetMaxY([textField frame]) + 6;
- }
- label = [[CPTextField alloc] initWithFrame:CGRectMake(15, 420, 600, 60)];
- [label setLineBreakMode:CPLineBreakByWordWrapping];
- [label setStringValue:"This text field has been configured to show its text at a fixed location both with and without bezel.\nThis text should also display the word \"Placeholder\" when its value is empty."];
- [contentView addSubview:label];
- bezelToggleField = [CPTextField textFieldWithStringValue:"" placeholder:"Placeholder" width:200],
- [bezelToggleField setEditable:YES];
- [bezelToggleField setFrameOrigin:CGPointMake(15, 475)];
- console.log("" + bezelToggleField._themeAttributes['content-inset']._themeDefaultAttribute._values);
- console.log("" + bezelToggleField._themeAttributes['content-inset']._values);
- [bezelToggleField setValue:[bezelToggleField valueForThemeAttribute:@"content-inset" inState:CPThemeStateBezeled] forThemeAttribute:@"content-inset" inState:CPThemeStateNormal];
- console.log("" + bezelToggleField._themeAttributes['content-inset']._themeDefaultAttribute._values);
- console.log("" + bezelToggleField._themeAttributes['content-inset']._values);
- [contentView addSubview:bezelToggleField];
- var bezelToggleButton = [CPButton buttonWithTitle:"Show Bezel"];
- [bezelToggleButton setButtonType:CPPushOnPushOffButton];
- [bezelToggleButton setAction:@selector(toggleBezel:)];
- [bezelToggleButton setTarget:self];
- [bezelToggleButton setState:CPOnState];
- [bezelToggleButton sizeToFit];
- [bezelToggleButton setFrameOrigin:CGPointMake(CGRectGetMaxX([bezelToggleField frame]) + 15, 478)];
- [contentView addSubview:bezelToggleButton];
- [theWindow orderFront:self];
- aWindow = [[CPWindow alloc] initWithContentRect:CGRectMake(150, 300, 400, 150) styleMask:CPTitledWindowMask | CPClosableWindowMask | CPDocModalWindowMask];
- [aWindow setTitle:@"Text Field in a Window"]
- contentView = [aWindow contentView];
- textField = [CPTextField textFieldWithStringValue:"Select me!" placeholder:"" width:0];
- label = [[CPTextField alloc] initWithFrame:CGRectMake(15, 15, 360, 30)];
- [label setLineBreakMode:CPLineBreakByWordWrapping];
- [label setStringValue:"Select the field and double click it to select text. The text should become selected. Then hit enter to continue."];
- [contentView addSubview:label];
- [textField setFrame:CGRectMake(15, CGRectGetMaxY([label frame]) + 10, 300, 30)];
- [textField setEditable:YES];
- [textField setTarget:self];
- [textField setAction:@selector(modalAction:)];
- [contentView addSubview:textField];
- [CPApp beginSheet:aWindow modalForWindow:theWindow modalDelegate:self didEndSelector:nil contextInfo:nil];
- }
- - (@action)toggleBezel:(id)sender
- {
- [bezelToggleField setBezeled:([sender state] == CPOnState)];
- }
- - (void)modalAction:(id)sender
- {
- [CPApp endSheet:aWindow returnCode:0];
- [aWindow orderOut:sender];
- }
- - (void)textAction:(id)sender
- {
- [sender setEditable:NO];
- }
- - (void)textDidChange:(CPNotification)aNotification
- {
- var changedField = [aNotification object];
- [changedField.echoField setStringValue:[changedField stringValue]];
- [changedField.echoField sizeToFit];
- }
- @end