www.pudn.com > GMapViewer-src.zip > PrefsEditor.java
package org.sreid.j2me.gmapviewer;
import java.util.*;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
import org.sreid.j2me.util.*;
public class PrefsEditor extends Form implements CommandListener {
private final GMapViewer app;
private final TextField gatewayURL;
private final TextField gatewayAuth;
private final TextField searchTerms;
private final TextField memCacheSize;
private final TextField rmsCacheSize;
private final TextField rmsSpaceReserved;
private final TextField downloadThreads;
private final TextField moveSpeed1;
private final TextField moveSpeed2;
private final TextField moveSpeedTimeout;
private final TextField mapPinTextRadius;
private final TextField callGC;
PrefsEditor(GMapViewer app) {
super("Preferences");
this.app = app;
setCommandListener(this);
addCommand(new Command("OK", Command.OK, 1));
addCommand(new Command("Cancel", Command.CANCEL, 2));
// Defaults here don't matter, but must fit constraints. Real defaults are in loadPrefs.
append(gatewayURL = new TextField("Gateway URL", "", 200, TextField.URL));
append(gatewayAuth = new TextField("Gateway login code", "", 200, TextField.PASSWORD));
append(searchTerms = new TextField("City name (for searches)", "", 200, TextField.ANY));
append(mapPinTextRadius = new TextField("Map pin text visibility radius", "1", 8, TextField.NUMERIC));
append(moveSpeed1 = new TextField("Movement speed slow", "1", 2, TextField.NUMERIC));
append(moveSpeed2 = new TextField("Movement speed fast", "1", 2, TextField.NUMERIC));
append(moveSpeedTimeout = new TextField("Move fast timeout (ms)", "1", 4, TextField.NUMERIC));
append(memCacheSize = new TextField("Memory cache size KB", "1", 5, TextField.NUMERIC));
append(rmsCacheSize = new TextField("RMS cache size KB", "1", 5, TextField.NUMERIC));
append(rmsSpaceReserved = new TextField("RMS reserved space KB", "1", 5, TextField.NUMERIC));
append(downloadThreads = new TextField("Downloads threads (requires restart)", "1", 1, TextField.NUMERIC));
append(callGC = new TextField("Invoke System.gc()? (0-3):", "1", 1, TextField.NUMERIC));
loadPrefs();
}
private void loadPrefs() {
gatewayURL.setString(app.prefs.getString("gatewayURL", "http://"));
gatewayAuth.setString(app.prefs.getString("gatewayAuth", ""));
searchTerms.setString(app.prefs.getString("searchTerms", ""));
mapPinTextRadius.setString(app.prefs.getString("mapPinTextRadius", "400"));
moveSpeed1.setString(app.prefs.getString("moveSpeed1", "5"));
moveSpeed2.setString(app.prefs.getString("moveSpeed2", "16"));
moveSpeedTimeout.setString(app.prefs.getString("moveSpeedTimeout", "800"));
memCacheSize.setString(app.prefs.getString("memCacheSize", "100"));
rmsCacheSize.setString(app.prefs.getString("rmsCacheSize", "2000"));
rmsSpaceReserved.setString(app.prefs.getString("rmsSpaceReserved", "100"));
downloadThreads.setString(app.prefs.getString("downloadThreads", "1"));
callGC.setString(app.prefs.getString("callGC", "0"));
}
private void savePrefs() {
app.prefs.put("gatewayURL", gatewayURL.getString());
app.prefs.put("gatewayAuth", gatewayAuth.getString());
app.prefs.put("searchTerms", searchTerms.getString());
app.prefs.put("mapPinTextRadius", mapPinTextRadius.getString());
app.prefs.put("moveSpeed1", moveSpeed1.getString());
app.prefs.put("moveSpeed2", moveSpeed2.getString());
app.prefs.put("moveSpeedTimeout", moveSpeedTimeout.getString());
app.prefs.put("memCacheSize", memCacheSize.getString());
app.prefs.put("rmsCacheSize", rmsCacheSize.getString());
app.prefs.put("rmsSpaceReserved", rmsSpaceReserved.getString());
app.prefs.put("downloadThreads", downloadThreads.getString());
app.prefs.put("callGC", callGC.getString());
app.prefs.savePreferences();
}
public void commandAction(Command c, Displayable d) {
switch (c.getCommandType()) {
case Command.OK:
savePrefs();
app.display.setCurrent(app.mainMenu);
break;
case Command.CANCEL:
loadPrefs(); // undo changes
app.display.setCurrent(app.mainMenu);
break;
default:
throw new IllegalArgumentException("Unrecognized command: " + c);
}
}
}