appjam 0.1.0.pre4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. data/LICENSE.txt +20 -0
  2. data/README.rdoc +27 -0
  3. data/bin/appjam +17 -0
  4. data/lib/appjam.rb +50 -0
  5. data/lib/appjam/generators/Classes/ContactsAppDelegate.h.tt +18 -0
  6. data/lib/appjam/generators/Classes/ContactsAppDelegate.m.tt +88 -0
  7. data/lib/appjam/generators/Classes/org/puremvc/objectivec/core/Controller.h +54 -0
  8. data/lib/appjam/generators/Classes/org/puremvc/objectivec/core/Controller.m +145 -0
  9. data/lib/appjam/generators/Classes/org/puremvc/objectivec/core/Model.h +47 -0
  10. data/lib/appjam/generators/Classes/org/puremvc/objectivec/core/Model.m +117 -0
  11. data/lib/appjam/generators/Classes/org/puremvc/objectivec/core/View.h +39 -0
  12. data/lib/appjam/generators/Classes/org/puremvc/objectivec/core/View.m +207 -0
  13. data/lib/appjam/generators/Classes/org/puremvc/objectivec/interfaces/ICommand.h +16 -0
  14. data/lib/appjam/generators/Classes/org/puremvc/objectivec/interfaces/IController.h +57 -0
  15. data/lib/appjam/generators/Classes/org/puremvc/objectivec/interfaces/IFacade.h +135 -0
  16. data/lib/appjam/generators/Classes/org/puremvc/objectivec/interfaces/IMediator.h +84 -0
  17. data/lib/appjam/generators/Classes/org/puremvc/objectivec/interfaces/IModel.h +50 -0
  18. data/lib/appjam/generators/Classes/org/puremvc/objectivec/interfaces/INotification.h +57 -0
  19. data/lib/appjam/generators/Classes/org/puremvc/objectivec/interfaces/INotifier.h +41 -0
  20. data/lib/appjam/generators/Classes/org/puremvc/objectivec/interfaces/IObserver.h +67 -0
  21. data/lib/appjam/generators/Classes/org/puremvc/objectivec/interfaces/IProxy.h +53 -0
  22. data/lib/appjam/generators/Classes/org/puremvc/objectivec/interfaces/IView.h +96 -0
  23. data/lib/appjam/generators/Classes/org/puremvc/objectivec/patterns/command/MacroCommand.h +50 -0
  24. data/lib/appjam/generators/Classes/org/puremvc/objectivec/patterns/command/MacroCommand.m +101 -0
  25. data/lib/appjam/generators/Classes/org/puremvc/objectivec/patterns/command/SimpleCommand.h +28 -0
  26. data/lib/appjam/generators/Classes/org/puremvc/objectivec/patterns/command/SimpleCommand.m +34 -0
  27. data/lib/appjam/generators/Classes/org/puremvc/objectivec/patterns/facade/Facade.h +52 -0
  28. data/lib/appjam/generators/Classes/org/puremvc/objectivec/patterns/facade/Facade.m +304 -0
  29. data/lib/appjam/generators/Classes/org/puremvc/objectivec/patterns/mediator/Mediator.h +35 -0
  30. data/lib/appjam/generators/Classes/org/puremvc/objectivec/patterns/mediator/Mediator.m +101 -0
  31. data/lib/appjam/generators/Classes/org/puremvc/objectivec/patterns/observer/Notification.h +52 -0
  32. data/lib/appjam/generators/Classes/org/puremvc/objectivec/patterns/observer/Notification.m +71 -0
  33. data/lib/appjam/generators/Classes/org/puremvc/objectivec/patterns/observer/Notifier.h +40 -0
  34. data/lib/appjam/generators/Classes/org/puremvc/objectivec/patterns/observer/Notifier.m +54 -0
  35. data/lib/appjam/generators/Classes/org/puremvc/objectivec/patterns/observer/Observer.h +42 -0
  36. data/lib/appjam/generators/Classes/org/puremvc/objectivec/patterns/observer/Observer.m +67 -0
  37. data/lib/appjam/generators/Classes/org/puremvc/objectivec/patterns/proxy/Proxy.h +51 -0
  38. data/lib/appjam/generators/Classes/org/puremvc/objectivec/patterns/proxy/Proxy.m +73 -0
  39. data/lib/appjam/generators/Classes/users/ApplicationFacade.h.tt +31 -0
  40. data/lib/appjam/generators/Classes/users/ApplicationFacade.m.tt +33 -0
  41. data/lib/appjam/generators/Classes/users/controller/CreateUserCommand.h.tt +16 -0
  42. data/lib/appjam/generators/Classes/users/controller/CreateUserCommand.m.tt +27 -0
  43. data/lib/appjam/generators/Classes/users/controller/DeleteUserCommand.h.tt +16 -0
  44. data/lib/appjam/generators/Classes/users/controller/DeleteUserCommand.m.tt +21 -0
  45. data/lib/appjam/generators/Classes/users/controller/GetUsersCommand.h.tt +17 -0
  46. data/lib/appjam/generators/Classes/users/controller/GetUsersCommand.m.tt +21 -0
  47. data/lib/appjam/generators/Classes/users/controller/StartupCommand.h.tt +16 -0
  48. data/lib/appjam/generators/Classes/users/controller/StartupCommand.m.tt +29 -0
  49. data/lib/appjam/generators/Classes/users/controller/UpdateUserCommand.h.tt +16 -0
  50. data/lib/appjam/generators/Classes/users/controller/UpdateUserCommand.m.tt +27 -0
  51. data/lib/appjam/generators/Classes/users/model/UserProxy.h.tt +19 -0
  52. data/lib/appjam/generators/Classes/users/model/UserProxy.m.tt +59 -0
  53. data/lib/appjam/generators/Classes/users/model/vo/UserVO.h.tt +22 -0
  54. data/lib/appjam/generators/Classes/users/model/vo/UserVO.m.tt +47 -0
  55. data/lib/appjam/generators/Classes/users/view/ContactsMediator.h.tt +15 -0
  56. data/lib/appjam/generators/Classes/users/view/ContactsMediator.m.tt +43 -0
  57. data/lib/appjam/generators/Classes/users/view/UserFormMediator.h.tt +17 -0
  58. data/lib/appjam/generators/Classes/users/view/UserFormMediator.m.tt +57 -0
  59. data/lib/appjam/generators/Classes/users/view/UserListMediator.h.tt +17 -0
  60. data/lib/appjam/generators/Classes/users/view/UserListMediator.m.tt +59 -0
  61. data/lib/appjam/generators/Classes/users/view/components/Contacts.h.tt +27 -0
  62. data/lib/appjam/generators/Classes/users/view/components/Contacts.m.tt +46 -0
  63. data/lib/appjam/generators/Classes/users/view/components/UserForm.h.tt +37 -0
  64. data/lib/appjam/generators/Classes/users/view/components/UserForm.m.tt +118 -0
  65. data/lib/appjam/generators/Classes/users/view/components/UserList.h.tt +31 -0
  66. data/lib/appjam/generators/Classes/users/view/components/UserList.m.tt +77 -0
  67. data/lib/appjam/generators/Contacts-Info.plist.tt +28 -0
  68. data/lib/appjam/generators/Contacts.xcodeproj/eiffel.pbxuser +1671 -0
  69. data/lib/appjam/generators/Contacts.xcodeproj/eiffel.perspectivev3 +1638 -0
  70. data/lib/appjam/generators/Contacts.xcodeproj/project.pbxproj +574 -0
  71. data/lib/appjam/generators/Contacts_Prefix.pch.tt +8 -0
  72. data/lib/appjam/generators/app.rb +78 -0
  73. data/lib/appjam/generators/main.m.tt +17 -0
  74. data/lib/appjam/generators/utils/NSStringWhiteSpace.h +17 -0
  75. data/lib/appjam/generators/utils/NSStringWhiteSpace.m +31 -0
  76. data/lib/appjam/generators/utils/UIDevice.h +17 -0
  77. data/lib/appjam/generators/utils/UIDevice.m +83 -0
  78. data/lib/appjam/generators/utils/URLEncodeString.h +16 -0
  79. data/lib/appjam/generators/utils/URLEncodeString.m +29 -0
  80. data/lib/appjam/version.rb +10 -0
  81. data/spec/appjam_spec.rb +7 -0
  82. data/spec/spec_helper.rb +12 -0
  83. metadata +270 -0
