| 
					
				 | 
			
			
				@@ -1,70 +1,148 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 Smalltalk current createPackage: 'Presentation' properties: #{}! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-Widget subclass: #Slide 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	instanceVariableNames: 'presentation' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Widget subclass: #Presentation 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	instanceVariableNames: 'currentSlide slides' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	category: 'Presentation'! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-!Slide methodsFor: 'accessing'! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+!Presentation methodsFor: 'accessing'! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-presentation 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	^presentation 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+title 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	^ self class title. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-presentation: aPresentation 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	presentation := aPresentation 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+author 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	^'John Smith' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	^ self class name 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+url 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	^'http://jtalk-project.org' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-cssClass 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	^'slide' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+description 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	^'A presentation written in Jtalk' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-backgroundColor 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	^'#555' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+email 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	^'john@smith.com' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-title 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	^ self id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+slides 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	slides ifNil: [self initSlides]. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	^slides 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+slideClasses 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	^self subclassResponsibility 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+currentSlide 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	^currentSlide 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+currentSlide: aSlide 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	currentSlide := aSlide 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+slideTransition 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	^'fade' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+style 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	"Should return a CSS style" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	^ '' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ! ! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-!Slide methodsFor: 'actions'! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+!Presentation methodsFor: 'actions'! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-show 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	self backgroundColor ifNotNil: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		(window jQuery: '#slides') css: 'background' color: self backgroundColor]. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	(window jQuery: '.slide') hide: self presentation slideTransition options: #() duration: 300. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	(window jQuery: '#', self id) show: self presentation slideTransition options: #() duration: 300. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+nextSlide 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	| next | 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	self currentSlide ifNotNil: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		next := self slides  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			at: (self currentSlideIndex) + 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			ifAbsent: [nil]. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		next ifNotNil: [currentSlide := next. next show]] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+showCurrentSlide 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	self currentSlide ifNotNil: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		'.slide' asJQuery hide. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		('#', self currentSlide id) asJQuery show. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          	'title' asJQuery text: self title, ' - ', self currentSlide id. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+previousSlide 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	| next | 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	self currentSlide ifNotNil: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		next := self slides  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			at: (self currentSlideIndex) - 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			ifAbsent: [nil]. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		next ifNotNil: [currentSlide := next. next show]] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+moveAt: anInteger 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	| next | 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	next := self slides  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			at: anInteger 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			ifAbsent: [nil]. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	next ifNotNil: [currentSlide := next. next show] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+currentSlideIndex 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	^ self slides indexOf: self currentSlide ifAbsent: [1] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ! ! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-!Slide methodsFor: 'rendering'! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+!Presentation methodsFor: 'enumerating'! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+slidesDo: aBlockWithArg 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	self slides do: [:aSlide| aBlockWithArg value: aSlide]. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+! ! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+!Presentation methodsFor: 'initialization'! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+initSlides 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	slides := self slideClasses collect: [:each | each on: self] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+! ! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+!Presentation methodsFor: 'rendering'! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 renderOn: html 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	html div class: self cssClass; id: self id; with: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		self renderSlideOn: html. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		self renderMetaOn: html] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	html style 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		type: 'text/css'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		with: self style. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	html div  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		id: 'slides'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		with: [self renderSlidesOn: html] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-renderSlideOn: html 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+renderSlidesOn: html 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	self slides do: [:each |  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		each renderOn: html]. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	currentSlide ifNil: [currentSlide := self slides first]. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	self showCurrentSlide 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+! ! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Presentation class instanceVariableNames: 'current'! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+!Presentation class methodsFor: 'accessing'! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+concretePresentations 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	^ self allSubclasses select: [:aPresentationClass| aPresentationClass isConcrete] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-renderMetaOn: html 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	html div  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		id: 'meta'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		with: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			html p class: 'title'; with: self presentation title. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			html p class: 'description'; with: self presentation description. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			html a class: 'author'; with: self presentation author; href: 'mailto:', self presentation email. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			html a class: 'url'; with: self presentation url; href: self presentation url] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+title 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	^ 'Slides' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ! ! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-!Slide class methodsFor: 'instance creation'! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+!Presentation class methodsFor: 'enumerating'! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-on: aPresentation 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	^self new 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		presentation: aPresentation; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		yourself 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+concretePresentationsDo: aBlockWithArg 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	self concretePresentations do: aBlockWithArg. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+! ! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+!Presentation class methodsFor: 'testing'! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+isConcrete 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	^false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ! ! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 Widget subclass: #PresentationNavigator 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -270,150 +348,72 @@ open 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	^ self new open 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ! ! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-Widget subclass: #Presentation 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	instanceVariableNames: 'currentSlide slides' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Widget subclass: #Slide 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	instanceVariableNames: 'presentation' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	category: 'Presentation'! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-!Presentation methodsFor: 'accessing'! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-title 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	^ self class title. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-author 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	^'John Smith' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-url 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	^'http://jtalk-project.org' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-description 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	^'A presentation written in Jtalk' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-email 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	^'john@smith.com' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-slides 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	slides ifNil: [self initSlides]. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	^slides 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-slideClasses 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	^self subclassResponsibility 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-currentSlide 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	^currentSlide 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-currentSlide: aSlide 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	currentSlide := aSlide 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+!Slide methodsFor: 'accessing'! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-slideTransition 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	^'fade' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+presentation 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	^presentation 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-style 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	"Should return a CSS style" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	^ '' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-! ! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-!Presentation methodsFor: 'actions'! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-nextSlide 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	| next | 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	self currentSlide ifNotNil: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		next := self slides  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			at: (self currentSlideIndex) + 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			ifAbsent: [nil]. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		next ifNotNil: [currentSlide := next. next show]] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+presentation: aPresentation 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	presentation := aPresentation 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-showCurrentSlide 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	self currentSlide ifNotNil: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		'.slide' asJQuery hide. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		('#', self currentSlide id) asJQuery show. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          	'title' asJQuery text: self title, ' - ', self currentSlide id. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        ] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	^ self class name 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-previousSlide 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	| next | 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	self currentSlide ifNotNil: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		next := self slides  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			at: (self currentSlideIndex) - 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			ifAbsent: [nil]. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		next ifNotNil: [currentSlide := next. next show]] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+cssClass 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	^'slide' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-moveAt: anInteger 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	| next | 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	next := self slides  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			at: anInteger 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			ifAbsent: [nil]. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	next ifNotNil: [currentSlide := next. next show] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+backgroundColor 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	^'#555' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-currentSlideIndex 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	^ self slides indexOf: self currentSlide ifAbsent: [1] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-! ! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-!Presentation methodsFor: 'enumerating'! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-slidesDo: aBlockWithArg 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	self slides do: [:aSlide| aBlockWithArg value: aSlide]. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+title 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	^ self id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ! ! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-!Presentation methodsFor: 'initialization'! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+!Slide methodsFor: 'actions'! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-initSlides 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	slides := self slideClasses collect: [:each | each on: self] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+show 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	self backgroundColor ifNotNil: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		(window jQuery: '#slides') css: 'background' color: self backgroundColor]. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	(window jQuery: '.slide') hide: self presentation slideTransition options: #() duration: 300. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	(window jQuery: '#', self id) show: self presentation slideTransition options: #() duration: 300. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ! ! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-!Presentation methodsFor: 'rendering'! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+!Slide methodsFor: 'rendering'! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 renderOn: html 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	html style 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		type: 'text/css'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		with: self style. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	html div  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		id: 'slides'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		with: [self renderSlidesOn: html] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	html div class: self cssClass; id: self id; with: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		self renderSlideOn: html. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		self renderMetaOn: html] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-renderSlidesOn: html 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	self slides do: [:each |  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		each renderOn: html]. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	currentSlide ifNil: [currentSlide := self slides first]. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	self showCurrentSlide 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-! ! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-Presentation class instanceVariableNames: 'current'! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-!Presentation class methodsFor: 'accessing'! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-concretePresentations 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	^ self allSubclasses select: [:aPresentationClass| aPresentationClass isConcrete] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+renderSlideOn: html 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-title 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	^ 'Slides' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-! ! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-!Presentation class methodsFor: 'enumerating'! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-concretePresentationsDo: aBlockWithArg 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	self concretePresentations do: aBlockWithArg. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+renderMetaOn: html 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	html div  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		id: 'meta'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		with: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			html p class: 'title'; with: self presentation title. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			html p class: 'description'; with: self presentation description. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			html a class: 'author'; with: self presentation author; href: 'mailto:', self presentation email. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			html a class: 'url'; with: self presentation url; href: self presentation url] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ! ! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-!Presentation class methodsFor: 'testing'! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+!Slide class methodsFor: 'instance creation'! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-isConcrete 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	^false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+on: aPresentation 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	^self new 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		presentation: aPresentation; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		yourself 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ! ! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 Slide subclass: #FOSDEMSlide 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1824,6 +1824,19 @@ body { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	-webkit-animation: rotate-horizontal 2s infinite alternate ease-in-out; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.slide#FOSDEMContributionsSlide { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    background: white url("esug2011/images/asterix.png") 30px 130px no-repeat; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.slide#FOSDEMContributionsSlide .section { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    margin-left: 250px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    margin-top: 200px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    font-family: "Droid Sans"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    font-size: 26px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    font-weight: bold; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 .slide#ide { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     background: black url("esug2011/images/ide_star_wars.png") center center no-repeat; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1861,7 +1874,9 @@ slideClasses 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	FOSDEMTwitter. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	FOSDEMCanvasSlide. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	FOSDEMAmberBackend. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	FOSDEMREPLSlide 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	FOSDEMREPLSlide. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	FOSDEMCLISlide. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	FOSDEMContributionsSlide 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ! ! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1924,3 +1939,40 @@ renderTweet: tweet on: html 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ! ! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+FOSDEMSlide subclass: #FOSDEMCLISlide 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	instanceVariableNames: '' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	category: 'Presentation'! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+!FOSDEMCLISlide methodsFor: 'rendering'! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+renderSlideOn: html 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	html h1: 'CLI'. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	html with:  'amberc compiles .st files into node programs !!'. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	self renderCodeSnippetOn: html. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+codeSnippet 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	^  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+'cd examples/nodejs/hello 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+../../../bin/amberc -m Hello Hello.st Program 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+node Program.js 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Hello world from Amber in Node.js' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+! ! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+FOSDEMSlide subclass: #FOSDEMContributionsSlide 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	instanceVariableNames: '' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	category: 'Presentation'! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+!FOSDEMContributionsSlide methodsFor: 'rendering'! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+renderSlideOn: html 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	html div class: 'section'; with: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		html p with: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			html a href: 'http://amber-lang.net'; with: 'amber-lang.net']. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		html p with: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			html a href: 'https://github.com/NicolasPetton/amber'; with: 'github.com/NicolasPetton/amber']. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		html p with: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			html a href: 'http://groups.google.com/group/amber-lang'; with: 'groups.google.com/group/amber-lang']] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+! ! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 |