smalltalk
/
osmo-st-all
Archived
1
0
Fork 0
This commit is contained in:
Nicolas Petton 2009-06-25 02:09:42 +00:00
parent 30596e9fc2
commit e0cd87417c
8 changed files with 113 additions and 10 deletions

View File

@ -38,7 +38,7 @@
IliadObject subclass: Action [
| key block value |
<category: 'Iliad-Core-Buildables'>
<category: 'Iliad-Core-Builders'>
<comment: nil>
block [

View File

@ -42,7 +42,7 @@
Decorator subclass: AnswerHandler [
| action |
<category: 'Iliad-Core-Buildable'>
<category: 'Iliad-Core-Builders'>
<comment: 'I am a special decorator for Widgets, used to handle widget answers.
See #handleAnswer: and Widget>>show:onAnswer:'>

View File

@ -41,7 +41,7 @@
Widget subclass: Application [
| model page originalRoutePosition |
<category: 'Iliad-Core-Buildables'>
<category: 'Iliad-Core-Builders'>
<comment: 'I am the implementation of an application.
The first thing to do to develop web applications with Iliad is to subclass me.

View File

@ -0,0 +1,103 @@
"======================================================================
|
| Iliad.Buildable class definition
|
======================================================================"
"======================================================================
|
| Copyright (c) 2008-2009
| Nicolas Petton <petton.nicolas@gmail.com>,
| Sébastien Audier <sebastien.audier@gmail.com>
|
| Some parts of this file reuse code from the Seaside framework written
| by Avi Bryant, Julian Fitzell, Lukas Renggli, Michel Bany, Philippe
| Marschall and Seaside contributors http://www.seaside.st
|
| This file is part of the Iliad framework.
|
| Permission is hereby granted, free of charge, to any person obtaining
| a copy of this software and associated documentation files (the
| 'Software'), to deal in the Software without restriction, including
| without limitation the rights to use, copy, modify, merge, publish,
| distribute, sublicense, and/or sell copies of the Software, and to
| permit persons to whom the Software is furnished to do so, subject to
| the following conditions:
|
| The above copyright notice and this permission notice shall be
| included in all copies or substantial portions of the Software.
|
| THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
| EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
| MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
| IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
| CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
| TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
| SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
======================================================================"
IliadObject subclass: Buildable [
| attributes |
<category: 'Iliad-Core-Buildables'>
<comment: 'I am an abstract buildable object.
My subclasses must override the #build method, which should return an instance of a subclass of Iliad.Element.'>
page [
<category: 'accessing'>
^self application page
]
attributeAt: aSymbol [
<category: 'accessing attributes'>
^self attributes at: aSymbol ifAbsent: [nil]
]
attributeAt: aSymbol ifAbsentPut: aBlock [
<category: 'accessing attributes'>
^self attributes at: aSymbol ifAbsentPut: aBlock
]
attributeAt: aSymbol put: anObject [
<category: 'accessing attributes'>
^self attributes at: aSymbol put: anObject
]
attributes [
<category: 'accessing attributes'>
^attributes ifNil: [attributes := Dictionary new]
]
build [
"Override this method in subclasses.
It must answer an element"
<category: 'building'>
self subclassResponsibility
]
buildOn: anElement [
<category: 'building'>
anElement add: self build
]
redirectTo: aString [
<category: 'redirecting'>
self application redirectTo: aString
]
redirectToLocal: aString [
<category: 'redirecting'>
self application redirectToLocal: aString
]
respondOn: aResponse [
<category: 'converting'>
self build respondOn: aResponse
]
]

View File

@ -39,10 +39,10 @@
Buildable subclass: Decorator [
Builder subclass: Decorator [
| decoratee |
<category: 'Iliad-Core-Buildable'>
<category: 'Iliad-Core-Builders'>
<comment: 'I am an abstract decorator for Widgets. I can be added to a widget by calling: #addDecoration: from a widget.
Subclasses can be used to modify the building process of a widget, or change its behavior'>

View File

@ -54,7 +54,7 @@ Object extend [
BlockClosure extend [
buildOn: anElement [
<category:'*Iliad-Core'>
<category:'Iliad-Core'>
self value: anElement
]
]

View File

@ -35,10 +35,10 @@
Buildable subclass: Page [
Builder subclass: Page [
<comment: nil>
<category: 'Iliad-Core-Buildables'>
<category: 'Iliad-Core-Builders'>
bodyElement [
<category: 'accessing attributes'>

View File

@ -39,10 +39,10 @@
Buildable subclass: Widget [
Builder subclass: Widget [
| id decorator owner |
<category: 'Iliad-Core-Buildables'>
<category: 'Iliad-Core-Builders'>
<comment: 'I am a stateful graphical component.
To build HTML override the #contents method, which should always