antosdk-apps/ShowCase/coffees/main.coffee
2022-12-31 22:45:42 +01:00

299 lines
11 KiB
CoffeeScript

Ant = this
class ShowCase extends this.OS.application.BaseApplication
constructor: (args) ->
super "ShowCase", args
main: () ->
bt = @find 'bttest'
@observable.on "btclick", (e) =>
@notify "button clicked"
@bindKey("CTRL-SHIFT-P", (e) => @notify("CTRL-SHIFT-P shortcut executed"))
list = @find 'list'
list.data = [
{ text: "some thing with avery long text" },
{ text: "some thing 1", closable: true },
{ text: "some thing 2", iconclass: "fa fa-camera-retro fa-lg" },
{ text: "some thing 3" },
{ text: "some thing 4" },
{ text: "some thing 5" }
]
list.onlistselect = (e) => @notify(e.data.items)
sw = @find 'switch'
sw.onswchange = (e) =>
@notify e.data
spin = @find 'spin'
spin.onvaluechange = (e) =>
@notify e.data
menu = @find 'menu'
menu.nodes = @menu()
list.contextmenuHandle = (e, m) =>
m.items = @menu()
m.show e
grid = @find 'grid'
grid.oncelldbclick = (e) =>
@notify "on dbclick", e
grid.onrowselect = (e) =>
@notify "on rowselect"
grid.header = [{ text: "header1", width: 80 }, { text: "header2" }, { text: "header3" }]
grid.rows = [
[{ text: "text 1" }, { text: "text 2" }, { text: "text 3" }],
[{ text: "text 4" }, { text: "text 5" }, { text: "text 6" }],
[{ text: "text 7" }, { text: "text 8" }, { text: "text 9" }],
[{ text: "text 10" }, { text: "this is a long text" }, { text: "text 11" }]
]
tdata = {
text: 'Tree root',
nodes: [
{ text: 'leaf 1', iconclass:'fa fa-car'},
{ text: 'leaf 2' },
{
text: 'sub tree 1',
nodes: [
{
text: 'sub sub tree 1',
nodes: [
{ text: 'leaf 1 of sub sub tree 1' },
{ text: 'leaf 2 of sub sub tree 1' }
]
},
{ text: 'leaf 1 of sub tree' },
{ text: 'leaf 2 of sub tree' },
{
text: 'sub sub tree 2',
nodes: [
{ text: 'leaf 1 of sub sub tree 2' },
{ text: 'leaf 2 of sub sub tree 2' }
]
}
]
}
]
}
tree = @find 'tree'
tree.data = tdata
tree.ontreeselect = (e) =>
@notify e.data.item.treepath
tree.ontreedbclick = (e) =>
@notify "treedbclick"
@observable.on "treedbclick", (e) =>
@notify "observable treedbclick"
slider = @find 'slider'
slider.onvaluechange = (v) =>
@notify v
cal = @find 'cal'
cal.ondateselect = (e) =>
@notify e.data.toString()
pk = @find 'cpk'
pk.oncolorselect = (e) =>
@notify JSON.stringify(e)
fileview = @find 'fileview'
fileview.fetch = (path) ->
new Promise (resolve, reject) ->
dir = path.asFileHandle()
dir.read().then (d) ->
p = dir.parent().asFileHandle()
p.filename = "[..]"
p.type = "dir"
return reject d.error if d.error
d.result.unshift p
resolve d.result
fileview.path = "home:///"
viewoption = @find 'viewoption'
viewoption.data = [
{ text: "icon" },
{ text: "list" },
{ text: "tree" }
]
viewoption.onlistselect = (e) =>
@notify e.data.item.data.text
fileview.view = e.data.item.data.text
dllist = @find "dialoglist"
btrun = @find "btrundia"
dllist.data = [
{ text: "Prompt dialog", id: "prompt" },
{ text: "Calendar dialog", id: "calendar" },
{ text: "Color picker dialog", id: "colorpicker" },
{ text: "Info dialog", id: "info" },
{ text: "YesNo dialog", id: "yesno" },
{ text: "Selection dialog", id: "selection" },
{ text: "About dialog", id: "about" },
{ text: "File dialog", id: "file" },
{ text: "Text dialog", id: "text" },
{ text: "Multi-input dialog", id: "minputs" },
{ text: "Multi key value dialog", id: "mkv" }
]
btrun.onbtclick = (e) =>
item = dllist.selectedItem
return unless item
switch item.data.id
when "prompt"
@openDialog("PromptDialog", {
title: "Prompt review",
value: "txt data",
label: "enter value"
})
.then (d) =>
@notify d
when "calendar"
@openDialog("CalendarDialog", {
title: "Calendar dialog"
})
.then (d) =>
@notify d.toString()
when "colorpicker"
@openDialog("ColorPickerDialog")
.then (d) =>
@notify JSON.stringify(d)
when "info"
@openDialog("InfoDialog", {
title: "Info application",
name: "Show case",
date: "10/12/2014",
description: "the brown fox jumps over the lazy dog"
})
.then (d) ->
when "yesno"
@openDialog("YesNoDialog", {
title: "Question ?",
text: "Do you realy want to delete file ?"
})
.then (d) =>
@notify d
when "selection"
@openDialog("SelectionDialog", {
title: "Select data ?",
data: [
{ text: "Option 1" },
{ text: "Option 2" },
{ text: "Option 3", iconclass: "fa fa-camera-retro fa-lg" }
]
})
.then (d) =>
@notify d.text
when "about"
@openDialog("AboutDialog" )
.then (d) =>
when "file"
@openDialog("FileDialog", {
title: "Select file ?",
#root: "home:///",
mimes: ["text/*", "dir"],
file: "Untitled".asFileHandle()
})
.then (f, name) =>
@notify f, name
when "text"
@openDialog("TextDialog", {
title: "Text dialog review",
value: "txt data",
label: "this is the label"
})
.then (d) =>
@notify d
when "minputs"
@openDialog("MultiInputDialog", {
title: "Multi-inputs",
model: {
name: "Your name",
email: "Your email",
where: "Your address"
},
allow_empty: false,
data: {
name: "John Doe",
email: "jd@mail.com",
where: "Anywhere on Earth"
}
})
.then (d) =>
@notify JSON.stringify(d)
when "mkv"
@openDialog("KeyValueDialog", {
title: "Multi key-values",
data: {
name: "John Doe",
email: "jd@mail.com",
where: "Anywhere on Earth"
}
})
.then (d) =>
@notify JSON.stringify(d)
else return
mnFile: () ->
#@notify file
arr = {
text: "__(File)",
nodes: [
{ text: "__(New file)", dataid: "#{@name}-mkf", shortcut: 'C-F' },
{ text: "__(New folder)", dataid: "#{@name}-mkdir", shortcut: 'C-D' },
{ text: "__(Open with)", dataid: "#{@name}-open", child: @apps },
{ text: "__(Upload)", dataid: "#{@name}-upload", shortcut: 'C-U' },
{ text: "__(Download)", dataid: "#{@name}-download" },
{ text: "__(Share file)", dataid: "#{@name}-share", shortcut: 'C-S' },
{ text: "__(Properties)", dataid: "#{@name}-info", shortcut: 'C-I' }
], onchildselect: (e) => @notify e.data.item.data.text
}
return arr
mnEdit: () ->
{
text: "__(Edit)",
nodes: [
{ text: "__(Rename)", dataid: "#{@name}-mv", shortcut: 'C-R' },
{ text: "__(Delete)", dataid: "#{@name}-rm", shortcut: 'C-M' },
{ text: "__(Cut)", dataid: "#{@name}-cut", shortcut: 'C-X' },
{ text: "__(Copy)", dataid: "#{@name}-copy", shortcut: 'C-C' },
{ text: "__(Paste)", dataid: "#{@name}-paste", shortcut: 'C-P' }
], onchildselect: (e) => @notify e.data.item.data.text
}
menu: () ->
menu = [
@mnFile(),
@mnEdit(),
{
text: "__(View)",
nodes: [
{ text: "__(Refresh)", dataid: "#{@name}-refresh"},
{ text: "__(Sidebar)", switch: true, checked: true },
{ text: "__(Navigation bar)", switch: true, checked: false },
{ text: "__(Hidden files)", switch: true, checked: true, dataid: "#{@name}-hidden" },
{ text: "__(Type)", nodes: [
{ text: "__(Icon view)", radio: true, checked: true, dataid: "#{@name}-icon", type: 'icon' },
{ text: "__(List view)", radio:true, checked: false, dataid: "#{@name}-list", type: 'list' },
{ text: "__(Tree view)", radio:true, checked: false, dataid: "#{@name}-tree", type: 'tree' }
], onchildselect: (e) => @notify e.data.item.data.text
},
], onchildselect: (e) => @notify e.data.item.data.text
},
]
menu
ShowCase.singleton = true
this.OS.register "ShowCase", ShowCase