/AppController.j

http://github.com/primalmotion/MessageBoard-Example · Unknown · 126 lines · 96 code · 30 blank · 0 comment · 0 complexity · f8127a458cfbc981d32c903276509c60 MD5 · raw file

  1. /*
  2. * AppController.j
  3. * StackView
  4. *
  5. * Created by You on September 24, 2010.
  6. * Copyright 2010, Your Company All rights reserved.
  7. */
  8. @import <Foundation/CPObject.j>
  9. @import <MessageBoard/MessageBoard.j>
  10. @implementation AppController : CPObject
  11. {
  12. CPView _stackView;
  13. CPArray _stackDatasource;
  14. CPTextField _textFieldPadding;
  15. CPTextField _textFieldWidth;
  16. }
  17. - (void)applicationDidFinishLaunching:(CPNotification)aNotification
  18. {
  19. var theWindow = [[CPWindow alloc] initWithContentRect:CGRectMakeZero() styleMask:CPBorderlessBridgeWindowMask];
  20. var contentView = [theWindow contentView];
  21. // stack view
  22. _stackDatasource = [
  23. [self generateDummyView:"toto" height:30 color:[CPColor greenColor]],
  24. [self generateDummyView:@"titi" height:60 color:[CPColor yellowColor]],
  25. [self generateDummyView:@"tutu" height:50 color:[CPColor redColor]]
  26. ];
  27. _stackView = [[TNStackView alloc] initWithFrame:CGRectMake(10, 50, 300, 600)];
  28. [_stackView setBackgroundColor:[CPColor colorWithHexString:@"c7c7c7"]];
  29. [_stackView setDataSource:_stackDatasource];
  30. [_stackView reload];
  31. [contentView addSubview:_stackView];
  32. // controls
  33. var buttonAdd = [[CPButton alloc] initWithFrame:CGRectMake(10, 10, 100, 24)];
  34. [buttonAdd setTitle:@"Add dummy"];
  35. [buttonAdd setTarget:self];
  36. [buttonAdd setAction:@selector(addDummy:)];
  37. [contentView addSubview:buttonAdd];
  38. var _textFieldPadding = [CPTextField textFieldWithStringValue:@"1" placeholder:@"padding" width:100];
  39. [_textFieldPadding setFrame:CGRectMake(150, 6, 100, 30)];
  40. [_textFieldPadding setFloatValue:[_stackView padding]];
  41. [_textFieldPadding setTarget:self];
  42. [_textFieldPadding setAction:@selector(setPadding:)];
  43. [contentView addSubview:_textFieldPadding];
  44. var buttonPadding = [[CPButton alloc] initWithFrame:CGRectMake(250, 10, 100, 24)];
  45. [buttonPadding setTitle:@"Set padding"];
  46. [buttonPadding setTarget:self];
  47. [buttonPadding setAction:@selector(setPadding:)];
  48. [contentView addSubview:buttonPadding];
  49. var _textFieldWidth = [CPTextField textFieldWithStringValue:@"100" placeholder:@"width" width:100];
  50. [_textFieldWidth setFrame:CGRectMake(370, 6, 100, 30)];
  51. [_textFieldWidth setTarget:self];
  52. [_textFieldWidth setAction:@selector(setWidth:)];
  53. [_textFieldWidth setFloatValue:[_stackView frameSize].width];
  54. [contentView addSubview:_textFieldWidth];
  55. var buttonWidth = [[CPButton alloc] initWithFrame:CGRectMake(470, 10, 100, 24)];
  56. [buttonWidth setTitle:@"Set width"];
  57. [buttonWidth setTarget:self];
  58. [buttonWidth setAction:@selector(setWidth:)];
  59. [contentView addSubview:buttonWidth];
  60. var buttonReverse = [[CPButton alloc] initWithFrame:CGRectMake(600, 10, 100, 24)];
  61. [buttonReverse setTitle:@"Reverse"];
  62. [buttonReverse setTarget:self];
  63. [buttonReverse setAction:@selector(reverse:)];
  64. [contentView addSubview:buttonReverse];
  65. [theWindow orderFront:self];
  66. }
  67. - (CPView)generateDummyView:(CPString)aLabel height:(int)aHeight color:(CPColor)aColor
  68. {
  69. var dummy = [[CPView alloc] initWithFrame:CGRectMake(0,0,100, aHeight)];
  70. var label = [[CPTextField alloc] initWithFrame:CGRectMake(10, 10, 100, 30)];
  71. [dummy setBackgroundColor:aColor];
  72. [label setStringValue:aLabel];
  73. [dummy addSubview:label];
  74. return dummy;
  75. }
  76. - (IBAction)addDummy:(id)sender
  77. {
  78. [_stackDatasource addObject:[self generateDummyView:@"generated!" height:30 color:[CPColor grayColor]]];
  79. [_stackView reload];
  80. }
  81. - (IBAction)setPadding:(id)sender
  82. {
  83. [_stackView setPadding:[_textFieldPadding floatValue]];
  84. [_stackView reload];
  85. }
  86. - (IBAction)setWidth:(id)sender
  87. {
  88. var size = [_stackView frameSize];
  89. size.width = [_textFieldWidth floatValue];
  90. [_stackView setFrameSize:size];
  91. }
  92. - (IBAction)reverse:(id)sender
  93. {
  94. [_stackView reverse:sender];
  95. }
  96. @end