blob: 196bcb2565d350117cfd5174e7f1f8351c9ce6ea [file] [log] [blame]
/*
* weinre is available under *either* the terms of the modified BSD license *or* the
* MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
*
* Copyright (c) 2010, 2011 IBM Corporation
*/
package com.phonegap.weinre.application;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Properties;
import org.apache.wink.json4j.JSONException;
import org.apache.wink.json4j.JSONObject;
import org.eclipse.swt.widgets.Shell;
import com.phonegap.weinre.server.Main;
/**
*
*/
public class GUIPreferences {
private Properties properties;
private String fileName;
/**
*
*/
public GUIPreferences() {
super();
properties = new Properties();
fileName = null;
String userHome = System.getProperty("user.home");
if (null == userHome) {
Main.warn("System property user.home not set!");
return;
}
File dir = new File(userHome, ".weinre");
if (!dir.exists()) {
dir.mkdirs();
}
File file = new File(dir, "ui.properties");
fileName = file.getAbsolutePath();
if (!file.exists()) return;
loadFromFile();
}
/**
*
*/
public String getBoundsKey(Shell shell, String name) {
return "bounds-" + name + "-" + ShellSizeTracker.getMonitorSetupKey(shell.getDisplay());
}
/**
*
*/
public void loadFromFile() {
properties.clear();
try {
properties.load(new FileReader(fileName));
}
catch (IOException e) {
Main.warn("IOException reading '" + fileName + "': " + e);
}
}
/**
*
*/
public void saveToFile() {
if (null == fileName) return;
try {
properties.store(new FileWriter(fileName), "ui settings");
}
catch (IOException e) {
Main.warn("IOException writing '" + fileName + "': " + e);
}
}
/**
*
*/
public String getPreference(String key) {
if (null == properties) loadFromFile();
return properties.getProperty(key);
}
/**
*
*/
public JSONObject getPreferenceFromJSON(String key) throws IOException {
String val = getPreference(key);
if (null == val) return null;
try {
return new JSONObject(val);
} catch (JSONException e) {
throw new RuntimeException(e);
}
}
/**
*
*/
public void setPreference(String key, String val) {
properties.setProperty(key, val);
}
/**
*
*/
public void setPreference(String key, JSONObject json) throws IOException {
String val = json.toString();
properties.setProperty(key, val);
}
}