/* Licence: williamsmobile.co.uk/licence.htm */ package mypackage; import net.rim.device.api.i18n.SimpleDateFormat; import net.rim.device.api.ui.component.LabelField; import net.rim.device.api.ui.container.MainScreen; import net.rim.device.api.ui.container.VerticalFieldManager; import net.rim.device.api.ui.MenuItem; import java.util.Date; import java.util.TimeZone; class WorldClock extends net.rim.device.api.ui.UiApplication { public static void main(String[] args) { new WorldClock().enterEventDispatcher(); } WorldClock() { pushScreen(new MyScreen()); } } class MyScreen extends MainScreen { private VerticalFieldManager manager; private boolean is24H = true; MyScreen() { setTitle("World Clock 1.0 - williamsmobile.co.uk"); addMenuItem(new MenuItem("Refresh", 0, 0) { public void run() { refresh(); } }); addMenuItem(new MenuItem("Switch Time Format", 0, 0) { public void run() { is24H = !is24H; refresh(); } }); manager = new VerticalFieldManager(VerticalFieldManager.USE_ALL_WIDTH); add(manager); refresh(); } private void refresh() { manager.deleteAll(); String[] availableIDs = TimeZone.getAvailableIDs(); sort(availableIDs); for (int i = 0; i < availableIDs.length; i++) { String id = availableIDs[i]; TimeZone timeZone = TimeZone.getTimeZone(id); Date currentTime = new Date(System.currentTimeMillis() + timeZone.getRawOffset()); SimpleDateFormat dateFormat = new SimpleDateFormat(is24H ? "EEE dd MMM HH:mm:ss" : "EEE dd MMM h:mm:ss a"); String timeString = id + ": " + dateFormat.format(currentTime) + "\n\n"; manager.add(new LabelField(timeString)); } } private void sort(String[] arr) { int n = arr.length; for (int i = 0; i < n - 1; i++) { for (int j = i + 1; j < n; j++) { if (arr[i].compareTo(arr[j]) > 0) { String temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } } } protected boolean keyChar(char key, int status, int time) { switch (key) { case 't': this.getMainManager().setVerticalScroll(0); return true; case 'b': this.getMainManager().setVerticalScroll(this.getMainManager().getVirtualHeight()); return true; default: return super.keyChar(key, status, time); } } }