rem ' BBjThinClient::setClientTimeZone use java.util.Arrays use java.util.ArrayList use java.util.Locale use java.util.TimeZone precision 4 sysgui = unt open (sysgui)"X0" bbjapi! = bbjapi() sysgui! = bbjapi!.getSysGui() sysgui!.setScale(1.5,1.5) title$ = "BBjThinClient::setClientTimeZone" window! = sysgui!.addWindow(25,25,730,400,title$,$00090003$) window!.setCallback(window!.ON_CLOSE,"eoj") listbox! = window!.addListBox(101,10,10,350,380,$$,$$) listbox!.setCallback(listbox!.ON_LIST_CLICK,"listclick") window!.addGroupBox(200,370,10,350,160,"Server",$$) serverTimeZone! = window!.addStaticText(201,380,35,330,25,"",$$) window!.addStaticText(202,380,65,60,25,"DATE(0):",$8000$) server_date! = window!.addStaticText(203,445,65,265,25,"DATE(MODE=SERVER)",$$) server_date!.setToolTipText("date(0,mode=""server"")") window!.addStaticText(204,380,95,60,25,"JUL(0,0,0):",$8000$) server_jul! = window!.addStaticText(205,445,95,265,25,"JUL(MODE=SERVER)",$$) server_jul!.setToolTipText("jul(0,0,0,mode=""server"")") window!.addStaticText(206,380,125,60,25,"TIM:",$8000$) server_tim! = window!.addStaticText(207,445,125,265,25,"TIM(MODE=SERVER)",$$) server_tim!.setToolTipText("tim(mode=""server"")") window!.addGroupBox(300,370,180,350,160,"Client",$$) clientTimeZone! = window!.addStaticText(301,380,205,330,25,"",$$) window!.addStaticText(302,380,235,60,25,"DATE(0):",$8000$) client_date! = window!.addStaticText(303,445,235,265,25,"DATE(MODE=CLIENT)",$$) client_date!.setToolTipText("date(0,mode=""client"")") window!.addStaticText(304,380,265,60,25,"JUL(0,0,0):",$8000$) client_jul! = window!.addStaticText(305,445,265,265,25,"JUL(MODE=CLIENT)",$$) client_jul!.setToolTipText("jul(0,0,0,mode=""client"")") window!.addStaticText(306,380,295,60,25,"TIM:",$8000$) client_tim! = window!.addStaticText(307,445,295,265,25,"TIM(MODE=CLIENT)",$$) client_tim!.setToolTipText("tim(mode=""client"")") update! = window!.addButton(1,370,350,100,25,"Update") update!.setCallback(update!.ON_BUTTON_PUSH,"update") reset! = window!.addButton(2,480,350,100,25,"Reset") reset!.setCallback(reset!.ON_BUTTON_PUSH,"reset") gosub init gosub update process_events eoj: release listclick: event! = sysgui!.getLastEvent() index = event!.getSelectedIndex() if index<0 then client! = server! else client! = timezones!.get(index) bbjapi().getThinClient().setClientTimeZone(client!) gosub update return select: print sysgui!.getLastEvent() return reset: bbjapi().getThinClient().setClientTimeZone(null()) client! = bbjapi().getThinClient().getClientTimeZone() for i=0 to TimeZoneIDs!.size()-1 TimeZoneID$ = TimeZoneIDs!.get(i) timezone! = TimeZone.getTimeZone(TimeZoneID$) if client!.getID().equals(TimeZoneID$) then listbox!.selectIndex(i); break if timezone!.hasSameRules(client!) then listbox!.selectIndex(i); break next i gosub update return update: timezone! = server! localName! = timezone!.getDisplayName(locale!) defaultName! = timezone!.getDisplayName() unicode! = timezone!.getID().concat(" - ").concat(localName!) serverTimeZone!.setText(unicode!) mask$ = "%Yl-%Mz-%Dz %Hz:%mz:%sz" server_date!.setText(date(0:mask$,mode="server")) jul = jul(0,0,0,mode="server") date$ = date(jul:"%Yl-%Mz-%Dz",mode="server") server_jul!.setText(date$+" = "+str(jul)) t = tim(mode="server") h = int(t) x = fpt(t)*60 m = int(x) x = fpt(x)*60 s = int(x) x = fpt(x)*1000 ms = int(x) t$ = str(h:"00")+":"+str(m:"00")+":"+str(s:"00")+"."+str(ms:"000") server_tim!.setText(t$+" = "+str(t)) timezone! = client! localName! = timezone!.getDisplayName(locale!) defaultName! = timezone!.getDisplayName() unicode! = timezone!.getID().concat(" - ").concat(localName!) clientTimeZone!.setText(unicode!) mask$ = "%Yl-%Mz-%Dz %Hz:%mz:%sz" client_date!.setText(date(0:mask$,mode="client")) jul = jul(0,0,0,mode="client") date$ = date(jul:"%Yl-%Mz-%Dz",mode="client") client_jul!.setText(date$+" = "+str(jul)) t = tim(mode="client") h = int(t) x = fpt(t)*60 m = int(x) x = fpt(x)*60 s = int(x) x = fpt(x)*1000 ms = int(x) t$ = str(h:"00")+":"+str(m:"00")+":"+str(s:"00")+"."+str(ms:"000") client_tim!.setText(t$+" = "+str(t)) return init: client! = bbjapi().getThinClient().getClientTimeZone() server! = bbjapi().getInterpreterServer().getServerTimeZone() locale$ = bbjapi().getThinClient().getClientLocale() locale$ = stbl("!LOCALE") locale! = fnLocale!(locale$) def fnLocale!(temp!) temp! = Arrays.asList(temp!.split("_",3)) switch temp!.size() case 3; tempLocale! = new Locale(temp!.get(0),temp!.get(1),temp!.get(2)); break case 2; tempLocale! = new Locale(temp!.get(0),temp!.get(1)); break case 1; tempLocale! = new Locale(temp!.get(0)); break case default; tempLocale! = Locale.getDefault(); break swend return tempLocale! fnend default = 0 vector! = bbjapi().makeVector() array! = TimeZone.getAvailableIDs() Arrays.sort(array!) TimeZoneIDs! = Arrays.asList(array!) timezones! = new ArrayList() localNameList! = new ArrayList() defaultNameList! = new ArrayList() for i=0 to TimeZoneIDs!.size()-1 TimeZoneID$ = TimeZoneIDs!.get(i) timezone! = TimeZone.getTimeZone(TimeZoneID$) if !default and client!.getID().equals(TimeZoneID$) then default=i if !default and timezone!.hasSameRules(client!) then default=i timezones!.add(timezone!) localName! = timezone!.getDisplayName(locale!) defaultName! = timezone!.getDisplayName() unicode! = timezone!.getID().concat(" - ").concat(localName!) vector!.add(unicode!) localNameList!.add(localName!) defaultNameList!.add(defaultName!) next i listbox!.insertItems(-1,vector!) listbox!.selectIndex(default) return
|