view datebox.ur @ 19:3a303df9ae92

Partial generalize togglePanel solution (breaks build)
author Ron de Bruijn <rmbruijn@gmail.com>
date Fri, 23 Sep 2011 13:30:01 +0200
parents 8300d5f0dc19
children 554e342665fe
line wrap: on
line source
con t other_ctx = {Cal : Calendar.t,
          Panel : TogglePanel.togglePanel Calendar.t other_ctx}

type date = Calendar.date
val date_eq = Calendar.date_eq
val date_ord = Calendar.date_ord
val time = Calendar.time
val date = Calendar.date

(* : other_ctx:::{Unit} -> [other_ctx ~ body] => formatCtl other_ctx  *)

val format  = TogglePanel.defaultFormat 
                 --#OpenCtl -- #CloseCtl
                 ++ {OpenCtl = fn behaviour => <xml><button value="Choose" onclick={behaviour}/></xml>,
                     CloseCtl = fn behaviour => <xml><button value="Hide" onclick={behaviour}/></xml>}

fun create tm =
    cal <- Calendar.create tm;
    panel <- TogglePanel.create format cal False;

    return {Cal = cal,
            Panel = panel}

fun onChange db f =
    Calendar.onChange db.Cal f

fun set db day =
    Calendar.set db.Cal day

fun value db = Calendar.value db.Cal

fun render db = 
    <xml>
      <dyn signal={date <- Calendar.value db.Cal;
                   return <xml>{[date.Year]}-{[date.Month]}-{[date.Day]}</xml>}/>
      {Gui.toXml db.Panel}
    </xml>