/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

  1. /*
  2. * AppController.j
  3. * CPTextField
  4. *
  5. * Created by Alexander Ljungberg on August 2, 2010.
  6. * Copyright 2010, WireLoad, LLC All rights reserved.
  7. */
  8. @import <Foundation/CPObject.j>
  9. @implementation AppController : CPObject
  10. {
  11. CPWindow aWindow;
  12. CPTextField bezelToggleField;
  13. }
  14. - (void)applicationDidFinishLaunching:(CPNotification)aNotification
  15. {
  16. var theWindow = [[CPWindow alloc] initWithContentRect:CGRectMakeZero() styleMask:CPBorderlessBridgeWindowMask],
  17. contentView = [theWindow contentView];
  18. var textField = [CPTextField textFieldWithStringValue:"" placeholder:"Edit me!" width:200],
  19. label = [[CPTextField alloc] initWithFrame:CGRectMake(15, 15, 400, 24)];
  20. [label setStringValue:"Edit and hit enter: editing should end."];
  21. [contentView addSubview:label];
  22. [textField setFrameOrigin:CGPointMake(15, 35)];
  23. [textField setEditable:YES];
  24. [textField setPlaceholderString:"Edit me!"];
  25. [textField setTarget:self];
  26. [textField setAction:@selector(textAction:)];
  27. [contentView addSubview:textField];
  28. var shadowLabel = [CPTextField labelWithTitle:@"This text should have a shadow."],
  29. championOfLightLabel = [CPTextField labelWithTitle:@"This text should have no shadow."];
  30. [shadowLabel setTextColor:[CPColor blackColor]];
  31. [shadowLabel setTextShadowOffset:CGSizeMake(0, 1)];
  32. [shadowLabel setTextShadowColor:[CPColor colorWithCSSString:@"rgba(0, 0, 0, 0.5)"]];
  33. [championOfLightLabel setTextColor:[CPColor blackColor]];
  34. [championOfLightLabel setTextShadowOffset:CGSizeMake(0, 1)];
  35. [championOfLightLabel setTextShadowColor:[CPColor clearColor]];
  36. [shadowLabel setFrame:CGRectMake(15, CGRectGetMaxY([textField frame]) + 10, 300, 18)];
  37. [championOfLightLabel setFrame:CGRectMake(15, CGRectGetMaxY([shadowLabel frame]) + 2, 300, 18)];
  38. var selectableLabel = [CPTextField labelWithTitle:@"This text should be selectable and you should see the selectable cursor."];
  39. [selectableLabel setSelectable:YES];
  40. [selectableLabel setFrame:CGRectMake(15, CGRectGetMaxY([championOfLightLabel frame]) + 8, 600, 18)];
  41. [contentView addSubview:shadowLabel];
  42. [contentView addSubview:championOfLightLabel];
  43. [contentView addSubview:selectableLabel];
  44. 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."];
  45. [jumpLabel sizeToFit];
  46. [jumpLabel setFrameOrigin:CGPointMake(15, 150)];
  47. [contentView addSubview:jumpLabel];
  48. var y = CGRectGetMaxY([jumpLabel frame]) + 10;
  49. for (var i = 0; i < 5; i++)
  50. {
  51. var size = 10 + 3 * i,
  52. textField = [CPTextField textFieldWithStringValue:@"Size " + size placeholder:@"Size " + size width:200],
  53. echoField = [CPTextField labelWithTitle:""];
  54. [textField setFont:[CPFont systemFontOfSize:size]];
  55. [textField sizeToFit];
  56. [textField setFrameOrigin:CGPointMake(15, y)];
  57. textField.echoField = echoField;
  58. [contentView addSubview:textField];
  59. [echoField setFont:[CPFont systemFontOfSize:size]];
  60. [echoField setStringValue:[textField stringValue]];
  61. [echoField sizeToFit];
  62. [echoField setFrameOrigin:CGPointMake(CGRectGetMaxX([textField frame]) + 15, CGRectGetMidY([textField frame]) - CGRectGetHeight([echoField frame]) / 2.0)];
  63. [contentView addSubview:echoField];
  64. [[CPNotificationCenter defaultCenter] addObserver:self selector:@selector(textDidChange:) name:CPControlTextDidChangeNotification object:textField];
  65. y = CGRectGetMaxY([textField frame]) + 6;
  66. }
  67. label = [[CPTextField alloc] initWithFrame:CGRectMake(15, 420, 600, 60)];
  68. [label setLineBreakMode:CPLineBreakByWordWrapping];
  69. [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."];
  70. [contentView addSubview:label];
  71. bezelToggleField = [CPTextField textFieldWithStringValue:"" placeholder:"Placeholder" width:200],
  72. [bezelToggleField setEditable:YES];
  73. [bezelToggleField setFrameOrigin:CGPointMake(15, 475)];
  74. console.log("" + bezelToggleField._themeAttributes['content-inset']._themeDefaultAttribute._values);
  75. console.log("" + bezelToggleField._themeAttributes['content-inset']._values);
  76. [bezelToggleField setValue:[bezelToggleField valueForThemeAttribute:@"content-inset" inState:CPThemeStateBezeled] forThemeAttribute:@"content-inset" inState:CPThemeStateNormal];
  77. console.log("" + bezelToggleField._themeAttributes['content-inset']._themeDefaultAttribute._values);
  78. console.log("" + bezelToggleField._themeAttributes['content-inset']._values);
  79. [contentView addSubview:bezelToggleField];
  80. var bezelToggleButton = [CPButton buttonWithTitle:"Show Bezel"];
  81. [bezelToggleButton setButtonType:CPPushOnPushOffButton];
  82. [bezelToggleButton setAction:@selector(toggleBezel:)];
  83. [bezelToggleButton setTarget:self];
  84. [bezelToggleButton setState:CPOnState];
  85. [bezelToggleButton sizeToFit];
  86. [bezelToggleButton setFrameOrigin:CGPointMake(CGRectGetMaxX([bezelToggleField frame]) + 15, 478)];
  87. [contentView addSubview:bezelToggleButton];
  88. [theWindow orderFront:self];
  89. aWindow = [[CPWindow alloc] initWithContentRect:CGRectMake(150, 300, 400, 150) styleMask:CPTitledWindowMask | CPClosableWindowMask | CPDocModalWindowMask];
  90. [aWindow setTitle:@"Text Field in a Window"]
  91. contentView = [aWindow contentView];
  92. textField = [CPTextField textFieldWithStringValue:"Select me!" placeholder:"" width:0];
  93. label = [[CPTextField alloc] initWithFrame:CGRectMake(15, 15, 360, 30)];
  94. [label setLineBreakMode:CPLineBreakByWordWrapping];
  95. [label setStringValue:"Select the field and double click it to select text. The text should become selected. Then hit enter to continue."];
  96. [contentView addSubview:label];
  97. [textField setFrame:CGRectMake(15, CGRectGetMaxY([label frame]) + 10, 300, 30)];
  98. [textField setEditable:YES];
  99. [textField setTarget:self];
  100. [textField setAction:@selector(modalAction:)];
  101. [contentView addSubview:textField];
  102. [CPApp beginSheet:aWindow modalForWindow:theWindow modalDelegate:self didEndSelector:nil contextInfo:nil];
  103. }
  104. - (@action)toggleBezel:(id)sender
  105. {
  106. [bezelToggleField setBezeled:([sender state] == CPOnState)];
  107. }
  108. - (void)modalAction:(id)sender
  109. {
  110. [CPApp endSheet:aWindow returnCode:0];
  111. [aWindow orderOut:sender];
  112. }
  113. - (void)textAction:(id)sender
  114. {
  115. [sender setEditable:NO];
  116. }
  117. - (void)textDidChange:(CPNotification)aNotification
  118. {
  119. var changedField = [aNotification object];
  120. [changedField.echoField setStringValue:[changedField stringValue]];
  121. [changedField.echoField sizeToFit];
  122. }
  123. @end