📄 mypreferencemanager.java
字号:
if (prefSetInstance != null && prefSetInstance instanceof DefaultPreferenceSet) { ((DefaultPreferenceSet) prefSetInstance).setErrorMessage(errorMessage.toString()); } // xxx: todo: set status message here } } } return prefSetInstance; } public PreferenceSet getPreferenceSet(String categoryName, String preferenceSetName) { String path = buildPath(categoryName, preferenceSetName); return getPreferenceSet(path); } private PreferenceSet getPreferenceSet(String path) { return this.prefSetTable.get(path);//getClass attr// String className = getAttribute(path, ATTRIBUTE_CLASS); // PreferenceSet prefSet = instantiatePreferenceSet(className); //inject root path // prefSet.setRootPath(path); // return prefSet; } public PreferenceSet getPluginPreferenceSet(String pluginPrefSetName) { return getPreferenceSet(buildPath(CATEGORY_PLUGINS, pluginPrefSetName)); } public String toString() { return res.toString(); } public void setPreference(String path, String value) { path = addLeadingSlash(path); res.set(path, value); } public String getPreference(String name) { name = addLeadingSlash(name); return res.get(name); } public String getAttribute(String prefName, String attr) { String rtn; prefName = addLeadingSlash(prefName); if (attr.startsWith("@")) { rtn = prefName + SEP + attr; } else { rtn = prefName + SEP + "@" + attr; } return res.get(rtn); } private String addLeadingSlash(String prefName) { if (!prefName.startsWith("/")) prefName = "/" + prefName; return prefName; } public List getAttributes(String name, String attr) { return getPreferences(name, attr); } public List getPreferences(String name, String attr) { String rtn = name; name = addLeadingSlash(name); if (attr != null) { if (attr.startsWith("@")) { rtn = name + SEP + attr; } else { rtn = name + SEP + "@" + attr; } } return res.getAll(rtn); } public void shutdown() { save(); } public void save() { Env.savePreferences(res.toString()); } /** * Creates a new instance of MyPreferenceManager */ private MyPreferenceManager() { PREFSET_LEGACY = buildPath(CATEGORY_GENERAL, PREFERENCESET_LEGACY); LOG.setLevel(Level.FINE); try { res = new Resource(MyPreferenceManager.ROOT); try { //res.load(new URL("file:///home/polo/dev/prefs.xml")); res.load(Env.getPreferences()); } catch (ResourceNotFoundException ex) { ex.printStackTrace(); } } catch (Exception x) { x.printStackTrace(); } prefSetTable = new LinkedHashMap<String, PreferenceSet>(); } public void init() { scanCategoryList(); // initializes the preferencsets } protected List<String> getCategorys() { if (categoryList == null) { categoryList = new ArrayList<String>(); scanCategoryList(); } return categoryList; } private void scanCategoryList() { if (categoryList == null) { categoryList = new ArrayList<String>(); } List l = getAttributes(ROOT + SEP + PREFERENCES + SEP + CATEGORY, ATTRIBUTE_NAME); for (Object aL : l) { String categoryPath = buildPath((String) aL); if (!categoryList.contains(categoryPath)) { categoryList.add(categoryPath); setupPreferenceSets(categoryPath); } } for (String category : categoryList) { if (Logging.SHOW_FINE && LOG.isLoggable(Level.FINE)) { LOG.fine("category " + category); } } for (String prefSet : prefSetTable.keySet()) { if (Logging.SHOW_FINE && LOG.isLoggable(Level.FINE)) { LOG.fine("prefset " + prefSet); } } } protected HashMap<String, PreferenceSet> getPreferenceSets() { return prefSetTable; } public Hashtable<String, PreferenceSet> getPreferenceSets(String categoryPath) { Hashtable<String, PreferenceSet> table = new Hashtable<String, PreferenceSet>(); for (Iterator<String> i = prefSetTable.keySet().iterator(); i != null && i.hasNext();) { String path = i.next(); if (path.startsWith(categoryPath)) { table.put(path, prefSetTable.get(path)); } } return table; } private void setupPreferenceSets(String categoryPath) { String pathToPreferenceSet = categoryPath + SEP + PREFERENCE_SET; List l = getAttributes(pathToPreferenceSet, ATTRIBUTE_NAME); Iterator itr = l.iterator(); String categoryName = getAttribute(categoryPath, ATTRIBUTE_NAME); while (itr.hasNext()) { String prefSetPath = buildPath(categoryName, (String) itr.next()); if (Boolean.valueOf(getAttribute(prefSetPath, ATTRIBUTE_ENABLE))) { if (!prefSetTable.containsKey(prefSetPath)) { //if its not already in the list String prefSetClassName = getAttribute(prefSetPath, ATTRIBUTE_CLASS); PreferenceSet prefSet = instantiatePreferenceSet(prefSetClassName); prefSet.setRootPath(prefSetPath); prefSet.init(); prefSetTable.put(prefSetPath, prefSet); } } } } public static Dimension stringToDimension(String s) { int w = 0; int h = 0; Dimension rtn = null; if (s != null) { String[] tmp = s.split("x"); if (tmp.length == 2) { try { w = Integer.valueOf(tmp[0].trim()); h = Integer.valueOf(tmp[1].trim()); } catch (NumberFormatException nfx) { nfx.printStackTrace(); } } rtn = new Dimension(w, h); } return rtn; } public static String dimensionToString(Dimension d) { return (d != null) ? String.valueOf(String.valueOf((int) d.getWidth()) + " x " + String.valueOf((int) d.getHeight())) : null; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -