rem ' spinner.txt use java.util.Arrays use java.util.Locale use java.text.DecimalFormatSymbols rem locale$=stbl("!LOCALE","es_AR") rem locale$=stbl("!LOCALE","en_US") locale$=stbl("!LOCALE","de_DE") 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 dfs! = new DecimalFormatSymbols(locale!) opts$ = opts opts$(3,1) = ior(opts$(3,1),$02$) opts$(5,1) = Character.toString(dfs!.getGroupingSeparator()) opts$(6,1) = Character.toString(dfs!.getMonetaryDecimalSeparator()) setopts opts$ mask$ = "-#########" debug = 0 rem ---------------------------------------------------------------------- sysgui = unt open (sysgui)"X0" print (sysgui)'scale'(1.25,1.25) sysgui! = bbjapi().getSysGui() window! = sysgui!.addWindow(25,25,1060,300,"BBjSpinner - "+locale$,$2009008f$) window!.setCallback(sysgui!.ON_CLOSE,"eoj") list$ = $$ list! = bbjapi().makeVector() restore 0 while 1 dread item$,end=*break list!.add(item$) list$ = list$ + item$ + $0a$ wend inputn: rem ' BBjInputNSpinner window!.addGroupBox(101,10,10,200,210,"BBjInputNSpinner") window!.addStaticText(102,15,30,60,25,"Spinner:",$8000$) inputn! = window!.addInputNSpinner(103,80,30,115,25,$$,mask$,$04$) inputn!.setValue(1234) inputn!.setCallback(sysgui!.ON_SPIN, "spin") inputn!.setCallback(sysgui!.ON_INPUT_KEYPRESS,"event") inputn!.setCallback(sysgui!.ON_EDIT_MODIFY,"event") inputn!.setCallback(sysgui!.ON_GAINED_FOCUS,"event") inputn!.setCallback(sysgui!.ON_LOST_FOCUS,"event") inputn!.setCallback(sysgui!.ON_MOUSE_ENTER,"event") inputn!.setCallback(sysgui!.ON_MOUSE_EXIT,"event") inputnSpinDown! = window!.addButton(104,80,60,40,21,"<",$$) inputnSpinDown!.setCallback(sysgui!.ON_BUTTON_PUSH,"inputnSpinDown") inputnSpinUp! = window!.addButton(105,125,60,40,21,">",$$) inputnSpinUp!.setCallback(sysgui!.ON_BUTTON_PUSH,"inputnSpinUp") window!.addStaticText(106,15,90,60,25,"Mask:",$8000$) inputnMask! = window!.addEditBox(107,80,90,100,25,inputn!.getMask()) inputnMask!.setCallback(sysgui!.ON_LOST_FOCUS,"inputnMask") window!.addStaticText(108,15,120,60,25,"Minimum:",$8000$) inputnMinimum! = window!.addEditBox(109,80,120,100,25,"",$8000$) inputnMinimum!.setCallback(sysgui!.ON_LOST_FOCUS,"inputnMinimum") window!.addStaticText(110,15,150,60,25,"Maximum:",$8000$) inputnMaximum! = window!.addEditBox(111,80,150,100,25,"",$8000$) inputnMaximum!.setCallback(sysgui!.ON_LOST_FOCUS,"inputnMaximum") window!.addStaticText(112,15,180,60,25,"Step:",$8000$) inputnStep! = window!.addEditBox(113,80,180,100,25,"1",$8000$) inputnStep!.setCallback(sysgui!.ON_LOST_FOCUS,"inputnStep") inputd: rem ' BBjInputDSpinner window!.addGroupBox(201,220,10,200,210,"BBjInputDSpinner") window!.addStaticText(202,225,30,60,25,"Spinner:",$8000$) inputd! = window!.addInputDSpinner(203,290,30,115,25) inputd!.setCallback(sysgui!.ON_SPIN, "spin") inputd!.setCallback(sysgui!.ON_INPUT_KEYPRESS,"event") inputd!.setCallback(sysgui!.ON_EDIT_MODIFY,"event") inputd!.setCallback(sysgui!.ON_GAINED_FOCUS,"event") inputd!.setCallback(sysgui!.ON_LOST_FOCUS,"event") inputd!.setCallback(sysgui!.ON_MOUSE_ENTER,"event") inputd!.setCallback(sysgui!.ON_MOUSE_EXIT,"event") inputdSpinDown! = window!.addButton(204,290,60,40,21,"<",$$) inputdSpinDown!.setCallback(sysgui!.ON_BUTTON_PUSH,"inputdSpinDown") inputdSpinUp! = window!.addButton(205,335,60,40,21,">",$$) inputdSpinUp!.setCallback(sysgui!.ON_BUTTON_PUSH,"inputdSpinUp") window!.addStaticText(206,225,90,60,25,"Mask:",$8000$) inputdMask! = window!.addEditBox(207,290,90,100,25,inputd!.getMask()) inputdMask!.setCallback(sysgui!.ON_LOST_FOCUS,"inputdMask") window!.addStaticText(208,225,120,60,25,"Minimum:",$8000$) inputdMinimum! = window!.addInputD(209,290,120,100,25) inputdMinimum!.setValue(inputd!.getMinimumDate()) inputdMinimum!.setCallback(sysgui!.ON_LOST_FOCUS,"inputDMinimum") window!.addStaticText(210,225,150,60,25,"Maximum:",$8000$) inputdMaximum! = window!.addInputD(211,290,150,100,25) inputdMaximum!.setValue(inputd!.getMaximumDate()) inputdMaximum!.setCallback(sysgui!.ON_LOST_FOCUS,"inputDMaximum") inputdDay! = window!.addRadioButton(213,225,180,45,25,"D",$0024$) inputdDay!.setCallback(sysgui!.ON_CHECK_ON,"inputdDay") inputdDay!.setToolTipText("Spin days") inputdWeek! = window!.addRadioButton(214,270,180,45,25,"W",$0020$) inputdWeek!.setCallback(sysgui!.ON_CHECK_ON,"inputdWeek") inputdWeek!.setToolTipText("Spin weeks") inputdMonth! = window!.addRadioButton(215,315,180,45,25,"M",$0020$) inputdMonth!.setCallback(sysgui!.ON_CHECK_ON,"inputdMonth") inputdMonth!.setToolTipText("Spin months") inputdYear! = window!.addRadioButton(216,360,180,45,25,"Y",$0020$) inputdYear!.setCallback(sysgui!.ON_CHECK_ON,"inputdYear") inputdYear!.setToolTipText("Spin years") vector! = bbjapi().makeVector() vector!.add(inputdDay!) vector!.add(inputdWeek!) vector!.add(inputdMonth!) vector!.add(inputdYear!) radioGroup! = window!.addRadioGroup(vector!) inpute: rem ' BBjInputESpinner window!.addGroupBox(301,430,10,200,210,"BBjInputESpinner") window!.addStaticText(302,435,30,60,25,"Spinner:",$8000$) inpute! = window!.addInputESpinner(303,500,30,115,25,list!) inpute!.setCallback(sysgui!.ON_SPIN, "spin") inpute!.setCallback(sysgui!.ON_INPUT_KEYPRESS,"event") inpute!.setCallback(sysgui!.ON_EDIT_MODIFY,"event") inpute!.setCallback(sysgui!.ON_GAINED_FOCUS,"event") inpute!.setCallback(sysgui!.ON_LOST_FOCUS,"event") inpute!.setCallback(sysgui!.ON_MOUSE_ENTER,"event") inpute!.setCallback(sysgui!.ON_MOUSE_EXIT,"event") inpute!.setListIndex(rnd(list!.size())) inputeSpinDown! = window!.addButton(304,500,60,40,21,"<",$$) inputeSpinDown!.setCallback(sysgui!.ON_BUTTON_PUSH,"inputeSpinDown") inputeSpinUp! = window!.addButton(305,545,60,40,21,">",$$) inputeSpinUp!.setCallback(sysgui!.ON_BUTTON_PUSH,"inputeSpinUp") window!.addStaticText(306,435,90,60,25,"Mask:",$8000$) inputeMask! = window!.addEditBox(307,500,90,100,25,inpute!.getMask()) inputeMask!.setCallback(sysgui!.ON_LOST_FOCUS,"inputeMask") window!.addStaticText(308,435,120,60,25,"List:",$8000$) inputeList! = window!.addCEdit(309,500,120,105,85,list$,$8184$) inputeList!.setCallback(sysgui!.ON_LOST_FOCUS,"inputeList") editbox: rem ' BBjEditBoxSpinner window!.addGroupBox(401,640,10,200,210,"BBjEditBoxSpinner") window!.addStaticText(402,645,30,60,25,"Spinner:",$8000$) editbox! = window!.addEditBoxSpinner(403,710,30,115,25,list!) editbox!.setCallback(sysgui!.ON_SPIN, "spin") editbox!.setCallback(sysgui!.ON_EDIT_KEYPRESS,"event") editbox!.setCallback(sysgui!.ON_EDIT_MODIFY,"event") editbox!.setCallback(sysgui!.ON_GAINED_FOCUS,"event") editbox!.setCallback(sysgui!.ON_LOST_FOCUS,"event") editbox!.setCallback(sysgui!.ON_MOUSE_ENTER,"event") editbox!.setCallback(sysgui!.ON_MOUSE_EXIT,"event") editbox!.setListIndex(rnd(list!.size())) editboxSpinDown! = window!.addButton(404,710,60,40,21,"<",$$) editboxSpinDown!.setCallback(sysgui!.ON_BUTTON_PUSH,"editboxSpinDown") editboxSpinUp! = window!.addButton(405,755,60,40,21,">",$$) editboxSpinUp!.setCallback(sysgui!.ON_BUTTON_PUSH,"editboxSpinUp") window!.addStaticText(406,645,90,60,25,"List:",$8000$) editboxList! = window!.addCEdit(407,710,90,105,115,list$,$8184$) editboxList!.setCallback(sysgui!.ON_LOST_FOCUS,"editboxList") inputd: rem ' BBjInputTSpinner window!.addGroupBox(501,850,10,200,210,"BBjInputTSpinner") window!.addStaticText(502,855,30,60,25,"Spinner:",$8000$) inputt! = window!.addInputTSpinner(503,920,30,115,25) inputt!.setValue(time("123456")) inputt!.setCallback(sysgui!.ON_SPIN, "spin") inputt!.setCallback(sysgui!.ON_INPUT_KEYPRESS,"event") inputt!.setCallback(sysgui!.ON_EDIT_MODIFY,"event") inputt!.setCallback(sysgui!.ON_GAINED_FOCUS,"event") inputt!.setCallback(sysgui!.ON_LOST_FOCUS,"event") inputt!.setCallback(sysgui!.ON_MOUSE_ENTER,"event") inputt!.setCallback(sysgui!.ON_MOUSE_EXIT,"event") inputtSpinDown! = window!.addButton(504,920,60,40,21,"<",$$) inputtSpinDown!.setCallback(sysgui!.ON_BUTTON_PUSH,"inputtSpinDown") inputtSpinUp! = window!.addButton(505,965,60,40,21,">",$$) inputtSpinUp!.setCallback(sysgui!.ON_BUTTON_PUSH,"inputtSpinUp") window!.addStaticText(506,855,90,60,25,"Mask:",$8000$) inputtMask! = window!.addEditBox(507,920,90,100,25,inputt!.getMask()) inputtMask!.setCallback(sysgui!.ON_LOST_FOCUS,"inputtMask") window!.addStaticText(508,855,120,60,25,"Minimum:",$8000$) inputtMinimum! = window!.addInputT(509,920,120,100,25) inputtMinimum!.setValue(inputt!.getMinimumTime()) inputtMinimum!.setCallback(sysgui!.ON_LOST_FOCUS,"inputTMinimum") window!.addStaticText(510,855,150,60,25,"Maximum:",$8000$) inputtMaximum! = window!.addInputT(511,920,150,100,25) inputtMaximum!.setValue(inputt!.getMaximumTime()) inputtMaximum!.setCallback(sysgui!.ON_LOST_FOCUS,"inputTMaximum") inputtHour! = window!.addRadioButton(513,855,180,45,25,"h",$0020$) inputtHour!.setCallback(sysgui!.ON_CHECK_ON,"inputtHours") inputtHour!.setToolTipText("Spin hours") inputtMinute! = window!.addRadioButton(514,900,180,45,25,"m",$0024$) inputtMinute!.setCallback(sysgui!.ON_CHECK_ON,"inputtMinutes") inputtMinute!.setToolTipText("Spin minutes") inputtSecond! = window!.addRadioButton(515,945,180,45,25,"s",$0020$) inputtSecond!.setCallback(sysgui!.ON_CHECK_ON,"inputtSeconds") inputtSecond!.setToolTipText("Spin seconds") inputtMillisecond! = window!.addRadioButton(516,990,180,45,25,"t",$0020$) inputtMillisecond!.setCallback(sysgui!.ON_CHECK_ON,"inputtMilliseconds") inputtMillisecond!.setToolTipText("Spin milliseconds") vector! = bbjapi().makeVector() vector!.add(inputtHour!) vector!.add(inputtMinute!) vector!.add(inputtSecond!) vector!.add(inputtMillisecond!) radioGroup! = window!.addRadioGroup(vector!) rem ' Other stuff enabled! = window!.addCheckBox(601,10,230,100,25,"Enabled",$0004$) enabled!.setCallback(enabled!.ON_CHECK_ON,"enabled") enabled!.setCallback(enabled!.ON_CHECK_OFF,"enabled") editable! = window!.addCheckBox(602,110,230,100,25,"Editable",$0004$) editable!.setCallback(editable!.ON_CHECK_ON,"editable") editable!.setCallback(editable!.ON_CHECK_OFF,"editable") statusbar! = window!.addStatusBar(99,$$) statusbar!.setText("Spin events go here") dim event$:tmpl(sysgui) process_events event: event! = sysgui!.getLastEvent() control! = event!.getControl() print control!," ",event! System.err.println(event!.getEventName()) return eoj: release enabled: enabled = enabled!.isSelected() if inputn!<>null() then inputn!.setEnabled(enabled) if inputd!<>null() then inputd!.setEnabled(enabled) if inputt!<>null() then inputt!.setEnabled(enabled) if inpute!<>null() then inpute!.setEnabled(enabled) if editbox!<>null() then editbox!.setEnabled(enabled) return editable: editable = editable!.isSelected() if inputn!<>null() then inputn!.setEditable(editable) if inputd!<>null() then inputd!.setEditable(editable) if inputt!<>null() then inputt!.setEditable(editable) if inpute!<>null() then inpute!.setEditable(editable) if editbox!<>null() then editbox!.setEditable(editable) return spin: event! = sysgui!.getLastEvent() if debug then event$ = sysgui!.getLastEventString() e$ = event!.toString(), e$ = e$(1,pos("@"=e$)-1) c$ = event!.getControl().toString(), c$ = c$(1,pos("@"=c$)-1) print e$," code=",event.code$," context=",str(event.context)," id=",str(event.id)," flags=",str(event.flags)," x=",str(event.x)," y=",str(event.y)," text=",event!.getText(), if event.id=303 or event.id=403 then print " #",list!.indexOf(event!.getText()), print "" endif statusbar!.setText("Spin on "+c$+": "+event!.getText()) endif gosub event return rem ---------- BBjInputNSpinner ---------- inputnSpinUp: inputn!.spin(1) return inputnSpinDown: inputn!.spin(0) return inputnMask: inputn!.setMask(inputnMask!.getText()) if debug then print "BBjInputNSpinner.setMask ",inputn!.getMask() return inputnMinimum: min!=inputnMinimum!.getText().trim(),min=0,min=num(min!,err=*next) inputn!.setMinimum(iff(min!.length()=0,null(),min)) if debug then print "BBjInputNSpinner.setMinimum ",inputn!.getMinimum() return inputnMaximum: max!=inputnMaximum!.getText().trim(),max=0,max=num(max!,err=*next) inputn!.setMaximum(iff(max!.length()=0,null(),max)) if debug then print "BBjInputNSpinner.setMaximum ",inputn!.getMaximum() return inputnStep: step!=inputnStep!.getText().trim(),step=0,step=num(step!,err=*next) inputn!.setStepSize(iff(step!.length()=0,null(),step)) if debug then print "BBjInputNSpinner.setStepSize ",inputn!.getStepSize() return rem ---------- BBjInputDSpinner ---------- inputdSpinUp: inputd!.spin(1) return inputdSpinDown: inputd!.spin(0) return inputdMask: inputd!.setMask(inputdMask!.getText()) inputdMinimum!.setMask(inputdMask!.getText()) inputdMaximum!.setMask(inputdMask!.getText()) if debug then print "BBjInputDSpinner.setMask ",inputd!.getMask() return inputdMinimum: inputd!.setMinimumDate(inputdMinimum!.getValue()) if debug then print "BBjInputDSpinner.setMinimumDate ",inputd!.getMinimumDate() return inputdMaximum: inputd!.setMaximumDate(inputdMaximum!.getValue()) if debug then print "BBjInputDSpinner.setMaximumDate ",inputd!.getMaximumDate() return inputdDay: inputd!.setSpinField(inputd!.DAY) if debug then print "BBjInputDSpinner.setSpinField DAY",inputd!.getSpinField() return inputdWeek: inputd!.setSpinField(inputd!.WEEK) if debug then print "BBjInputDSpinner.setSpinField WEEK",inputd!.getSpinField() return inputdMonth: inputd!.setSpinField(inputd!.MONTH) if debug then print "BBjInputDSpinner.setSpinField MONTH",inputd!.getSpinField() return inputdYear: inputd!.setSpinField(inputd!.YEAR) if debug then print "BBjInputDSpinner.setSpinField YEAR",inputd!.getSpinField() return rem ---------- BBjInputESpinner ---------- inputeSpinUp: inpute!.spin(1) return inputeSpinDown: inpute!.spin(0) return inputeMask: inpute!.setMask(inputeMask!.getText()) if debug then print "BBjInputESpinner.setMask ",inpute!.getMask() return inputeList: list! = java.util.Arrays.asList(inputelist!.getText().split($0a$)) vector! = bbjapi().makeVector() if list!.size() then for i=0 to list!.size()-1 vector!.add(list!.get(i)) next i endif inpute!.setSpinList(vector!) return rem ---------- BBjEditBoxSpinner ---------- editboxSpinUp: editbox!.spin(1) return editboxSpinDown: editbox!.spin(0) return editboxList: list! = java.util.Arrays.asList(editboxlist!.getText().split($0a$)) vector! = bbjapi().makeVector() if list!.size() then for i=0 to list!.size()-1 vector!.add(list!.get(i)) next i endif editbox!.setSpinList(vector!) return rem ---------- BBjInputTSpinner ---------- inputtSpinUp: inputt!.spin(1) return inputtSpinDown: inputt!.spin(0) return inputtMask: inputt!.setMask(inputtMask!.getText()) inputtMinimum!.setMask(inputtMask!.getText()) inputtMaximum!.setMask(inputtMask!.getText()) if debug then print "BBjInputTSpinner.setMask ",inputt!.getMask() return inputtMinimum: inputt!.setMinimumTime(inputtMinimum!.getValue()) if debug then print "BBjInputTSpinner.setMinimumTime ",inputt!.getMinimumTime() return inputtMaximum: inputt!.setMaximumTime(inputtMaximum!.getValue()) if debug then print "BBjInputTSpinner.setMaximumTime ",inputt!.getMaximumTime() return inputtHours24: inputt!.setSpinField(inputt!.HOUR_OF_DAY) if debug then print "BBjInputTSpinner.setSpinField HOUR_OF_DAY",inputt!.getSpinField() return inputtHours: inputt!.setSpinField(inputt!.HOUR) if debug then print "BBjInputTSpinner.setSpinField HOUR",inputt!.getSpinField() return inputtMinutes: inputt!.setSpinField(inputt!.MINUTE) if debug then print "BBjInputTSpinner.setSpinField MINUTE",inputt!.getSpinField() return inputtSeconds: inputt!.setSpinField(inputt!.SECOND) if debug then print "BBjInputTSpinner.setSpinField SECOND",inputt!.getSpinField() return inputtMilliseconds: inputt!.setSpinField(inputt!.MILLISECOND) if debug then print "BBjInputTSpinner.setSpinField MILLISECOND",inputt!.getSpinField() return rem ---------- List data ---------- data "Afghanistan" data "Aland Islands" data "Albania" data "Algeria" data "American Samoa" data "Andorra" data "Angola" data "Anguilla" data "Antigua and Barbuda" data "Argentina" data "Armenia" data "Aruba" data "Australia" data "Austria" data "Azerbaijan" data "Bahamas" data "Bahrain" data "Bangladesh" data "Barbados" data "Belarus" data "Belgium" data "Belize" data "Benin" data "Bermuda" data "Bhutan" data "Bolivia" data "Bosnia and Herzegovina" data "Botswana" data "Bouvet Island" data "Brazil" data "British Indian Ocean Territory" data "Brunei Darussalam" data "Bulgaria" data "Burkina Faso" data "Burundi" data "Cambodia" data "Cameroon" data "Canada" data "Cape Verde" data "Cayman Islands" data "Central African Republic" data "Chad" data "Chile" data "China" data "Christmas Island" data "Cocos (Keeling) Islands" data "Colombia" data "Comoros" data "Congo" data "Congo, The Democratic Republic of the" data "Cook Islands" data "Costa Rica" data "Cote d'Ivoire" data "Croatia" data "Cuba" data "Cyprus" data "Czech Republic" data "Denmark" data "Djibouti" data "Dominica" data "Dominican Republic" data "Ecuador" data "Egypt" data "El Salvador" data "Equatorial Guinea" data "Eritrea" data "Estonia" data "Ethiopia" data "Europe" data "Falkland Islands (Malvinas)" data "Faroe Islands" data "Fiji" data "Finland" data "France" data "French Guiana" data "French Polynesia" data "French Southern Territories" data "Gabon" data "Gambia" data "Georgia" data "Germany" data "Ghana" data "Gibraltar" data "Greece" data "Greenland" data "Grenada" data "Guadeloupe" data "Guam" data "Guatemala" data "Guernsey" data "Guinea" data "Guinea-Bissau" data "Guyana" data "Haiti" data "Heard Island and McDonald Islands" data "Holy See (Vatican City State)" data "Honduras" data "Hong Kong" data "Hungary" data "Iceland" data "India" data "Indonesia" data "Iran, Islamic Republic of" data "Iraq" data "Ireland" data "Isle of Man" data "Israel" data "Italy" data "Jamaica" data "Japan" data "Jersey" data "Jordan" data "Kazakhstan" data "Kenya" data "Kiribati" data "Korea, Democratic People's Republic of" data "Korea, Republic of" data "Kuwait" data "Kyrgyzstan" data "Lao People's Democratic Republic" data "Latvia" data "Lebanon" data "Lesotho" data "Liberia" data "Libyan Arab Jamahiriya" data "Liechtenstein" data "Lithuania" data "Luxembourg" data "Macao" data "Macedonia" data "Madagascar" data "Malawi" data "Malaysia" data "Maldives" data "Mali" data "Malta" data "Marshall Islands" data "Martinique" data "Mauritania" data "Mauritius" data "Mayotte" data "Mexico" data "Micronesia, Federated States of" data "Moldova, Republic of" data "Monaco" data "Mongolia" data "Montenegro" data "Montserrat" data "Morocco" data "Mozambique" data "Myanmar" data "Namibia" data "Nauru" data "Nepal" data "Netherlands" data "Netherlands Antilles" data "New Caledonia" data "New Zealand" data "Nicaragua" data "Niger" data "Nigeria" data "Niue" data "Norfolk Island" data "Northern Mariana Islands" data "Norway" data "Oman" data "Pakistan" data "Palau" data "Palestinian Territory" data "Panama" data "Papua New Guinea" data "Paraguay" data "Peru" data "Philippines" data "Pitcairn" data "Poland" data "Portugal" data "Puerto Rico" data "Qatar" data "Reunion" data "Romania" data "Russian Federation" data "Rwanda" data "Saint Helena" data "Saint Kitts and Nevis" data "Saint Lucia" data "Saint Pierre and Miquelon" data "Saint Vincent and the Grenadines" data "Samoa" data "San Marino" data "Sao Tome and Principe" data "Saudi Arabia" data "Senegal" data "Serbia" data "Seychelles" data "Sierra Leone" data "Singapore" data "Slovakia" data "Slovenia" data "Solomon Islands" data "Somalia" data "South Africa" data "South Georgia and the South Sandwich Islands" data "Spain" data "Sri Lanka" data "Sudan" data "Suriname" data "Svalbard and Jan Mayen" data "Swaziland" data "Sweden" data "Switzerland" data "Syrian Arab Republic" data "Taiwan" data "Tajikistan" data "Tanzania, United Republic of" data "Thailand" data "Timor-Leste" data "Togo" data "Tokelau" data "Tonga" data "Trinidad and Tobago" data "Tunisia" data "Turkey" data "Turkmenistan" data "Turks and Caicos Islands" data "Tuvalu" data "Uganda" data "Ukraine" data "United Arab Emirates" data "United Kingdom" data "United States" data "United States Minor Outlying Islands" data "Uruguay" data "Uzbekistan" data "Vanuatu" data "Venezuela" data "Vietnam" data "Virgin Islands, British" data "Virgin Islands, U.S." data "Wallis and Futuna" data "Western Sahara" data "Yemen" data "Zambia" data "Zimbabwe"