+ import GridBagPanel._
+
+ case class TaskUpdated(t: Task) extends Event
+
+ def task: (Calendar => Task) = d => Task(
+ date = d,
+ ticketID = noneIfEmpty(ticketID.text).map(_.toInt),
+ title = title.text,
+ expectedCompletionDate = expectedCompletionDate.calendar.getOrElse(Task.endOfCurrentHalf),
+ deadline = deadline.calendar,
+ status = status.selection.item,
+ description = noneIfEmpty(description.text)
+ )
+
+ def task_=(t: Task) = {
+ ticketID.text = t.ticketID.fold("")(_.toString)
+ title.text = t.title
+ expectedCompletionDate.calendar = Some(t.expectedCompletionDate)
+ deadline.calendar = t.deadline
+ status.selection.item = t.status
+ description.text = t.description.getOrElse("")
+ }