class BaseDialog extends this.OS.GUI.BaseModel constructor: (name) -> super name @parent = undefined @modal = false @handler = undefined quit: () -> evt = new _GUI.BaseEvent("exit") @onexit(evt) if not evt.prevent delete @.observable @parent.dialog = undefined if @parent ($ @scheme).remove() if @scheme @dialog.quit() if @dialog meta: () -> @parent.meta() show: () -> @trigger 'focus' ($ @scheme).css "z-index", window._zindex+2 hide: () -> @trigger 'hide' BaseDialog.type = 3 this.OS.GUI.BaseDialog = BaseDialog ### this dialog rende a tag as main content and a list of buttons, the behaviour of the button is specified by user. The conf object is in the follow form { tag: , buttons:[ { label: 'buton label', onclick: function(d){...} }, ... ] } ### class BasicDialog extends BaseDialog constructor: ( name, @conf ) -> super name html = " " html += "<#{@conf.tag} data-id = 'content'>" html += "
" html += "" for k,v of @conf.buttons html += "
" #render the html _GUI.htmlToScheme html, @, @host main: () -> @scheme.set "minimizable", false me = @ f = (_v) -> () -> _v.onclick me # bind action to button ( (me.find "bt#{k}").set "onbtclick", f(v) ) for k, v of @conf.buttons this.OS.GUI.BasicDialog = BasicDialog class CalendarDialog extends BasicDialog constructor: () -> super "CalendarDialog", { tag: 'afx-calendar-view', width: 300, height: 220, buttons: [ { label: 'Ok', onclick: (d) -> date = (d.find "content").get "selectedDate" if date d.handler date if d.handler d.quit() else d.notify "Please select a date" }, { label: 'Cancel', onclick: (d) -> d.quit() } ] } this.OS.register "CalendarDialog", CalendarDialog