123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- Namespace mojox
- #rem monkeydoc The TextField class.
- #end
- Class TextField Extends TextView
- #rem monkeydoc Invoked when the user edits text.
- #end
- Field TextChanged:Void()
- #rem monkeydoc Invoked when the user hits 'Enter'.
- #end
- Field Entered:Void()
- #rem monkeydoc Invoked when the user hits 'Escape'
- #end
- Field Escaped:Void()
- #rem monkeydoc Invoked when the user hits 'Tab'.
- #end
- Field Tabbed:Void()
- #rem monkeydoc Creates a new TextField.
- #end
- Method New()
- Style=GetStyle( "TextField" )
- ContentView.Style=New Style
-
- Layout="fill-x"
- Gravity=New Vec2f( .5 )
-
- ScrollBarsVisible=False
-
- MaxSize=New Vec2i( 320,0 )
-
- Document.TextChanged+=Lambda()
- TextChanged()
- End
- End
-
- Method New( maxLength:Int )
- Self.New()
-
- MaxLength=maxLength
- End
-
- Method New( text:String,maxLength:Int=80 )
- Self.New( maxLength )
-
- Text=text
- End
-
- #rem monkeydoc Maximum text length.
- #end
- Property MaxLength:Int()
- Return _maxLength
-
- Setter( maxLength:Int )
-
- _maxLength=maxLength
-
- RequestRender()
- End
-
- Protected
-
- Method OnKeyViewChanged( oldKeyView:View,newKeyView:View ) Override
-
- If newKeyView=Self
- SelectAll()
- Else
- SelectText( 0,0 )
- Endif
- End
-
- Method OnKeyEvent( event:KeyEvent ) Override
-
- Select event.Type
- Case EventType.KeyDown
- Select event.Key
- Case Key.Enter
- Entered()
- Return
- Case Key.Escape
- Escaped()
- Return
- Case Key.Tab
- Tabbed()
- Return
- End
- Case EventType.KeyUp
- Select event.Key
- Case Key.Enter,Key.Escape,Key.Tab
- Return
- End
- End
-
- Super.OnKeyEvent( event )
-
- If _maxLength>=Document.TextLength Return
-
- Local anchor:=Anchor,cursor:=Cursor
-
- SelectText( _maxLength,Document.TextLength )
-
- ReplaceText( "" )
-
- SelectText( anchor,cursor )
- End
- Method OnMeasureContent:Vec2i() Override
-
- Return New Vec2i( CharWidth*_maxLength,CharHeight )
- End
- Private
-
- Field _maxLength:Int=80
- End
|