This commit is contained in:
parent
30596e9fc2
commit
e0cd87417c
|
@ -38,7 +38,7 @@
|
|||
IliadObject subclass: Action [
|
||||
| key block value |
|
||||
|
||||
<category: 'Iliad-Core-Buildables'>
|
||||
<category: 'Iliad-Core-Builders'>
|
||||
<comment: nil>
|
||||
|
||||
block [
|
||||
|
|
|
@ -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:'>
|
||||
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
]
|
||||
]
|
||||
|
||||
|
|
@ -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'>
|
||||
|
||||
|
|
|
@ -54,7 +54,7 @@ Object extend [
|
|||
BlockClosure extend [
|
||||
|
||||
buildOn: anElement [
|
||||
<category:'*Iliad-Core'>
|
||||
<category:'Iliad-Core'>
|
||||
self value: anElement
|
||||
]
|
||||
]
|
||||
|
|
|
@ -35,10 +35,10 @@
|
|||
|
||||
|
||||
|
||||
Buildable subclass: Page [
|
||||
Builder subclass: Page [
|
||||
|
||||
<comment: nil>
|
||||
<category: 'Iliad-Core-Buildables'>
|
||||
<category: 'Iliad-Core-Builders'>
|
||||
|
||||
bodyElement [
|
||||
<category: 'accessing attributes'>
|
||||
|
|
|
@ -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
|
||||
|
|
Reference in New Issue