<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -165,7 +165,7 @@ UIColor * checkmarkColor = nil;
 	NSDictionary * inputProxyDict = [propDict objectForKey:@&quot;input&quot;];
 	if ([inputProxyDict isKindOfClass:[NSDictionary class]]){
 		UiModule * theUiModule = (UiModule *)[[TitaniumHost sharedHost] moduleNamed:@&quot;UiModule&quot;];
-		UIButtonProxy * thisInputProxy = [theUiModule proxyForObject:inputProxyDict];
+		UIButtonProxy * thisInputProxy = [theUiModule proxyForObject:inputProxyDict recurse:YES];
 		if (thisInputProxy != nil) [self setInputProxy:thisInputProxy];
 	}
 }</diff>
      <filename>iphone/Classes/TitaniumTableViewController.m</filename>
    </modified>
    <modified>
      <diff>@@ -211,6 +211,7 @@ NSString * const ControllerString = @&quot;Controller&quot;;
 	if ([backgroundImageName isKindOfClass:NSStringClass]){
 		[self setBackgroundImage:[theTiHost imageForResource:backgroundImageName]];
 	}
+
 	
 	id orientationObject = [inputState objectForKey:@&quot;orientation&quot;];
 	if (orientationObject != nil) {
@@ -233,6 +234,11 @@ NSString * const ControllerString = @&quot;Controller&quot;;
 	if ([fullScreenObject respondsToSelector:@selector(boolValue)]) {
 		[self setFullscreen:[fullScreenObject boolValue]];
 	}
+
+	id hidesBackObject = [inputState objectForKey:@&quot;isPrimary&quot;];
+	if ([hidesBackObject respondsToSelector:@selector(boolValue)]) {
+		[[self navigationItem] setHidesBackButton:[hidesBackObject boolValue]];
+	}
 	
 	[self setStatusBarStyleObject:[inputState objectForKey:@&quot;statusBarStyle&quot;]];
 	</diff>
      <filename>iphone/Classes/TitaniumViewController.m</filename>
    </modified>
    <modified>
      <diff>@@ -27,7 +27,7 @@
 		var btn5 = Ti.UI.createButton({title:'Moo'});
 		btn5.addEventListener('click',function(){Ti.UI.currentWindow.setFullscreen(true);});
 
-		var btn6 = Ti.UI.createTextField({value:'Texty!',div:'sliderPlace',color:'red',backgroundColor:'blue',borderColor:'green'});
+		var btn6 = Ti.UI.createTextArea({value:'Texty!',div:'sliderPlace',keyboardType:Ti.UI.KEYBOARD_EMAIL_ADDRESS,textAlign:'center',color:'red',backgroundColor:'blue',borderColor:'green'});
 //		btn6.width=100;
 		btn6.addEventListener('change',function(foo){document.getElementById('sliderValue').innerHTML='Newvalue' + foo.value;});
 //		btn6.addEventListener('valuechange',function(foo){</diff>
      <filename>iphone/Resources/ui.html</filename>
    </modified>
    <modified>
      <diff>@@ -34,6 +34,27 @@
 	NSArray * segmentLabelArray;
 	NSArray * segmentImageArray;
 
+	//For texts
+	UITextAutocapitalizationType autocapitalizationType; // default is UITextAutocapitalizationTypeNone
+	UITextAutocorrectionType autocorrectionType;         // default is UITextAutocorrectionTypeDefault
+	UIKeyboardType keyboardType;                         // default is UIKeyboardTypeDefault
+	UIKeyboardAppearance keyboardAppearance;             // default is UIKeyboardAppearanceDefault
+	UIReturnKeyType returnKeyType;                       // default is UIReturnKeyDefault (See note under UIReturnKeyType enum)
+	BOOL enablesReturnKeyAutomatically;                  // default is NO (when YES, will automatically disable return key when text widget has zero-length contents, and will automatically enable when text widget has non-zero-length contents)
+	BOOL secureTextEntry;      // default is NO
+	UITextAlignment         textAlignment;
+	UITextBorderStyle       borderStyle;
+	BOOL                    clearsOnBeginEditing;
+	UITextFieldViewMode	clearButtonMode;
+	UIButtonProxy	*leftViewProxy;
+	UITextFieldViewMode	leftViewMode;   
+	UIButtonProxy	*rightViewProxy;
+	UITextFieldViewMode	rightViewMode;  
+	
+	
+	
+	NSString * placeholderText;
+
 	//Yes, even integer and bools are represented as floats.
 	float minValue;		//Default is 0
 	float maxValue;		//Default is 1
@@ -71,6 +92,14 @@
 @property(nonatomic,readwrite,assign)	float floatValue;
 @property(nonatomic,readwrite,copy)		NSString * stringValue;
 
+@property(nonatomic,readwrite,copy)		NSString * placeholderText;
+
+@property(nonatomic,readwrite,assign)	UITextFieldViewMode	leftViewMode;	
+@property(nonatomic,readwrite,assign)	UITextFieldViewMode	rightViewMode;	
+@property(nonatomic,readwrite,retain)	UIButtonProxy	*leftViewProxy;
+@property(nonatomic,readwrite,retain)	UIButtonProxy	*rightViewProxy;
+
+
 - (IBAction) onClick: (id) sender;
 - (void) setPropertyDict: (NSDictionary *) newDict;
 
@@ -89,7 +118,7 @@
 - (void) setWindow:(NSString *)tokenString navSide:(id) isLeftObject button: (NSDictionary *) buttonObject options: (NSDictionary *) optionsObject;
 - (void) setWindow:(NSString *)tokenString toolbar: (id) barObject options: (id) optionsObject;
 
-- (UIButtonProxy *) proxyForObject: (id) proxyObject;
+- (UIButtonProxy *) proxyForObject: (id) proxyObject recurse: (BOOL) recursion;
 
 @end
 </diff>
      <filename>iphone/modules/UiModule/UiModule.h</filename>
    </modified>
    <modified>
      <diff>@@ -93,9 +93,9 @@ int barButtonSystemItemForString(NSString * inputString){
 @implementation UIButtonProxy
 @synthesize nativeBarButton, segmentLabelArray, segmentImageArray;
 @synthesize titleString, iconPath, templateValue, barButtonStyle, nativeView, labelView, progressView;
-@synthesize minValue,maxValue,floatValue,stringValue;
+@synthesize minValue,maxValue,floatValue,stringValue, placeholderText;
 @synthesize elementColor, elementBorderColor, elementBackgroundColor;
-
+@synthesize leftViewProxy, rightViewProxy, leftViewMode, rightViewMode;
 
 - (id) init;
 {
@@ -123,11 +123,11 @@ int barButtonSystemItemForString(NSString * inputString){
 
 - (void) setPropertyDict: (NSDictionary *) newDict;
 {	
+//General purpose
 	GRAB_IF_STRING(@&quot;title&quot;,titleString);
 	GRAB_IF_STRING(@&quot;image&quot;,iconPath);
-
-	GRAB_IF_SELECTOR(@&quot;style&quot;,intValue,barButtonStyle);
-
+	
+//Sliders and other value-based things.
 	GRAB_IF_SELECTOR(@&quot;min&quot;,floatValue,minValue);
 	GRAB_IF_SELECTOR(@&quot;max&quot;,floatValue,maxValue);
 
@@ -144,6 +144,7 @@ int barButtonSystemItemForString(NSString * inputString){
 		needsRefreshing = YES;
 	}
 
+//Segmented
 	id labelArray = [newDict objectForKey:@&quot;labels&quot;];
 	if ([labelArray isKindOfClass:[NSArray class]]){
 		[self setSegmentLabelArray:labelArray];
@@ -158,6 +159,7 @@ int barButtonSystemItemForString(NSString * inputString){
 		[self setSegmentImageArray:nil];
 	}
 
+//Colors
 	id bgColorObject = [newDict objectForKey:@&quot;backgroundColor&quot;];
 	if (bgColorObject != nil)[self setElementBackgroundColor:UIColorWebColorNamed(bgColorObject)];
 
@@ -167,13 +169,13 @@ int barButtonSystemItemForString(NSString * inputString){
 	id borderColorObject = [newDict objectForKey:@&quot;borderColor&quot;];
 	if (borderColorObject != nil)[self setElementBorderColor:UIColorWebColorNamed(borderColorObject)];
 
-
+//Sizes
 	GRAB_IF_SELECTOR(@&quot;width&quot;,floatValue,frame.size.width);
 	GRAB_IF_SELECTOR(@&quot;height&quot;,floatValue,frame.size.height);
 	GRAB_IF_SELECTOR(@&quot;x&quot;,floatValue,frame.origin.x);
 	GRAB_IF_SELECTOR(@&quot;y&quot;,floatValue,frame.origin.y);
 
-	
+//System button	
 	id newTemplate = [newDict objectForKey:@&quot;systemButton&quot;];
 	if ([newTemplate isKindOfClass:[NSString class]]) {
 		[self setTemplateValue:barButtonSystemItemForString(newTemplate)];
@@ -183,8 +185,43 @@ int barButtonSystemItemForString(NSString * inputString){
 		needsRefreshing = YES;
 	}
 	
+//Tab bar stuff
+	GRAB_IF_SELECTOR(@&quot;style&quot;,intValue,barButtonStyle);
+
+//Text view/field stuff
+	GRAB_IF_SELECTOR(@&quot;autocapitalize&quot;,intValue,autocapitalizationType);
+
+	GRAB_IF_SELECTOR(@&quot;enableReturnKey&quot;,boolValue,enablesReturnKeyAutomatically);
+
+	GRAB_IF_SELECTOR(@&quot;returnKeyType&quot;,intValue,returnKeyType);
+	GRAB_IF_SELECTOR(@&quot;keyboardType&quot;,intValue,keyboardType);
+
+	id autoCorrectObject = [newDict objectForKey:@&quot;autocorrect&quot;];
+	if ([autoCorrectObject respondsToSelector:@selector(boolValue)]){
+		autocorrectionType = ([autoCorrectObject boolValue]?UITextAutocorrectionTypeYes:UITextAutocorrectionTypeNo);
+	} else if (autoCorrectObject == [NSNull null]) {
+		autocorrectionType = UITextAutocorrectionTypeDefault;
+	}
+	
+	GRAB_IF_STRING(@&quot;hintText&quot;,placeholderText);
+
+	id alignmentObject = [newDict objectForKey:@&quot;textAlign&quot;];
+	if ([alignmentObject isKindOfClass:[NSString class]]){
+		alignmentObject = [alignmentObject lowercaseString];
+		if ([alignmentObject isEqualToString:@&quot;left&quot;]) textAlignment = UITextAlignmentLeft;
+		else if ([alignmentObject isEqualToString:@&quot;center&quot;]) textAlignment = UITextAlignmentCenter;
+		else if ([alignmentObject isEqualToString:@&quot;right&quot;]) textAlignment = UITextAlignmentRight;
+	}
+
+	GRAB_IF_SELECTOR(@&quot;clearOnEdit&quot;,boolValue,clearsOnBeginEditing);
+
+	GRAB_IF_SELECTOR(@&quot;borderStyle&quot;,intValue,borderStyle);
 	
+	GRAB_IF_SELECTOR(@&quot;clearButtonMode&quot;,intValue,clearButtonMode);
+	GRAB_IF_SELECTOR(@&quot;leftButtonMode&quot;,intValue,leftViewMode);
+	GRAB_IF_SELECTOR(@&quot;rightButtonMode&quot;,intValue,rightViewMode);
 	
+	//Because the proxies are best from the UIModule itself, we don't check here.
 }
 
 - (BOOL) updateNativeView: (BOOL) forBar;
@@ -245,6 +282,13 @@ int barButtonSystemItemForString(NSString * inputString){
 				resultView = [[UITextField alloc] initWithFrame:viewFrame];
 				[(UITextField *)resultView setDelegate:self];
 			}
+			[(UITextField *)resultView setBorderStyle:borderStyle];
+			[(UITextField *)resultView setClearsOnBeginEditing:clearsOnBeginEditing];
+			[(UITextField *)resultView setClearButtonMode:clearButtonMode];
+			[(UITextField *)resultView setLeftViewMode:leftViewMode];
+			[(UITextField *)resultView setLeftView:[leftViewProxy nativeView]];
+			[(UITextField *)resultView setRightViewMode:rightViewMode];
+			[(UITextField *)resultView setRightView:[rightViewProxy nativeView]];
 		} else {
 			if ([nativeView isKindOfClass:[UITextView class]]){
 				resultView = [nativeView retain];
@@ -256,6 +300,12 @@ int barButtonSystemItemForString(NSString * inputString){
 		}
 		if (elementColor != nil) [(UITextField *)resultView setTextColor:elementColor];
 		[(UITextField *)resultView setText:stringValue];
+		[(UITextField *)resultView setAutocorrectionType:autocorrectionType];
+		[(UITextField *)resultView setAutocapitalizationType:autocapitalizationType];
+		[(UITextField *)resultView setTextAlignment:textAlignment];
+		[(UITextField *)resultView setKeyboardType:keyboardType];
+		[(UITextField *)resultView setReturnKeyType:returnKeyType];
+		[(UITextField *)resultView setEnablesReturnKeyAutomatically:enablesReturnKeyAutomatically];
 		[resultView setBackgroundColor:elementBackgroundColor];
 		
 
@@ -657,7 +707,7 @@ int barButtonSystemItemForString(NSString * inputString){
 	return buttonToken;
 }
 
-- (UIButtonProxy *) proxyForObject: (id) proxyObject;
+- (UIButtonProxy *) proxyForObject: (id) proxyObject recurse: (BOOL) recursion;
 {
 	NSString * token = nil;
 	if ([proxyObject isKindOfClass:[NSDictionary class]]){
@@ -669,6 +719,18 @@ int barButtonSystemItemForString(NSString * inputString){
 		if ([divAttributeDict isKindOfClass:[NSDictionary class]])[result setPropertyDict:divAttributeDict];
 
 		[result setPropertyDict:proxyObject];
+
+		if (recursion){
+			id leftProxy = [proxyObject objectForKey:@&quot;leftButton&quot;];
+			if (leftProxy != nil){
+				[result setLeftViewProxy:[self proxyForObject:leftProxy recurse:NO]];
+			}
+			id rightProxy = [proxyObject objectForKey:@&quot;rightButton&quot;];
+			if (rightProxy != nil){
+				[result setLeftViewProxy:[self proxyForObject:rightProxy recurse:NO]];
+			}
+		}
+		
 		return result;
 
 	} else if ([proxyObject isKindOfClass:[NSString class]]){
@@ -812,7 +874,7 @@ int barButtonSystemItemForString(NSString * inputString){
 	
 	UIButtonProxy * ourButton = nil;
 	if ([buttonObject isKindOfClass:[NSDictionary class]]){
-		ourButton = [self proxyForObject:buttonObject];
+		ourButton = [self proxyForObject:buttonObject recurse:YES];
 		if (ourButton == nil) return;
 	} else if ((buttonObject != nil) &amp;&amp; (buttonObject != (id)[NSNull null])) {
 		return;
@@ -850,7 +912,7 @@ int barButtonSystemItemForString(NSString * inputString){
 	if ([barObject isKindOfClass:[NSArray class]]){
 		NSMutableArray *result = [NSMutableArray arrayWithCapacity:[barObject count]];
 		for (NSDictionary * thisButtonDict in barObject){
-			UIButtonProxy * thisProxy = [self proxyForObject:thisButtonDict];
+			UIButtonProxy * thisProxy = [self proxyForObject:thisButtonDict recurse:YES];
 			if (thisProxy == nil) return;
 			[result addObject:thisProxy];
 		}
@@ -867,7 +929,7 @@ int barButtonSystemItemForString(NSString * inputString){
 	TitaniumViewController * ourVC = [[TitaniumHost sharedHost] titaniumViewControllerForToken:tokenString];
 	if ((ourVC == nil) || ![viewObject isKindOfClass:dictClass]) return;
 	
-	UIButtonProxy * ourNativeViewProxy = [self proxyForObject:viewObject];
+	UIButtonProxy * ourNativeViewProxy = [self proxyForObject:viewObject recurse:YES];
 	if (ourNativeViewProxy == nil) return;
 	
 	[ourVC performSelectorOnMainThread:@selector(addNativeViewProxy:) withObject:ourNativeViewProxy waitUntilDone:NO];
@@ -1134,7 +1196,35 @@ int barButtonSystemItemForString(NSString * inputString){
 			[NSNumber numberWithInt:TitaniumViewControllerPortrait],@&quot;PORTRAIT&quot;,
 			[NSNumber numberWithInt:TitaniumViewControllerLandscape],@&quot;LANDSCAPE&quot;,
 			[NSNumber numberWithInt:TitaniumViewControllerLandscapeOrPortrait],@&quot;PORTRAIT_AND_LANDSCAPE&quot;,
-
+			[NSNumber numberWithInt:UIReturnKeyGo],@&quot;RETURNKEY_GO&quot;,
+			[NSNumber numberWithInt:UIReturnKeyGoogle],@&quot;RETURNKEY_GOOGLE&quot;,
+			[NSNumber numberWithInt:UIReturnKeyJoin],@&quot;RETURNKEY_JOIN&quot;,
+			[NSNumber numberWithInt:UIReturnKeyNext],@&quot;RETURNKEY_NEXT&quot;,
+			[NSNumber numberWithInt:UIReturnKeySearch],@&quot;RETURNKEY_SEARCH&quot;,
+			[NSNumber numberWithInt:UIReturnKeySend],@&quot;RETURNKEY_SEND&quot;,
+			[NSNumber numberWithInt:UIReturnKeyDone],@&quot;RETURNKEY_DONE&quot;,
+			[NSNumber numberWithInt:UIReturnKeyDefault],@&quot;RETURNKEY_DEFAULT&quot;,
+			[NSNumber numberWithInt:UIReturnKeyRoute],@&quot;RETURNKEY_ROUTE&quot;,
+			[NSNumber numberWithInt:UIReturnKeyYahoo],@&quot;RETURNKEY_YAHOO&quot;,
+			[NSNumber numberWithInt:UIReturnKeyEmergencyCall],@&quot;RETURNKEY_EMERGENCY_CALL&quot;,
+
+			[NSNumber numberWithInt:UIKeyboardTypeASCIICapable],@&quot;KEYBOARD_ASCII&quot;,
+			[NSNumber numberWithInt:UIKeyboardTypeURL],@&quot;KEYBOARD_URL&quot;,
+			[NSNumber numberWithInt:UIKeyboardTypePhonePad],@&quot;KEYBOARD_PHONE_PAD&quot;,
+			[NSNumber numberWithInt:UIKeyboardTypeNumbersAndPunctuation],@&quot;KEYBOARD_NUMBERS_PUNCTUATION&quot;,
+			[NSNumber numberWithInt:UIKeyboardTypeNumberPad],@&quot;KEYBOARD_NUMBER_PAD&quot;,
+			[NSNumber numberWithInt:UIKeyboardTypeEmailAddress],@&quot;KEYBOARD_EMAIL_ADDRESS&quot;,
+			[NSNumber numberWithInt:UIKeyboardTypeDefault],@&quot;KEYBOARD_DEFAULT&quot;,
+
+			[NSNumber numberWithInt:UITextFieldViewModeNever],@&quot;INPUT_BUTTONMODE_NEVER&quot;,
+			[NSNumber numberWithInt:UITextFieldViewModeAlways],@&quot;INPUT_BUTTONMODE_ALWAYS&quot;,
+			[NSNumber numberWithInt:UITextFieldViewModeWhileEditing],@&quot;INPUT_BUTTONMODE_ONFOCUS&quot;,
+			[NSNumber numberWithInt:UITextFieldViewModeUnlessEditing],@&quot;INPUT_BUTTONMODE_ONBLUR&quot;,
+
+			[NSNumber numberWithInt:UITextBorderStyleNone],@&quot;INPUT_BORDERSTYLE_NONE&quot;,
+			[NSNumber numberWithInt:UITextBorderStyleLine],@&quot;INPUT_BORDERSTYLE_LINE&quot;,
+			[NSNumber numberWithInt:UITextBorderStyleBezel],@&quot;INPUT_BORDERSTYLE_BEZEL&quot;,
+			[NSNumber numberWithInt:UITextBorderStyleRoundedRect],@&quot;INPUT_BORDERSTYLE_ROUNDED&quot;,
 
 			[NSDictionary dictionaryWithObjectsAndKeys:
 					[TitaniumJSCode codeWithString:createGroupedViewString],@&quot;createGroupedView&quot;,</diff>
      <filename>iphone/modules/UiModule/UiModule.m</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>c2862e763b41d32e9df14310eafe52b67cddde1e</id>
    </parent>
  </parents>
  <author>
    <name>Blain Hamon</name>
    <email>blain@Millenium-Falcon.local</email>
  </author>
  <url>http://github.com/appcelerator/titanium_mobile/commit/edf2da9ac80a8599001bf66e2900d74cd8a04e6c</url>
  <id>edf2da9ac80a8599001bf66e2900d74cd8a04e6c</id>
  <committed-date>2009-06-30T19:52:08-07:00</committed-date>
  <authored-date>2009-06-30T19:52:08-07:00</authored-date>
  <message>Text field properties implemented</message>
  <tree>0a15a0270a79cdcd93366b14551f13e4cadef1fc</tree>
  <committer>
    <name>Blain Hamon</name>
    <email>blain@Millenium-Falcon.local</email>
  </committer>
</commit>
