+trait Eyecandy {
+ def note(msg: String);
+ def clear();
+ def commit();
+ def record(msg: String) { note(msg); commit(); }
+ def done();
+ def cancelled() { failed("cancelled"); }
+ def failed(msg: String);
+
+ def beginJob(model: Model): JobReporter
+ // = new JobReporter(model);
+
+ def beginOperation(what: String): OperationReporter
+ // = new OperationReporter(what);
+
+ def job[T](model: Model)(body: JobReporter => T): T =
+ withReporter(beginJob(model), body);
+
+ def operation[T](what: String)(body: OperationReporter => T): T =
+ withReporter(beginOperation(what), body);