rem ' bbjapi() msgbox & prompt
sysgui = unt
open (sysgui)"X0"
sysgui! = bbjapi().getSysGui()
window! = sysgui!.addWindow(10,10,730,525,"BBJAPI() MSGBOX & PROMPT",$00090083$)
window!.setCallback(window!.ON_CLOSE,"eoj")
LocaleBox! = window!.addListBox(100,10,10,350,340,$$,$$)
UIDefaults! = javax.swing.UIManager@.getDefaults()
print UIDefaults!.get("OptionPane.errorSound")
print UIDefaults!.get("OptionPane.informationSound")
print UIDefaults!.get("OptionPane.questionSound")
print UIDefaults!.get("OptionPane.warningSound")
UIDefaults!.put("AuditoryCues.playList",null())
x$ = "", y$ = "", w$ = $$, h$ = $$, html = 0
window!.addStaticText(101,0,365,25,25,"&X:",$8000$)
x! = window!.addEditBox(102,30,360,50,25,"",$$)
x!.setToolTipText("X location of dialog")
x!.setCallback(x!.ON_EDIT_MODIFY,"x")
window!.addStaticText(103,90,365,25,25,"&Y:",$8000$)
y! = window!.addEditBox(104,120,360,50,25,"",$$)
y!.setToolTipText("Y location of dialog")
y!.setCallback(y!.ON_EDIT_MODIFY,"y")
window!.addStaticText(105,180,365,25,25,"&W:",$8000$)
w! = window!.addEditBox(106,210,360,50,25,"",$$)
w!.setToolTipText("Maximum width of content")
w!.setCallback(w!.ON_EDIT_MODIFY,"w")
window!.addStaticText(107,270,365,25,25,"&H:",$8000$)
h! = window!.addEditBox(108,300,360,50,25,"",$$)
h!.setToolTipText("Maximum height of content")
h!.setCallback(h!.ON_EDIT_MODIFY,"h")
window!.addStaticText(109,360,365,75,25,"Extra &rows:",$8000$)
rows! = window!.addInputNSpinner(110,440,360,75,25,0,5000)
rows!.setCallback(rows!.ON_SPIN,"rows")
rows!.setToolTipText("Extra rows of content")
rows!.setCallback(rows!.ON_EDIT_MODIFY,"rows")
rows = 0
window!.addStaticText(111,525,365,75,25,"Extra &cols:",$8000$)
cols! = window!.addInputNSpinner(112,605,360,75,25,0,2000)
cols!.setCallback(cols!.ON_SPIN,"cols")
cols!.setToolTipText("Extra columns of content")
cols!.setCallback(cols!.ON_EDIT_MODIFY,"cols")
cols = 0
rem ' config.bbx: SET !OPTIONS=NATIVE_BROWSER_MSGBOX=TRUE
native_dialog$ = stbl("!OPTIONS","NATIVE_BROWSER_MSGBOX")
native_dialog = sgn(pos("TRUE"=native_dialog$))
flags$ = iff(native_dialog,$0004$,$0000$)
native_dialog! = window!.addCheckBox(113,10,400,110,25,"&Native dialog",flags$)
native_dialog!.setToolTipText("BUI: Use native browser dialog for OK and OK/Cancel")
native_dialog!.setCallback(native_dialog!.ON_CHECK_ON,"native_dialog_true")
native_dialog!.setCallback(native_dialog!.ON_CHECK_OFF,"native_dialog_false")
use_html! = window!.addCheckBox(114,120,400,120,25,"HTML content",$0000$)
use_html!.setToolTipText("Always set MSGBOX content using html")
use_html!.setCallback(use_html!.ON_CHECK_ON,"use_html_true")
use_html!.setCallback(use_html!.ON_CHECK_OFF,"use_html_false")
window!.addStaticText(115,245,405,60,25,"&Timeout:",$8000$)
timeout! = window!.addInputNSpinner(116,310,400,50,25,0,10)
timeout!.setCallback(timeout!.ON_SPIN,"timeout")
timeout!.setCallback(timeout!.ON_EDIT_MODIFY,"timeout")
timeout!.setToolTipText("MSGBOX timeout (seconds)")
timeout = 0
mdi_desktop! = window!.addCheckBox(117,10,435,120,25,"&MDI Desktop",$0000$)
mdi_desktop!.setToolTipText("Restrict dialogue to the MDI desktop")
mdi_desktop!.setCallback(mdi_desktop!.ON_CHECK_ON,"mdi_desktop_true")
mdi_desktop!.setCallback(mdi_desktop!.ON_CHECK_OFF,"mdi_desktop_false")
disable_html! = window!.addCheckBox(118,120,435,120,25,"&Disable HTML",$0000$)
disable_html!.setToolTipText("Render HTML content as raw text")
disable_html!.setCallback(disable_html!.ON_CHECK_ON,"disable_html_true")
disable_html!.setCallback(disable_html!.ON_CHECK_OFF,"disable_html_false")
window!.addStaticText(119,245,440,60,25,"&Modes:",$8000$)
modes$ = "theme=primary"
mode! = window!.addEditBox(120,310,430,410,25,modes$,$$)
mode!.setToolTipText("Add comma-separated modes/attributes here.")
window!.addGroupBox(200,380,10,130,190,"Icon",$$)
Icon0! = window!.addRadioButton(201,390,40,110,25,"No Icon",$0004$)
Icon16! = window!.addRadioButton(202,390,70,110,25,"Stop Sign",$$)
Icon32! = window!.addRadioButton(203,390,100,110,25,"Question",$$)
Icon48! = window!.addRadioButton(204,390,130,110,25,"Exclamation",$$)
Icon64! = window!.addRadioButton(205,390,160,110,25,"Information",$$)
IconGroup! = window!.addRadioGroup()
IconGroup!.add(Icon0!)
IconGroup!.add(Icon16!)
IconGroup!.add(Icon32!)
IconGroup!.add(Icon48!)
IconGroup!.add(Icon64!)
window!.addGroupBox(300,380,220,130,130,"Default Button",$$)
Default0! = window!.addRadioButton(301,390,250,110,25,"First",$0004$)
Default256! = window!.addRadioButton(302,390,280,110,25,"Second",$$)
Default512! = window!.addRadioButton(303,390,310,110,25,"Third",$$)
DefaultGroup! = window!.addRadioGroup()
DefaultGroup!.add(Default0!)
DefaultGroup!.add(Default256!)
DefaultGroup!.add(Default512!)
window!.addGroupBox(400,530,10,190,340,"Buttons",$$)
Buttons0! = window!.addRadioButton(401,540,40,160,25,"OK",$0004$)
Buttons1! = window!.addRadioButton(402,540,70,160,25,"OK/Cancel",$$)
Buttons2! = window!.addRadioButton(403,540,100,160,25,"Abort/Retry/Ignore",$$)
Buttons3! = window!.addRadioButton(404,540,130,160,25,"Yes/No/Cancel",$$)
Buttons4! = window!.addRadioButton(405,540,160,160,25,"Yes/No",$$)
Buttons5! = window!.addRadioButton(406,540,190,160,25,"Retry/Cancel",$$)
Buttons7! = window!.addRadioButton(407,540,220,160,25,"Custom",$$)
ButtonsGroup! = window!.addRadioGroup()
ButtonsGroup!.add(Buttons0!)
ButtonsGroup!.add(Buttons1!)
ButtonsGroup!.add(Buttons2!)
ButtonsGroup!.add(Buttons3!)
ButtonsGroup!.add(Buttons4!)
ButtonsGroup!.add(Buttons5!)
ButtonsGroup!.add(Buttons7!)
Custom1! = window!.addEditBox(501,540,250,170,25,"&1",$$)
Custom2! = window!.addEditBox(502,540,280,170,25,"&2",$$)
Custom3! = window!.addEditBox(503,540,310,170,25,"&3",$$)
Close! = window!.addButton(2,380,400,100,25,"Close")
Close!.setCallback(Close!.ON_BUTTON_PUSH,"eoj")
Msgbox! = window!.addButton(1,490,400,110,25,"MSGBOX()")
Msgbox!.setCallback(Msgbox!.ON_BUTTON_PUSH,"msgbox")
Prompt! = window!.addButton(3,610,400,110,25,"PROMPT()")
Prompt!.setCallback(Prompt!.ON_BUTTON_PUSH,"prompt")
imagefile! = window!.addButton(121,10,470,120,25,"Image File",$$)
imagefile!.setCallback(imagefile!.ON_BUTTON_PUSH,"imagefile")
iconwidth! = window!.addEditBox(122,140,470,50,25,"",$$)
iconwidth!.setToolTipText("Scaled icon width")
iconheight! = window!.addEditBox(123,200,470,50,25,"",$$)
iconheight!.setToolTipText("Scaled icon height")
window!.addStaticText(128,250,470,50,25,"Icon:",$8000$)
icon$ = ""
icon! = window!.addEditBox(129,310,470,410,25,icon$,$$)
icon!.setToolTipText("Specify a custom icon here.")
status! = window!.addStatusBar(99)
gosub init
process_events
eoj:
release
native_dialog_true:
native_dialog$="TRUE"
native_dialog$ = stbl("!OPTIONS","NATIVE_BROWSER_MSGBOX="+native_dialog$)
return
native_dialog_false:
native_dialog$="FALSE"
native_dialog$ = stbl("!OPTIONS","NATIVE_BROWSER_MSGBOX="+native_dialog$)
return
use_html_true:
html = 1
return
use_html_false:
html = 0
return
disable_html_true:
disable_html = 1
return
disable_html_false:
disable_html = 0
return
mdi_desktop_true:
mdi_desktop = 1
return
mdi_desktop_false:
mdi_desktop = 0
return
msgbox:
Locale = LocaleBox!.getSelectedIndex()
if Locale<0 then
Locale$ = stbl("!LOCALE",Locale.getDefault().toString())
Locale! = Locale.getDefault()
Message! = Locale!.getDisplayName(Locale!)
Title! = Locale!.getDisplayName()
else
Locale$ = stbl("!LOCALE",Locales!.get(Locale))
Locale! = LocaleList!.get(Locale)
Message! = localNameList!.get(Locale)
Title! = defaultNameList!.get(Locale)
endif
Title$ = fnhtml$(Title!,html)
if rows then
for i = 1 to rows
extra$ = fill(cols,"row"+str(i)+",")
Message! = Message!.concat($0a$).concat(extra$)
next i
endif
Message$ = fnhtml$(Message!,html)
expr = 0, custom = 0
switch ButtonsGroup!.getSelected().getID()
case Buttons0!.getID(); break
case Buttons1!.getID(); expr=1; break
case Buttons2!.getID(); expr=2; break
case Buttons3!.getID(); expr=3; break
case Buttons4!.getID(); expr=4; break
case Buttons5!.getID(); expr=5; break
case Buttons7!.getID(); expr=7,custom=1; break
case default; escape
swend
switch IconGroup!.getSelected().getID()
case Icon0!.getID(); break
case Icon16!.getID(); expr=expr+16; break
case Icon32!.getID(); expr=expr+32; break
case Icon48!.getID(); expr=expr+48; break
case Icon64!.getID(); expr=expr+64; break
case default; escape
swend
switch DefaultGroup!.getSelected().getID()
case Default0!.getID(); break
case Default256!.getID(); expr=expr+256; break
case Default512!.getID(); expr=expr+512; break
case default; escape
swend
if disable_html then expr=expr+32768
if mdi_desktop then expr=expr+131072
mode$ = "x="+x$+",y="+y$+",w="+w$+",h="+h$
if len(mode!.getText().trim()) then mode$ = mode$ + "," +mode!.getText().trim()
iconwidth$ = iconwidth!.getText().trim()
if len(iconwidth$) then mode$ = mode$ + ",iconwidth=" + iconwidth$
iconheight$ = iconheight!.getText().trim()
if len(iconheight$) then mode$ = mode$ + ",iconheight=" + iconheight$
icon$ = icon!.getText().trim()
if pos(","=icon$) then icon$ = """" + icon$ + """"
if len(icon$) then mode$ = mode$ + ",icon=" + icon$
print mode$,expr
rem System.err.println(mode$)
msgbox! = bbjapi().msgbox().message(Message$).title(title$).options(expr).timeout(timeout).modes(mode$)
if custom then
Button1! = Custom1!.getText().trim(),Button1$=fnhtml$(Button1!,html)
Button2! = Custom2!.getText().trim(),Button2$=fnhtml$(Button2!,html)
Button3! = Custom3!.getText().trim(),Button3$=fnhtml$(Button3!,html)
if Button3!.length() then
rem result = msgbox(Message$,expr,Title$,Button1$,Button2$,Button3$,tim=timeout,mode=mode$,err=oops)
msgbox!.button1(Button1$).button2(Button2$).button3(Button3$)
print msgbox!
result = msgbox!.show(err=oops)
else
if Button2!.length() then
rem result = msgbox(Message$,expr,Title$,Button1$,Button2$,tim=timeout,mode=mode$,err=oops)
msgbox!.button1(Button1$).button2(Button2$)
print msgbox!
result = msgbox!.show(err=oops)
else
if Button1!.length() then
rem result = msgbox(Message$,expr,Title$,Button1$,tim=timeout,mode=mode$,err=oops)
msgbox!.button1(Button1$)
print msgbox!
result = msgbox!.show(err=oops)
else
rem result = msgbox(Message$,expr,Title$,tim=timeout,mode=mode$,err=oops)
print msgbox!
result = msgbox!.show(err=oops)
endif
endif
endif
switch result
case -1; result$ = "Timeout"; break
case 0; result$ = "None"; break
case 1; result$ = Button1$; break
case 2; result$ = Button2$; break
case 3; result$ = Button3$; break
case default; result$ = "Undefined"
swend
else
rem result = msgbox(Message$,expr,Title$,tim=timeout,mode=mode$,err=oops)
print msgbox!
result = msgbox!.show(err=oops)
switch result
case -1; result$ = "Timeout"; break
case 0; result$ = "None"; break
case 1; result$ = "OK"; break
case 2; result$ = "Cancel"; break
case 3; result$ = "Abort"; break
case 4; result$ = "Retry"; break
case 5; result$ = "Ignore"; break
case 6; result$ = "Yes"; break
case 7; result$ = "No"; break
case default; result$ = "Undefined"
swend
endif
result$ = "MSGBOX result = " + result$ + " ("+str(result)+")"
status!.setText(result$)
return
oops:
rem result = msgbox(errmes(-1),48,"*** ERROR ***")
result = bbjapi().msgbox().message(errmes(-1)).options(48).title("*** ERROR ***").show()
return
prompt:
Locale = LocaleBox!.getSelectedIndex()
if Locale<0 then
Locale$ = stbl("!LOCALE",Locale.getDefault().toString())
Locale! = Locale.getDefault()
Message! = Locale!.getDisplayName(Locale!)
Title! = Locale!.getDisplayName()
else
Locale$ = stbl("!LOCALE",Locales!.get(Locale))
Locale! = LocaleList!.get(Locale)
Message! = localNameList!.get(Locale)
Title! = defaultNameList!.get(Locale)
endif
Title$ = fnhtml$(Title!,html)
Default$ = Title$
if rows then
for i = 1 to rows
extra$ = fill(cols,"row"+str(i)+",")
Message! = Message!.concat($0a$).concat(extra$)
next i
endif
Message$ = fnhtml$(Message!,html)
expr = 0
switch DefaultGroup!.getSelected().getID()
case Default0!.getID(); break
case Default256!.getID(); expr=expr+256; break
case Default512!.getID(); expr=expr+512; break
case default; escape
swend
switch IconGroup!.getSelected().getID()
case Icon0!.getID(); break
case Icon16!.getID(); expr=expr+16; break
case Icon32!.getID(); expr=expr+32; break
case Icon48!.getID(); expr=expr+48; break
case Icon64!.getID(); expr=expr+64; break
case default; escape
swend
if mdi_desktop then expr=expr+131072
mode$ = "x="+x$+",y="+y$+",w="+w$+",h="+h$
if len(mode!.getText().trim()) then mode$ = mode$ + "," +mode!.getText().trim()
iconwidth$ = iconwidth!.getText().trim()
if len(iconwidth$) then mode$ = mode$ + ",iconwidth=" + iconwidth$
iconheight$ = iconheight!.getText().trim()
if len(iconheight$) then mode$ = mode$ + ",iconheight=" + iconheight$
icon$ = icon!.getText().trim()
if pos(","=icon$) then icon$ = """" + icon$ + """"
if len(icon$) then mode$ = mode$ + ",icon=" + icon$
print mode$,expr
rem result$ = prompt(Message$,Default$,Title$,expr,tim=timeout,mode=mode$,err=oops)
prompt! = bbjapi().prompt().message(Message$).init(Default$).title(Title$).options(expr).timeout(timeout).modes(mode$)
print prompt!
result$ = prompt!.show(err=oops)
result$ = "PROMPT result = " + result$
status!.setText(result$)
return
use java.util.Arrays
use java.util.ArrayList
use java.util.Locale
init:
default$ = Locale.getDefault().toString()
default! = default$
vector! = bbjapi().makeVector()
list! = stbl("!LOCALES")
Locales! = Arrays.asList(list!.split($0a$))
java.util.Collections.sort(Locales!)
localeList! = new ArrayList()
localNameList! = new ArrayList()
defaultNameList! = new ArrayList()
for i=0 to Locales!.size()-1
temp! = Arrays.asList(Locales!.get(i).split("_",3))
switch temp!.size()
case 3; Locale! = new Locale(temp!.get(0),temp!.get(1),temp!.get(2)); break
case 2; Locale! = new Locale(temp!.get(0),temp!.get(1)); break
case 1; Locale! = new Locale(temp!.get(0)); break
case default; Locale! = Locale.getDefault(); break
swend
localeList!.add(Locale!)
language$ = Locale!.getLanguage()
localName! = new String(Locale!.getDisplayName(Locale!).getBytes("UTF-8"),"UTF-8")
defaultName! = new String(Locale!.getDisplayName().getBytes("UTF-8"),"UTF-8")
unicode! = localName!.concat(" - ").concat(defaultName!)
vector!.add(unicode!)
localNameList!.add(localName!)
defaultNameList!.add(defaultName!)
if Locales!.get(i).equals(default$) then default!=unicode!
next i
LocaleBox!.insertItems(-1,vector!)
default = vector!.indexOf(default!)
LocaleBox!.selectIndex(default)
return
def fnhtml$(string!,_html)
html! = new StringBuilder("")
if string!.length() then
for i=0 to string!.length()-1
c = string!.codePointAt(i)
if c<128 then html!.append(chr(c)) else html!.append("&#").append(str(c)).append(";"); _html=1
next i
if _html then
html!.insert(0,"<html><p style='font-size:20px;'>")
endif
endif
print string!," = ",html!
if _html then return html!.toString().replaceAll($0a$,"<br>")
print html!.toString()
return html!.toString()
fnend
timeout:
event! = sysgui!.getLastEvent()
timeout = num(event!.getText())
return
rows:
event! = sysgui!.getLastEvent()
rows = num(event!.getText())
return
cols:
event! = sysgui!.getLastEvent()
cols = num(event!.getText())
return
x:
event! = sysgui!.getLastEvent()
x$ = event!.getText()
return
y:
event! = sysgui!.getLastEvent()
y$ = event!.getText()
return
w:
event! = sysgui!.getLastEvent()
w$ = event!.getText()
return
h:
event! = sysgui!.getLastEvent()
h$ = event!.getText()
return
imagefile:
filter$ = "Images"+$0a$+"*.png;*.jpg;*.jpeg;*.gif;*.tif;*.tiff"
filter$ = filter$ + $0a$ + "All Files (*.*)"+$0a$+"*.*"
rem clientfile$ = fileopen("Image File","","","",filter$,mode="client,style=style")
fileopen! = bbjapi().fileopen().title("Image File").filters(filter$).modes("client,style=style")
print fileopen!
clientfile$ = fileopen!.show()
if pos("::"=clientfile$) then icon!.setText(""); return
tc! = bbjapi().getThinClient()
fs! = tc!.getClientFileSystem()
cf! = fs!.getClientFile(clientfile$)
rem ' The Java Swing GUI client doesn't understand data urls
if info(3,6)="5" or info(3,6)="6" then
bytes! = cf!.getContents()
base64$=java.util.Base64.getMimeEncoder().encode(bytes!)
url$ = "data:image/png;base64,"+base64$
icon!.setText(url$)
else
imagefile$ = cf!.copyFromClient()
icon!.setText(imagefile$)
endif
return
|