|
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.