[Cleaned up show-viewer and show-list implementation
clinton@unknownlamer.org**20080106183801
 * show-viewer is now a protocol class
 * standard-show-viewer implements a minimal show viewer
 * full-view-class extends standard- with controls
 * show-list is now a subclass of show-view that wraps rendering in a loop
] {
hunk ./src/web.lisp 13
-  (:default-initargs :viewer 'admin-compact-show-selector))
-
-(defcomponent admin-show-selector (show-selector)
-  ()
-  (:default-initargs :viewer (make-instance 'admin-show-viewer)))
-
-(defcomponent admin-compact-show-selector (admin-show-selector compact-show-viewer)
-  ())
-
-(defmethod render-controls :after ((self admin-show-selector))
-  (component-controls
-    ("Delete" (progn
-		(elephant:drop-instances (list (radio-show self)))
-		(refresh-show-cache (parent self))))))
-
-(defmethod render :after ((self admin-show-chooser))
-  (render-controls self))
-
-(defmethod render-controls ((self admin-show-chooser))
-  (component-controls ("New Show" (progn (call 'show-editor)
-					 (refresh-show-cache self)))))
+  (:default-initargs :viewer 'full-show-viewer))
hunk ./src/web.lisp 15
+(defmethod render-controls :after ((self admin-show-chooser))
+  (let ((show (viewer-show self)))
+    (component-controls
+      ("Edit" (call 'show-editor :show show))
+      ("Delete" (elephant:drop-instances (list show))))))
hunk ./src/web-common.lisp 60
-  ((show :initarg :show :accessor radio-show)))
+  ((show :initarg :show :accessor viewer-show)))
hunk ./src/web-common.lisp 62
+(defgeneric render-show (show-viewer show))
hunk ./src/web-common.lisp 66
-  (let ((show (radio-show self)))
-    (<:h1 (<:as-html (show-title show)))
-    (<:h2 (<:format "Date: ~A" (date-string (show-date show))))
-    (<:p (<:as-html (transcript show)))
-    (<:p (awhen (audio-data show)
-	   (<:as-html (format nil "Type: ~S" (audio-file-type it)))))
-    (render-controls self)))
+  (render-show self (viewer-show self))
+  (render-controls self))
hunk ./src/web-common.lisp 69
-(defmethod render-controls ((self show-viewer))
+(defmethod render-controls :around ((self show-viewer))
+  (<:ul :class "golf-controls"
+	(call-next-method)))
+
+(defcomponent standard-show-viewer (show-viewer)
+  ())
+
+(defmethod render-show ((self standard-show-viewer) (show radio-show))
+  (<:h1 (<:as-html (show-title show)))
+  (<:h2 (<:format "Date: ~A" (date-string (show-date show))))
+  (<:p (<:as-html (transcript show)))
+  (<:p (awhen (audio-data show)
+	 (<:as-html (format nil "Type: ~S" (audio-file-type it))))))
+
+(defmethod render-controls ((self standard-show-viewer)))
+
+(defcomponent full-show-viewer (standard-show-viewer)
+  ())
+
+(defmethod render-controls :before ((self full-show-viewer))
hunk ./src/web-common.lisp 94
-(defmethod render ((self compact-show-viewer))
-  (let ((show (radio-show self)))
-    (<:as-html (show-title show))))
+(defmethod render-show ((self compact-show-viewer) (show radio-show))
+  (<:as-html (show-title show)))
hunk ./src/web-common.lisp 100
-  ((full-viewer :initarg :viewer :component show-viewer)))
-
-(defmethod render-controls :around (component)
-  (<:ul :class "golf-controls"
-	(call-next-method)))
-
-(defmethod render :after ((self show-selector))
-  (let ((full-viewer (slot-value self 'full-viewer)))
-    (setf (radio-show full-viewer) (radio-show self))
-    (render-controls self)))
+  ((full-viewer-class :initarg :viewer :initform 'standard-show-viewer)))
hunk ./src/web-common.lisp 103
-  (let ((full-viewer (slot-value self 'full-viewer)))
-    (component-controls ("View" (call-component (parent self) full-viewer)))))
+  (with-slots (full-viewer-class)
+      self
+    (let ((show (viewer-show self)))
+      (component-controls
+	("View" (call full-viewer-class :show show))))))
hunk ./src/web-common.lisp 109
-(defcomponent compact-show-selector (compact-show-viewer show-selector)
+(defcomponent compact-show-selector (show-selector compact-show-viewer)
hunk ./src/web-common.lisp 114
-(defcomponent show-list (list-container)
-  ((viewer-class :initarg :viewer :initform 'show-viewer)))
+(defcomponent show-list (show-viewer)
+  ())
hunk ./src/web-common.lisp 118
-(defgeneric make-show-list-viewer (show-list show))
-(defgeneric refresh-show-cache (show-list))
hunk ./src/web-common.lisp 122
-(defmethod make-show-list-viewer ((list show-list) (show radio-show))
-  (make-instance (slot-value list 'viewer-class) :show show))
+(defmethod render :around ((self show-list))
+  (<:ul :class "golf-show-list"
+	(call-next-method)))
hunk ./src/web-common.lisp 126
-(defmethod refresh-show-cache ((self show-list))
-  (setf (container.contents self) nil)
-  (mapc (lambda (s) (add-component self
-			      (make-show-list-viewer
-			       self s)))
+(defmethod render ((self show-list))
+  (mapc (lambda (show)
+	  (setf (viewer-show self) show)
+	  (<:li :class "golf-show-list-item"
+		(call-next-method)))
hunk ./src/web-common.lisp 133
-(defmethod initialize-instance :after ((self show-list) &rest keys)
-  (declare (ignore keys))
-  (refresh-show-cache self))
-
-(defcomponent show-chooser (show-list)
-  ()
-  (:default-initargs :viewer 'show-selector))
-
-
hunk ./src/web-common.lisp 135
-(defcomponent show-chooser (show-list)
-  )
+(defcomponent show-chooser (show-list compact-show-selector)
+  ())
}