001 package org.shiftone.jrat.desktop;
002
003 import org.shiftone.jrat.util.StringUtil;
004
005 import java.awt.*;
006 import java.io.File;
007 import java.util.prefs.Preferences;
008
009 /**
010 * @author jeff@shiftone.org (Jeff Drost)
011 */
012 public class DesktopPreferences {
013 private static final Preferences PREFS = Preferences.userNodeForPackage(DesktopPreferences.class);
014 private static final String RUN_COUNT = "run_count";
015 private static final String TIPS_ON_START = "show_tips_on_startup";
016 private static final String LAST_RUN_TIME = "last_run_time";
017 private static final String LAST_OPENED_FILE = "last_opened_file";
018 private static final String WINDOW_BOUNDS = "window_bounds";
019 private static final String LAST_INJECTED_FILE = "last_injected_file";
020 private static final String LAST_INJECTED_DIR = "last_injected_dir";
021
022
023 public static int getRunCount() {
024 return PREFS.getInt(RUN_COUNT, 0);
025 }
026
027 public static void setRunCount(int runCount) {
028 PREFS.putInt(RUN_COUNT, runCount);
029 }
030
031 public static void incrementRunCount() {
032 setRunCount(getRunCount() + 1);
033 }
034
035 public static boolean isShowTipsOnStartup() {
036 return PREFS.getBoolean(TIPS_ON_START, true);
037 }
038
039 public static void setShowTipsOnStartup(boolean showTipsOnStartup) {
040 PREFS.putBoolean(TIPS_ON_START, showTipsOnStartup);
041 }
042
043 public static long getLastRunTime() {
044 return PREFS.getLong(LAST_RUN_TIME, 0);
045 }
046
047 public static void setLastRunTime(long lastRunTime) {
048 PREFS.putLong(LAST_RUN_TIME, lastRunTime);
049 }
050
051 public static Rectangle getWindowBounds() {
052
053 String text = PREFS.get(WINDOW_BOUNDS, null);
054 if (text != null) {
055 String[] values = StringUtil.tokenize(text, ",", false);
056 // x, y, width, height
057 return new Rectangle(
058 Integer.parseInt(values[0]),
059 Integer.parseInt(values[1]),
060 Integer.parseInt(values[2]),
061 Integer.parseInt(values[3]));
062 }
063 return null;
064 }
065
066 public static void setWindowBounds(Rectangle bounds) {
067 PREFS.put(WINDOW_BOUNDS, bounds.x + "," + bounds.y + "," + bounds.width + "," + bounds.height);
068 }
069
070 public static File getLastOpenedFile() {
071 return getFile(LAST_OPENED_FILE);
072 }
073
074 public static void setLastOpenedFile(File file) {
075 setFile(LAST_OPENED_FILE, file);
076 }
077
078 public static File getLastInjectedFile() {
079 return getFile(LAST_INJECTED_FILE);
080 }
081
082 public static void setLastInjectedFile(File file) {
083 setFile(LAST_INJECTED_FILE, file);
084 }
085
086 public static File getLastInjectedDir() {
087 return getFile(LAST_INJECTED_DIR);
088 }
089
090 public static void setLastInjectedDir(File file) {
091 setFile(LAST_INJECTED_DIR, file);
092 }
093
094
095 private static File getFile(String key) {
096 String name = PREFS.get(key, null);
097 return name == null ? null : new File(name);
098 }
099
100 private static void setFile(String key, File value) {
101 PREFS.put(key, value == null ? null : value.getAbsolutePath());
102 }
103 }