Emerging Technology
Fall Semester, 2004 Some Seaside Basics |
||
---|---|---|
© 2004, All Rights Reserved, SDSU & Roger Whitney San Diego State University -- This page last updated 23-Sep-04 |
CS 683 Emerging Technologies Fall Semester, 2004 Doc 12 Some Seaside Basics
Copyright ©, All rights reserved. 2004 SDSU & Roger Whitney, 5500 Campanile Drive, San Diego, CA 92182-7700 USA. OpenContent ( http://www.opencontent.org/opl.shtml) license defines the copyright on this document.
CS 683 Fall 04 | Doc 12, Some Seaside Basics Slide # 2 |
Seaside source code
CS 683 Fall 04 | Doc 12, Some Seaside Basics Slide # 3 |
Some examples showing some basic features of Seaside
To save space on the slides:
Except were noted class methods are of the form:
canBeRoot ^ true initialize "self initialize" (self registerAsApplication: 'navigationExample')
CS 683 Fall 04 | Doc 12, Some Seaside Basics Slide # 4 |
Smalltalk.Seaside defineClass: #SimpleInput superclass: #{Seaside.WAComponent} indexedType: #none instanceVariableNames: 'age name '
age ^age ifNil: [age := 21] age: anInteger age := anInteger name ^name ifNil: [name := 'Enter your name here'] name: aString name := aString processRequest self inform: 'Your request is being processed'
CS 683 Fall 04 | Doc 12, Some Seaside Basics Slide # 5 |
renderContentOn: html html heading: 'Simple Input Example'. html paragraph: 'A simple example of using forms'. html heading: 'Form with simple submit' level: 2. html form: [html textInputOn: #age of: self. html textInputWithValue: self name callback: [:text | self name: text]. html submitButton]. html heading: 'Submit with action' level: 2. html form: [html textAreaOn: #age of: self. html textAreaWithValue: self name callback: [:text | self name: text , 'me']. html submitButtonWithAction: [self processRequest] text: 'Click Me']. html paragraph: ('Name: ' , self name , ', age: ', self age printString) updateRoot: anHtmlRoot super updateRoot: anHtmlRoot. anHtmlRoot title: 'Simple Input'.
http://bismarck.sdsu.edu/cs683/seaside/go/simpleInput
CS 683 Fall 04 | Doc 12, Some Seaside Basics Slide # 6 |
Smalltalk.Seaside defineClass: #GetAge superclass: #{Seaside.WAComponent} instanceVariableNames: 'age '
renderContentOn: html html heading: 'Enter Your age'. html form: [html textInputOn: #age of: self. html submitButtonWithAction: [self validateAge] ]. validateAge age > 13 & (age < 40) ifTrue: [self answer: age] ifFalse: [self inform: 'We don''t allow students under the age of 13'] age ^age ifNil: [age := 1] age: anInteger age := anInteger
No class methods in this class
CS 683 Fall 04 | Doc 12, Some Seaside Basics Slide # 7 |
Smalltalk.Seaside defineClass: #CallAnswerExample superclass: #{Seaside.WAComponent} instanceVariableNames: 'age '
askForAge age := (self call: GetAge new) + 50 renderContentOn: html html heading: 'Call Answer'. html form: [html submitButtonWithAction: [self askForAge] text: 'Your age']. age ifNotNil: [html paragraph: 'You claim to be ' , age printString , ' years old'] updateRoot: anHtmlRoot super updateRoot: anHtmlRoot. anHtmlRoot title: 'Call Example'.
http://bismarck.sdsu.edu/cs683/seaside/go/callAnswer
CS 683 Fall 04 | Doc 12, Some Seaside Basics Slide # 8 |
Smalltalk.Seaside defineClass: #AttributeExample superclass: #{Seaside.WAComponent} instanceVariableNames: '' classInstanceVariableNames: ''
renderContentOn: html html heading: 'Attribute Example'. html paragraph: 'A plain paragraph'. html cssClass: 'Foo'; paragraph: 'A paragraph with class Foo'. html cssId: 'Foo'; paragraph: 'A paragraph with id Foo'. html divClass: 'Bar' with: [html paragraph: 'A paragraph inside a div with class Foo']. html attributeAt: 'align' put: 'right'. html paragraph: 'A paragraph with attribute align=right' updateRoot: anHtmlRoot super updateRoot: anHtmlRoot. anHtmlRoot title: 'Attribute Example'.
http://bismarck.sdsu.edu/cs683/seaside/go/attributeExample
CS 683 Fall 04 | Doc 12, Some Seaside Basics Slide # 9 |
<h1>Attribute Example</h1> <p>A plain paragraph</p> <p class="Foo">A paragraph with class Foo</p> <p id="Foo">A paragraph with id Foo</p> <div class="Bar"> <p>A paragraph inside a div with class Foo</p> </div> <p align="right">A paragraph with attribute align=right</p>
CS 683 Fall 04 | Doc 12, Some Seaside Basics Slide # 10 |
Smalltalk.Seaside defineClass: #TableExample superclass: #{Seaside.WAComponent} indexedType: #none private: false instanceVariableNames: '' classInstanceVariableNames: '' imports: '' category: 'cs683Examples'
style ^'table.foo { border-color: blue; border-width: 2pt; border-style: solid; } .foo td { border-color: black; border-width: 2pt; border-style: solid; }' updateRoot: anHtmlRoot super updateRoot: anHtmlRoot. anHtmlRoot title: 'Table Example'.
CS 683 Fall 04 | Doc 12, Some Seaside Basics Slide # 11 |
renderContentOn: html html heading: 'Table Examples'. html table: [html tableHeadings: #('Cat' 'Dog' 'Mouse'); tableRowWith: 1 with: 2 with: 3; tableRowWith: 4 with: 5 with: 1]. html paragraph: 'Table with class foo'. html cssClass: 'foo'; table: [html tableRow: [html tableData: 100; tableData: 200; tableData: 300]]
http://bismarck.sdsu.edu/cs683/seaside/go/tableExample
CS 683 Fall 04 | Doc 12, Some Seaside Basics Slide # 12 |
Smalltalk.Seaside defineClass: #NavigationExample superclass: #{Seaside.WAFrameComponent} instanceVariableNames: ''
renderContentOn: html html heading: 'Examples'. html render: self contents updateRoot: anHtmlRoot super updateRoot: anHtmlRoot. anHtmlRoot title: 'Examples' initialize self contents: ((WASimpleNavigation new) add: HelloWorld new label: 'Hello'; add: SimpleInput new label: 'Input'; add: AttributeExample new label: 'Attributes'; add: TableExample new label: 'Tables'; add: TransactionExample new label: 'Transactions'; yourself)
http://bismarck.sdsu.edu/cs683/seaside/go/navigationExample
CS 683 Fall 04 | Doc 12, Some Seaside Basics Slide # 13 |
Smalltalk.Seaside defineClass: #TransactionExample
superclass: #{Seaside.WATask}
instanceVariableNames: ''
go | age | age := -1. self inform: 'Starting age is: ' , age printString. self isolate: [self inform: 'Start transaction'. age := self call: GetAge new. self inform: 'Age inside transaction: ' , age printString]. self inform: 'Age after transaction is: ' , age printString
This class has no class methods
CS 683 Fall 04 | Doc 12, Some Seaside Basics Slide # 14 |
go | shipping billing creditCard | cart := WAStoreCart new. self isolate: [[self fillCart. self confirmContentsOfCart] whileFalse]. self isolate: [shipping := self getShippingAddress. billing := (self useAsBillingAddress: shipping) ifFalse: [self getBillingAddress] ifTrue: [shipping]. creditCard := self getPaymentInfo. self shipTo: shipping billTo: billing payWith: creditCard]. self displayConfirmation.
http://bismarck.sdsu.edu/cs683/seaside/go/store
Copyright ©, All rights reserved.
2004 SDSU & Roger Whitney, 5500 Campanile Drive, San Diego, CA 92182-7700 USA.
OpenContent license defines the copyright on this document.