#!../../src/xotclsh
# $Id: s.Counter5.xotcl 1.8 01/03/23 22:00:32+01:00 neumann@somewhere.wu-wien.ac.at $
package require xotcl::awo::htmlPlace
package require xotcl::awo::webAgent

HtmlPlace ::receiver -port 8093

### Definiere eine neue Klasse names Counter
Class Counter -parameter {{count 1}}
Counter instproc increment {} {    ;### Methode des Counters
  ::incr [self]::count
}
### Erzeuge zwei Instanzen c1 und c2
Counter c1
Counter c2




### Definiere eine WebFacade
Class WebCounter -superclass {  HtmlRep WebObject } -parameter repObj
WebCounter instproc init args {
  #[self] showVars
  next
  [self] instvar repObj
  $repObj mixinStrategy Persistent=Eager
  ::receiver exportObjs $repObj    ;### exportiere das Counter-Objekt
  [self] exportProcs increment     ;### exportiere die increment-Methode
}
WebCounter instproc increment {} {;### Dies ist die exportierte Methode
  [self] instvar repObj           ;### importiere Variable mit Objekt-Namen
  $repObj [self proc]             ;### führe die eigentliche Methode aus
  [self] default                  ;### aktualisiere HTML-Seite
}
WebCounter instproc default {} {  ;### Diese Methode aktualisiert den HTML-Text
  [self] instvar repObj           ;### importiere Variable mit Objekt-Namen
  $repObj instvar count           ;### importiere Variable count aus dem repObj
  [self] simplePage [self] "Html-Facade für $repObj" \
      "In $repObj ist der Wert des Zählers $count.<p>
 	<A HREF='htmlUI+invoke+$repObj+increment'>Erhöhe Zähler</a><p>"
}

foreach instance [Counter info instances] {
  WebCounter web-$instance -repObj $instance
  #web-$instance attach $instance
}
### Behandle hereinkommende Socket-Verbindungen
receiver startEventLoop 
