Object subclass: #CanvasRenderingContext instanceVariableNames: '' category: 'Canvas'! !CanvasRenderingContext methodsFor: 'drawing arcs'! arcTo: aPoint radius: aNumber startAngle: aNumber2 endAngle: aNumber3 anticlockwise: aBoolean ! arcTo: aPoint radius: aNumber self arcTo: aPoint radius: aNumber startAngle: 0 endAngle: Number pi * 2 anticlockwise: false ! ! !CanvasRenderingContext methodsFor: 'drawing paths'! fillStyle: aString ! beginPath ! closePath ! fill ! stroke ! moveTo: aPoint ! lineTo: aPoint ! strokeStyle: aString ! lineWidth: aNumber ! ! !CanvasRenderingContext methodsFor: 'drawing rectangles'! fillRectFrom: aPoint to: anotherPoint ! strokeRectFrom: aPoint to: anotherPoint ! clearRectFrom: aPoint to: anotherPoint ! ! !CanvasRenderingContext class methodsFor: 'instance creation'! tagBrush: aTagBrush ! ! Object subclass: #HTMLCanvas instanceVariableNames: 'root' category: 'Canvas'! !HTMLCanvas methodsFor: 'accessing'! root: aTagBrush root := aTagBrush ! root ^root ! ! !HTMLCanvas methodsFor: 'adding'! with: anObject ^self root with: anObject ! ! !HTMLCanvas methodsFor: 'initialization'! initialize super initialize. root ifNil: [root := TagBrush fromString: 'div' canvas: self] ! initializeFromJQuery: aJQuery root := TagBrush fromJQuery: aJQuery canvas: self ! ! !HTMLCanvas methodsFor: 'tags'! newTag: aString ^TagBrush fromString: aString canvas: self ! tag: aString ^root addBrush: (self newTag: aString) ! h1 ^self tag: 'h1' ! h2 ^self tag: 'h2' ! h3 ^self tag: 'h3' ! h4 ^self tag: 'h4' ! h5 ^self tag: 'h5' ! h6 ^self tag: 'h6' ! p ^self tag: 'p' ! div ^self tag: 'div' ! span ^self tag: 'span' ! img ^self tag: 'img' ! ul ^self tag: 'ul' ! ol ^self tag: 'ol' ! li ^self tag: 'li' ! table ^self tag: 'table' ! tr ^self tag: 'tr' ! td ^self tag: 'td' ! th ^self tag: 'th' ! form ^self tag: 'form' ! input ^self tag: 'input' ! button ^self tag: 'button' ! select ^self tag: 'select' ! option ^self tag: 'option' ! textarea ^self tag: 'textarea' ! a ^self tag: 'a' ! canvas ^self tag: 'canvas' ! pre ^self tag: 'pre' ! code ^self tag: 'code' ! br ^self tag: 'br' ! ! !HTMLCanvas class methodsFor: 'instance creation'! onJQuery: aJQuery ^self basicNew initializeFromJQuery: aJQuery; initialize; yourself ! ! Object subclass: #TagBrush instanceVariableNames: 'canvas element' category: 'Canvas'! !TagBrush methodsFor: 'accessing'! element ^element ! ! !TagBrush methodsFor: 'adding'! contents: anObject self asJQuery empty. self append: anObject ! addBrush: aTagBrush self appendChild: aTagBrush element. ^aTagBrush ! with: anObject self append: anObject ! append: anObject anObject appendToBrush: self ! appendToBrush: aTagBrush aTagBrush addBrush: self ! appendBlock: aBlock | root | root := canvas root. canvas root: self. aBlock value: canvas. canvas root: root ! appendChild: anElement ! appendString: aString self appendChild: (self createTextNodeFor: aString) ! ! !TagBrush methodsFor: 'attributes'! at: aString put: aValue ! removeAt: aString ! class: aString self at: 'class' put: aString ! id: aString self at: 'id' put: aString ! src: aString self at: 'src' put: aString ! href: aString self at: 'href' put: aString ! title: aString self at: 'title' put: aString ! style: aString self at: 'style' put: aString ! ! !TagBrush methodsFor: 'converting'! asJQuery ! asJQueryDo: aBlock aBlock value: self asJQuery ! ! !TagBrush methodsFor: 'events'! onKeyDown: aBlock self asJQuery on: 'keydown' do: aBlock ! onKeyPress: aBlock self asJQuery on: 'keypress' do: aBlock ! onKeyUp: aBlock self asJQuery on: 'keyup' do: aBlock ! onFocus: aBlock self asJQuery on: 'focus' do: aBlock ! onBlur: aBlock self asJQuery on: 'blur' do: aBlock ! onChange: aBlock self asJQuery on: 'change' do: aBlock ! onClick: aBlock self asJQuery on: 'click' do: aBlock ! ! !TagBrush methodsFor: 'initialization'! initializeFromString: aString canvas: aCanvas element := self createElementFor: aString. canvas := aCanvas ! initializeFromJQuery: aJQuery canvas: aCanvas element := aJQuery jquery get: 0. canvas := aCanvas ! ! !TagBrush methodsFor: 'private'! createElementFor: aString ! createTextNodeFor: aString ! ! !TagBrush class methodsFor: 'instance creation'! fromString: aString canvas: aCanvas ^self new initializeFromString: aString canvas: aCanvas; yourself ! fromJQuery: aJQuery canvas: aCanvas ^self new initializeFromJQuery: aJQuery canvas: aCanvas; yourself ! ! Object subclass: #Widget instanceVariableNames: '' category: 'Canvas'! !Widget methodsFor: 'actions'! alert: aString ! confirm: aString ! prompt: aString ^self prompt: aString default: '' ! prompt: aString default: anotherString ! ! !Widget methodsFor: 'adding'! appendToBrush: aTagBrush self appendToJQuery: aTagBrush asJQuery ! appendToJQuery: aJQuery self renderOn: (HTMLCanvas onJQuery: aJQuery) ! ! !Widget methodsFor: 'rendering'! renderOn: html self ! ! TagBrush subclass: #CanvasBrush instanceVariableNames: '' category: 'Canvas'! !CanvasBrush methodsFor: 'initialization'! initializeWithCanvas: aCanvas canvas := aCanvas ! ! !CanvasBrush methodsFor: 'private'! createElement ! ! !CanvasBrush class methodsFor: 'instance creation'! canvas: aCanvas ^self new initializeWithCanvas: aCanvas; yourself ! ! !Object methodsFor: '*Canvas'! appendToBrush: aTagBrush aTagBrush append: self asString ! ! !BlockClosure methodsFor: '*Canvas'! appendToBrush: aTagBrush aTagBrush appendBlock: self ! ! !String methodsFor: '*Canvas'! appendToBrush: aTagBrush aTagBrush appendString: self ! !