+ `(define-view-for-table ,@(meta-model::list-tables)))
+
+(eval-when (:compile-toplevel :load-toplevel :execute)
+ (defun %make-view (object type &rest attributes-and-args)
+ (let ((attributes (car attributes-and-args))
+ (args (cdr attributes-and-args)))
+ `(mewa:make-presentation
+ ,object
+ :type ,type
+ :initargs
+ '(,@ (when attributes
+ `(:attributes ,attributes)))
+ ,@args))))
+
+(defmethod make-view (object &rest args &key (type :viewer) (attributes nil)
+ &allow-other-keys )
+ (apply #'make-presentation (cdr (%make-view object type (cons attributes args)))))
+
+(defmacro present-view ((object &optional (type :viewer))
+ &body attributes-and-args)
+ `(present ,(%make-view object type attributes-and-args)))
+
+
+(defmacro call-view ((object &optional (type :viewer) (component 'self component-supplied-p))
+ &body attributes-and-args)
+
+
+ `(ucw:call-component
+ ,component
+ ,(%make-view object type attributes-and-args)))
+
+(defmethod slot-view ((self mewa) slot-name)
+ (mewa::find-attribute-slot self slot-name))
+
+(defmethod present-slot-view ((self mewa) slot-name &optional (instance (instance self)))
+ (present-slot (slot-view self slot-name) instance))
+