package com.github.lindenb.jvarkit.util.swing; import java.io.File; import java.util.prefs.Preferences; public class PreferredDirectory { private static final String PREFKEY="jvarkit.util.swing.preferred.directory"; private PreferredDirectory() { } public static File get() { return get(PreferredDirectory.class); } public static File get(Class<?> clazz) { return get(PREFKEY,clazz); } public static File get(final String key,final Class<?> clazz) { try { Preferences prefs = Preferences.userNodeForPackage(clazz); final String dirS = prefs.get(key, null); if(dirS==null || dirS.trim().isEmpty()) return null; return new File(dirS); } catch (Exception e) { return null; } } public static void update(final File f) { update(PreferredDirectory.class,f); } public static void update(final Class<?> clazz,final File f) { update(PREFKEY,PreferredDirectory.class,f); } public static void update(final String key,final Class<?> clazz,final File f) { if(f!=null && f.isFile()) { update(key,clazz,f.getParentFile()); return; } if(f!=null && !f.isDirectory()) return; try { Preferences prefs = Preferences.userNodeForPackage(clazz); if(prefs==null) return; if(f==null || f.getPath().trim().isEmpty()) { prefs.remove(key); } else { prefs.put(key, f.getPath()); } prefs.sync(); prefs.flush(); } catch(Exception err) { } } }