@@ -0,0 +1,22 @@
1
+ //
2
+ // UserVO.h
3
+ // PureMVC_ObjectiveC
4
+ //
5
+ // PureMVC Port to ObjectiveC by Brian Knorr <brian.knorr@puremvc.org>
6
+ // PureMVC - Copyright(c) 2006-2008 Futurescale, Inc., Some rights reserved.
7
+ //
8
+
9
+ #import <UIKit/UIKit.h>
10
+
11
+
12
+ @interface UserVO : NSObject {
13
+ NSString *username, *firstName, *lastName, *email, *password, *confirmPassword, *department;
14
+ }
15
+
16
+ @property(nonatomic, retain) NSString *username, *firstName, *lastName, *email, *password, *confirmPassword, *department;
17
+
18
+ +(id)withUserName:(NSString *)username firstName:(NSString *)firstName lastName:(NSString *)lastName email:(NSString *)email password:(NSString *)password confirmPassword:(NSString *)confirmPassword department:(NSString *)department;
19
+ -(NSString *)givenName;
20
+ -(BOOL)isValid;
21
+
22
+ @end
@@ -0,0 +1,47 @@
1
+ //
2
+ // UserVO.m
3
+ // PureMVC_ObjectiveC
4
+ //
5
+ // PureMVC Port to ObjectiveC by Brian Knorr <brian.knorr@puremvc.org>
6
+ // PureMVC - Copyright(c) 2006-2008 Futurescale, Inc., Some rights reserved.
7
+ //
8
+
9
+ #import "UserVO.h"
10
+
11
+
12
+ @implementation UserVO
13
+
14
+ @synthesize username, firstName, lastName, email, password, confirmPassword, department;
15
+
16
+ +(id)withUserName:(NSString *)username firstName:(NSString *)firstName lastName:(NSString *)lastName email:(NSString *)email password:(NSString *)password confirmPassword:(NSString *)confirmPassword department:(NSString *)department {
17
+ UserVO *userVO = [[[UserVO alloc] init] autorelease];
18
+ userVO.username = username;
19
+ userVO.firstName = firstName;
20
+ userVO.lastName = lastName;
21
+ userVO.email = email;
22
+ userVO.password = password;
23
+ userVO.confirmPassword = confirmPassword;
24
+ userVO.department = department;
25
+ return userVO;
26
+ }
27
+
28
+ -(NSString *)givenName {
29
+ return [NSString stringWithFormat:@"%@ %@", firstName, lastName];
30
+ }
31
+
32
+ -(BOOL)isValid {
33
+ return username != nil && password != nil && confirmPassword != nil && [password isEqualToString:confirmPassword];
34
+ }
35
+
36
+ -(void)dealloc {
37
+ self.username = nil;
38
+ self.firstName = nil;
39
+ self.lastName = nil;
40
+ self.email = nil;
41
+ self.password = nil;
42
+ self.confirmPassword = nil;
43
+ self.department = nil;
44
+ [super dealloc];
45
+ }
46
+
47
+ @end
@@ -0,0 +1,15 @@
1
+ //
2
+ // ContactsMediator.h
3
+ // PureMVC_ObjectiveC
4
+ //
5
+ // PureMVC Port to ObjectiveC by Brian Knorr <brian.knorr@puremvc.org>
6
+ // PureMVC - Copyright(c) 2006-2008 Futurescale, Inc., Some rights reserved.
7
+ //
8
+
9
+ #import "Mediator.h"
10
+
11
+ @interface ContactsMediator : Mediator {
12
+
13
+ }
14
+
15
+ @end
@@ -0,0 +1,43 @@
1
+ //
2
+ // ContactsMediator.m
3
+ // PureMVC_ObjectiveC
4
+ //
5
+ // PureMVC Port to ObjectiveC by Brian Knorr <brian.knorr@puremvc.org>
6
+ // PureMVC - Copyright(c) 2006-2008 Futurescale, Inc., Some rights reserved.
7
+ //
8
+
9
+ #import "ContactsMediator.h"
10
+ #import "Contacts.h"
11
+ #import "ApplicationFacade.h"
12
+
13
+ @implementation ContactsMediator
14
+
15
+ +(NSString *)NAME {
16
+ return @"ContactsMediator";
17
+ }
18
+
19
+ -(Contacts *)viewComponent {
20
+ return viewComponent;
21
+ }
22
+
23
+ -(void)initializeMediator {
24
+ self.mediatorName = [ContactsMediator NAME];
25
+ }
26
+
27
+ -(NSArray *)listNotificationInterests {
28
+ return [NSArray arrayWithObjects:ShowUserForm, ShowUserList, ShowError, nil];
29
+ }
30
+
31
+ -(void)handleNotification:(id<INotification>)notification {
32
+
33
+ if ([[notification name] isEqualToString:ShowUserForm]) {
34
+ [self.viewComponent showUserForm];
35
+ } else if ([[notification name] isEqualToString:ShowUserList]) {
36
+ [self.viewComponent showUserList];
37
+ } else if ([[notification name] isEqualToString:ShowError]) {
38
+ [self.viewComponent showError:[notification body]];
39
+ }
40
+ }
41
+
42
+
43
+ @end
@@ -0,0 +1,17 @@
1
+ //
2
+ // UserFormMediator.h
3
+ // PureMVC_ObjectiveC
4
+ //
5
+ // PureMVC Port to ObjectiveC by Brian Knorr <brian.knorr@puremvc.org>
6
+ // PureMVC - Copyright(c) 2006-2008 Futurescale, Inc., Some rights reserved.
7
+ //
8
+
9
+ #import <UIKit/UIKit.h>
10
+ #import "Mediator.h"
11
+ #import "UserForm.h"
12
+ #import "ApplicationFacade.h"
13
+
14
+ @interface UserFormMediator : Mediator <UserFormViewControllerDelegate> {
15
+ }
16
+
17
+ @end
@@ -0,0 +1,57 @@
1
+ //
2
+ // UserFormMediator.m
3
+ // PureMVC_ObjectiveC
4
+ //
5
+ // PureMVC Port to ObjectiveC by Brian Knorr <brian.knorr@puremvc.org>
6
+ // PureMVC - Copyright(c) 2006-2008 Futurescale, Inc., Some rights reserved.
7
+ //
8
+
9
+ #import "UserFormMediator.h"
10
+
11
+ @implementation UserFormMediator
12
+
13
+ +(NSString *)NAME {
14
+ return @"UserFormMediator";
15
+ }
16
+
17
+ -(UserForm *)viewComponent {
18
+ return viewComponent;
19
+ }
20
+
21
+ -(void)initializeMediator {
22
+ self.mediatorName = [UserFormMediator NAME];
23
+ }
24
+
25
+ -(void)onRegister {
26
+ [self.viewComponent setDelegate:self];
27
+ }
28
+
29
+ -(NSArray *)listNotificationInterests {
30
+ return [NSArray arrayWithObjects:ShowEditUser, ShowNewUser, nil];
31
+ }
32
+
33
+ -(void)createUserSelected:(UserVO *)userVO {
34
+ [self sendNotification:CreateUser body:userVO];
35
+ }
36
+
37
+ -(void)updateUserSelected:(UserVO *)userVO {
38
+ [self sendNotification:UpdateUser body:userVO];
39
+ }
40
+
41
+ -(void)handleNotification:(id<INotification>)notification {
42
+ [self.viewComponent setView:nil];
43
+ if ([[notification name] isEqualToString:ShowEditUser]) {
44
+ [self.viewComponent setUserVO:[notification body]];
45
+ [self.viewComponent setMode:EDIT];
46
+ } else if ([[notification name] isEqualToString:ShowNewUser]) {
47
+ [self.viewComponent setUserVO:[[[UserVO alloc] init] autorelease]];
48
+ [self.viewComponent setMode:NEW];
49
+ }
50
+ [self sendNotification:ShowUserForm body:self.viewComponent];
51
+ }
52
+
53
+ -(void)dealloc {
54
+ [super dealloc];
55
+ }
56
+
57
+ @end
@@ -0,0 +1,17 @@
1
+ //
2
+ // UserListMediator.h
3
+ // PureMVC_ObjectiveC
4
+ //
5
+ // PureMVC Port to ObjectiveC by Brian Knorr <brian.knorr@puremvc.org>
6
+ // PureMVC - Copyright(c) 2006-2008 Futurescale, Inc., Some rights reserved.
7
+ //
8
+
9
+ #import <UIKit/UIKit.h>
10
+ #import "Mediator.h"
11
+ #import "UserList.h"
12
+ #import "ApplicationFacade.h"
13
+
14
+ @interface UserListMediator : Mediator <UserListViewControllerDelegate>{
15
+ }
16
+
17
+ @end
@@ -0,0 +1,59 @@
1
+ //
2
+ // UserListMediator.m
3
+ // PureMVC_ObjectiveC
4
+ //
5
+ // PureMVC Port to ObjectiveC by Brian Knorr <brian.knorr@puremvc.org>
6
+ // PureMVC - Copyright(c) 2006-2008 Futurescale, Inc., Some rights reserved.
7
+ //
8
+
9
+ #import "UserListMediator.h"
10
+
11
+ @implementation UserListMediator
12
+
13
+ +(NSString *)NAME {
14
+ return @"UserListMediator";
15
+ }
16
+
17
+ -(UserList *)viewComponent {
18
+ return viewComponent;
19
+ }
20
+
21
+ -(void)initializeMediator {
22
+ self.mediatorName = [UserListMediator NAME];
23
+ }
24
+
25
+ -(void)onRegister {
26
+ [self.viewComponent setDelegate:self];
27
+ }
28
+
29
+ -(NSArray *)listNotificationInterests {
30
+ return [NSArray arrayWithObjects:GetUsersSuccess, nil];
31
+ }
32
+
33
+ -(void)handleNotification:(id<INotification>)notification {
34
+ if ([[notification name] isEqualToString:GetUsersSuccess]) {
35
+ [self.viewComponent reloadUsers:[notification body]];
36
+ }
37
+ }
38
+
39
+ -(void)userListAppeared {
40
+ [self sendNotification:GetUsers];
41
+ }
42
+
43
+ -(void)userSelected:(UserVO *)userVO {
44
+ [self sendNotification:ShowEditUser body:userVO];
45
+ }
46
+
47
+ -(void)deleteUserSelected:(UserVO *)userVO {
48
+ [self sendNotification:DeleteUser body:userVO];
49
+ }
50
+
51
+ -(void)newUserSelected {
52
+ [self sendNotification:ShowNewUser];
53
+ }
54
+
55
+ -(void)dealloc {
56
+ [super dealloc];
57
+ }
58
+
59
+ @end
@@ -0,0 +1,27 @@
1
+ //
2
+ // Contacts.h
3
+ // PureMVC_ObjectiveC
4
+ //
5
+ // PureMVC Port to ObjectiveC by Brian Knorr <brian.knorr@puremvc.org>
6
+ // PureMVC - Copyright(c) 2006-2008 Futurescale, Inc., Some rights reserved.
7
+ //
8
+
9
+ #import <UIKit/UIKit.h>
10
+ #import "UserList.h"
11
+ #import "UserForm.h"
12
+
13
+ @interface Contacts : UIView {
14
+ UINavigationController *navigation;
15
+ UserList *userList;
16
+ UserForm *userForm;
17
+ }
18
+
19
+ @property(nonatomic, retain) UINavigationController *navigation;
20
+ @property(nonatomic, retain) UserList *userList;
21
+ @property(nonatomic, retain) UserForm *userForm;
22
+
23
+ -(void)showUserForm;
24
+ -(void)showUserList;
25
+ -(void)showError:(NSString *)message;
26
+
27
+ @end
@@ -0,0 +1,46 @@
1
+ //
2
+ // Contacts.m
3
+ // PureMVC_ObjectiveC
4
+ //
5
+ // PureMVC Port to ObjectiveC by Brian Knorr <brian.knorr@puremvc.org>
6
+ // PureMVC - Copyright(c) 2006-2008 Futurescale, Inc., Some rights reserved.
7
+ //
8
+
9
+ #import "Contacts.h"
10
+
11
+
12
+ @implementation Contacts
13
+
14
+ @synthesize userList, userForm, navigation;
15
+
16
+ -(id)initWithFrame:(CGRect)frame {
17
+ if (self = [super initWithFrame:frame]) {
18
+ self.navigation = [[[UINavigationController alloc] init] autorelease];
19
+ self.userList = [[[UserList alloc] init] autorelease];
20
+ self.userForm = [[[UserForm alloc] init] autorelease];
21
+ [navigation pushViewController:userList animated:NO];
22
+ [self addSubview:navigation.view];
23
+ }
24
+ return self;
25
+ }
26
+
27
+ -(void)showUserForm {
28
+ [navigation pushViewController:userForm animated:YES];
29
+ }
30
+
31
+ -(void)showUserList {
32
+ [navigation popToRootViewControllerAnimated:YES];
33
+ }
34
+
35
+ -(void)showError:(NSString *)message {
36
+ [[[[UIAlertView alloc] initWithTitle:@"Error:" message:message delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil] autorelease] show];
37
+ }
38
+
39
+ - (void)dealloc {
40
+ self.navigation = nil;
41
+ self.userList = nil;
42
+ self.userForm = nil;
43
+ [super dealloc];
44
+ }
45
+
46
+ @end
@@ -0,0 +1,37 @@
1
+ //
2
+ // UserForm.h
3
+ // PureMVC_ObjectiveC
4
+ //
5
+ // PureMVC Port to ObjectiveC by Brian Knorr <brian.knorr@puremvc.org>
6
+ // PureMVC - Copyright(c) 2006-2008 Futurescale, Inc., Some rights reserved.
7
+ //
8
+
9
+ #import <UIKit/UIKit.h>
10
+ #import "UserVO.h"
11
+
12
+ @protocol UserFormViewControllerDelegate
13
+
14
+ -(void)createUserSelected:(UserVO *)userVO;
15
+ -(void)updateUserSelected:(UserVO *)userVO;
16
+
17
+ @end
18
+
19
+ typedef enum {
20
+ NEW, EDIT
21
+ } Mode;
22
+
23
+ @interface UserForm : UITableViewController {
24
+ UserVO *userVO;
25
+ UITextField *firstNameTextField, *lastNameTextField, *emailTextField, *usernameTextField, *passwordTextField, *confirmPasswordTextField;
26
+ Mode mode;
27
+ id<UserFormViewControllerDelegate> delegate;
28
+ }
29
+
30
+ @property(nonatomic, retain) UserVO *userVO;
31
+ @property(nonatomic, retain) UITextField *firstNameTextField, *lastNameTextField, *emailTextField, *usernameTextField, *passwordTextField, *confirmPasswordTextField;
32
+ @property Mode mode;
33
+ @property(nonatomic, retain) id<UserFormViewControllerDelegate> delegate;
34
+
35
+ -(UITextField *)textFieldWithPlaceHolder:(NSString *)placeHolder frame:(CGRect)frame;
36
+
37
+ @end
@@ -0,0 +1,118 @@
1
+ //
2
+ // UserForm.m
3
+ // PureMVC_ObjectiveC
4
+ //
5
+ // PureMVC Port to ObjectiveC by Brian Knorr <brian.knorr@puremvc.org>
6
+ // PureMVC - Copyright(c) 2006-2008 Futurescale, Inc., Some rights reserved.
7
+ //
8
+
9
+ #import "UserForm.h"
10
+
11
+
12
+ @implementation UserForm
13
+
14
+ @synthesize userVO, firstNameTextField, lastNameTextField, emailTextField, usernameTextField, passwordTextField, confirmPasswordTextField, mode, delegate;
15
+
16
+ -(id)init {
17
+ return [super initWithStyle:UITableViewStyleGrouped];
18
+ }
19
+
20
+ - (void)loadView {
21
+ [super loadView];
22
+ self.navigationItem.title = @"User Profile";
23
+ self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSave target:self action:@selector(saveUser)];
24
+ self.tableView.scrollEnabled = NO;
25
+ }
26
+
27
+ - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
28
+ return 1;
29
+ }
30
+
31
+ - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
32
+ return 3;
33
+ }
34
+
35
+ - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
36
+ UITableViewCell *cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:nil] autorelease];
37
+
38
+ cell.selectionStyle = UITableViewCellSelectionStyleNone;
39
+ switch (indexPath.row) {
40
+ case 0: { //First and Last Name
41
+ self.firstNameTextField = [self textFieldWithPlaceHolder:@"First Name" frame:CGRectMake(10,12,135,25)];
42
+ firstNameTextField.text = userVO.firstName;
43
+ [cell.contentView addSubview:firstNameTextField];
44
+
45
+ self.lastNameTextField = [self textFieldWithPlaceHolder:@"Last Name" frame:CGRectMake(150,12,135,25)];
46
+ lastNameTextField.text = userVO.lastName;
47
+ [cell.contentView addSubview:lastNameTextField];
48
+ break;
49
+ }
50
+ case 1: { //username and email
51
+ self.emailTextField = [self textFieldWithPlaceHolder:@"Email" frame:CGRectMake(10,12,155,25)];
52
+ emailTextField.text = userVO.email;
53
+ [cell.contentView addSubview:emailTextField];
54
+
55
+ self.usernameTextField = [self textFieldWithPlaceHolder:@"Username*" frame:CGRectMake(170,12,115,25)];
56
+ usernameTextField.text = userVO.username;
57
+ if (mode == EDIT) {
58
+ usernameTextField.enabled = NO;
59
+ }
60
+ [cell.contentView addSubview:usernameTextField];
61
+ break;
62
+ }
63
+ case 2: { //password and confirm
64
+ self.passwordTextField = [self textFieldWithPlaceHolder:@"Password*" frame:CGRectMake(10,12,135,25)];
65
+ passwordTextField.secureTextEntry = YES;
66
+ passwordTextField.text = userVO.password;
67
+ [cell.contentView addSubview:passwordTextField];
68
+
69
+ self.confirmPasswordTextField = [self textFieldWithPlaceHolder:@"Confirm*" frame:CGRectMake(150,12,135,25)];
70
+ confirmPasswordTextField.secureTextEntry = YES;
71
+ confirmPasswordTextField.text = userVO.password;
72
+ [cell.contentView addSubview:confirmPasswordTextField];
73
+ break;
74
+ }
75
+ }
76
+
77
+ return cell;
78
+ }
79
+
80
+ - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
81
+
82
+ }
83
+
84
+ -(void)saveUser {
85
+ userVO.firstName = firstNameTextField.text;
86
+ userVO.lastName = lastNameTextField.text;
87
+ userVO.email = emailTextField.text;
88
+ userVO.username = usernameTextField.text;
89
+ userVO.password = passwordTextField.text;
90
+ userVO.confirmPassword = confirmPasswordTextField.text;
91
+ if (mode == NEW) {
92
+ [delegate createUserSelected:userVO];
93
+ } else if (mode == EDIT) {
94
+ [delegate updateUserSelected:userVO];
95
+ }
96
+ }
97
+
98
+ -(UITextField *)textFieldWithPlaceHolder:(NSString *)placeHolder frame:(CGRect)frame {
99
+ UITextField *textField = [[[UITextField alloc] initWithFrame:frame] autorelease];
100
+ textField.placeholder = placeHolder;
101
+ textField.clearButtonMode = UITextFieldViewModeWhileEditing;
102
+ textField.autocorrectionType = UITextAutocorrectionTypeNo;
103
+ return textField;
104
+ }
105
+
106
+ - (void)dealloc {
107
+ self.userVO = nil;
108
+ self.firstNameTextField = nil;
109
+ self.lastNameTextField = nil;
110
+ self.emailTextField = nil;
111
+ self.usernameTextField = nil;
112
+ self.passwordTextField = nil;
113
+ self.confirmPasswordTextField = nil;
114
+ self.delegate = nil;
115
+ [super dealloc];
116
+ }
117
+
118
+ @end