This commit is contained in:
parent
30596e9fc2
commit
e0cd87417c
|
@ -38,7 +38,7 @@
|
||||||
IliadObject subclass: Action [
|
IliadObject subclass: Action [
|
||||||
| key block value |
|
| key block value |
|
||||||
|
|
||||||
<category: 'Iliad-Core-Buildables'>
|
<category: 'Iliad-Core-Builders'>
|
||||||
<comment: nil>
|
<comment: nil>
|
||||||
|
|
||||||
block [
|
block [
|
||||||
|
|
|
@ -42,7 +42,7 @@
|
||||||
Decorator subclass: AnswerHandler [
|
Decorator subclass: AnswerHandler [
|
||||||
| action |
|
| action |
|
||||||
|
|
||||||
<category: 'Iliad-Core-Buildable'>
|
<category: 'Iliad-Core-Builders'>
|
||||||
<comment: 'I am a special decorator for Widgets, used to handle widget answers.
|
<comment: 'I am a special decorator for Widgets, used to handle widget answers.
|
||||||
See #handleAnswer: and Widget>>show:onAnswer:'>
|
See #handleAnswer: and Widget>>show:onAnswer:'>
|
||||||
|
|
||||||
|
|
|
@ -41,7 +41,7 @@
|
||||||
Widget subclass: Application [
|
Widget subclass: Application [
|
||||||
| model page originalRoutePosition |
|
| model page originalRoutePosition |
|
||||||
|
|
||||||
<category: 'Iliad-Core-Buildables'>
|
<category: 'Iliad-Core-Builders'>
|
||||||
<comment: 'I am the implementation of an application.
|
<comment: 'I am the implementation of an application.
|
||||||
|
|
||||||
The first thing to do to develop web applications with Iliad is to subclass me.
|
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 |
|
| 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.
|
<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'>
|
Subclasses can be used to modify the building process of a widget, or change its behavior'>
|
||||||
|
|
||||||
|
|
|
@ -54,7 +54,7 @@ Object extend [
|
||||||
BlockClosure extend [
|
BlockClosure extend [
|
||||||
|
|
||||||
buildOn: anElement [
|
buildOn: anElement [
|
||||||
<category:'*Iliad-Core'>
|
<category:'Iliad-Core'>
|
||||||
self value: anElement
|
self value: anElement
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
|
|
|
@ -35,10 +35,10 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Buildable subclass: Page [
|
Builder subclass: Page [
|
||||||
|
|
||||||
<comment: nil>
|
<comment: nil>
|
||||||
<category: 'Iliad-Core-Buildables'>
|
<category: 'Iliad-Core-Builders'>
|
||||||
|
|
||||||
bodyElement [
|
bodyElement [
|
||||||
<category: 'accessing attributes'>
|
<category: 'accessing attributes'>
|
||||||
|
|
|
@ -39,10 +39,10 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Buildable subclass: Widget [
|
Builder subclass: Widget [
|
||||||
| id decorator owner |
|
| id decorator owner |
|
||||||
|
|
||||||
<category: 'Iliad-Core-Buildables'>
|
<category: 'Iliad-Core-Builders'>
|
||||||
<comment: 'I am a stateful graphical component.
|
<comment: 'I am a stateful graphical component.
|
||||||
|
|
||||||
To build HTML override the #contents method, which should always
|
To build HTML override the #contents method, which should always
|
||||||
|
|
Reference in New Issue