📄 mypreferencemanager.java
字号:
/* * MyPreferenceManager.java * * Created on December 31, 2005, 1:16 PM * * To change this template, choose Tools | Template Manager * and open the template in the editor. */package net.jxta.myjxta.util.preferences;import java.awt.Dimension;import java.util.ArrayList;import java.util.HashMap;import java.util.Hashtable;import java.util.Iterator;import java.util.LinkedHashMap;import java.util.List;import net.jxta.ext.config.Resource;import net.jxta.ext.config.ResourceNotFoundException;import net.jxta.myjxta.MyJXTA;import net.jxta.myjxta.util.Env;import org.apache.log4j.Level;import org.apache.log4j.Logger;/** * * @author polo */public class MyPreferenceManager { private Resource res = null; private static final Logger LOG = Logger.getLogger(MyPreferenceManager.class); public static final String ROOT = "myjxtaPrefs"; public static final String PREFERENCES = "preferences"; public static final String CATEGORY = "category"; public static final String PREFERENCE_SET = "preferenceSet"; public static final String PREFERENCE = "preference"; public static final String SEP = "/"; public static final String ATTRIBUTE_NAME = "@name"; public static final String ATTRIBUTE_DESCRIPTION = "@description"; public static final String ATTRIBUTE_VISIBLE = "@visible"; public static final String ATTRIBUTE_LABEL = "@label"; public static final String ATTRIBUTE_VALUE = "@value"; public static final String ATTRIBUTE_ENABLE = "@enable"; public static final String ATTRIBUTE_ICON = "@icon"; public static final String ATTRIBUTE_TOOLTIP = "@tooltip"; public static final String ATTRIBUTE_CLASS = "@class"; public static final String ATTRIBUTE_DIMENSION = "@dimension"; public static final String DEFAULT_PREFSET_CLASS_NAME = DefaultPreferenceSet.class.getName(); public static final String CATEGORY_GENERAL = "General"; public static final String CATEGORY_PLUGINS = "plugins"; public static String PREFSET_LEGACY = null; // todo set the defalt icon public static final String DEFAULT_ICON = "TreeTable.PeerPresent"; public static final String PREFERENCESET_LEGACY = "General.Legacy"; public static final String PREFERENCESET_PLUGINPATHS = "plugins.paths"; public static final String PREFERENCE_CHIME = "General.Legacy.Chime"; public static final String PREFERENCE_INSTALL = "plugins.paths.install"; private List<String> categoryList = null; private LinkedHashMap<String, PreferenceSet> prefSetTable = null; static private MyPreferenceManager myinstance = null; static public MyPreferenceManager getInstance() { if(myinstance == null) { myinstance = new MyPreferenceManager(); } return myinstance; } public MyJXTA getMyJxta() { return MyJXTA.getTheInstance(); } public static String buildPath() { return buildPath(null, null, null, null); } public static String buildPath(String categoryName) { return buildPath(categoryName, null, null, null); } public static String buildPath(String categoryName, String preferenceSetName) { return buildPath(categoryName,preferenceSetName, null, null); } public static String buildPath(String categoryName, String preferenceSetName, String preferenceName) { return buildPath(categoryName,preferenceSetName, preferenceName, null); } public static String buildPath(String categoryName, String preferenceSetName, String preferenceName, String attr) { StringBuffer rtn = new StringBuffer(ROOT); rtn.append(SEP); rtn.append(PREFERENCES); if(categoryName != null) { rtn.append(SEP); rtn.append(CATEGORY); rtn.append("["); rtn.append(ATTRIBUTE_NAME); rtn.append("=\""); rtn.append(categoryName); rtn.append("\"]"); if(preferenceSetName != null) { rtn.append(SEP); rtn.append(PREFERENCE_SET); rtn.append("["); rtn.append(ATTRIBUTE_NAME); rtn.append("=\""); rtn.append(preferenceSetName); rtn.append("\"]"); if( preferenceName != null) { rtn.append(SEP); rtn.append(PREFERENCE); rtn.append("["); rtn.append(ATTRIBUTE_NAME); rtn.append("=\""); rtn.append(preferenceName); rtn.append("\"]"); if(attr!=null) { rtn.append(SEP); rtn.append(attr); } } } } return rtn.toString(); } private Class loadClass(String className) { Class prefSetClass = null; try { prefSetClass = Class.forName(className); }catch(LinkageError le) { le.printStackTrace(); prefSetClass = null; // xxx: todo: set status message here }catch(ClassNotFoundException cnfx) { //cnfx.printStackTrace(); prefSetClass = null; // xxx: todo: set status message here } return prefSetClass; } public PreferenceSet instantiatePreferenceSet(String prefSetClassName) { Class prefSetClass = null; PreferenceSet prefSetInstance = null; StringBuffer errorMessage = new StringBuffer(); /** Load class and test for correct superclass */ prefSetClass = loadClass(prefSetClassName); if(prefSetClass == null) { prefSetClass = loadClass(DEFAULT_PREFSET_CLASS_NAME); } if(prefSetClass != null) { if (LOG.isEnabledFor(Level.DEBUG)) { LOG.debug("class.forName " + prefSetClass.getName()); } Class superClass = prefSetClass.getSuperclass(); if (LOG.isEnabledFor(Level.DEBUG)) { LOG.debug("superClass " + superClass.getName()); } // if superclass is good then instantiate PreferenceSet class if(superClass.getName().equals(PreferenceSet.class.getName())) { if (LOG.isEnabledFor(Level.DEBUG)) { LOG.debug("superClass is good" ); } try { Class customPreferenceSet = Class.forName(prefSetClass.getName()); if(PreferenceSet.class.isAssignableFrom(customPreferenceSet)) { prefSetInstance = (PreferenceSet) customPreferenceSet.newInstance(); } }catch(ClassCastException ccx) { ccx.printStackTrace(); errorMessage.append("ClassCast Error in Preference Set Class Instantiation\n\r"); errorMessage.append("Using Default Preference Set Class"); prefSetInstance = instantiatePreferenceSet(DEFAULT_PREFSET_CLASS_NAME); if(prefSetInstance != null && (prefSetInstance instanceof DefaultPreferenceSet)) { ((DefaultPreferenceSet)prefSetInstance).setErrorMessage(errorMessage.toString()); } // xxx: todo: set status message here }catch(InstantiationException ix) { ix.printStackTrace(); errorMessage.append("Instantiation Error in Preference Set Class Instantiation\n\r"); errorMessage.append("Using Default Preference Set Class"); prefSetInstance = instantiatePreferenceSet(DEFAULT_PREFSET_CLASS_NAME); if(prefSetInstance != null && prefSetInstance instanceof DefaultPreferenceSet) { ((DefaultPreferenceSet)prefSetInstance).setErrorMessage(errorMessage.toString()); } // xxx: todo: set status message here }catch(IllegalAccessException iax) { iax.printStackTrace(); errorMessage.append("IllegalAccess Error in Preference Set Class Instantiation\n\r"); errorMessage.append("Using Default Preference Set Class"); prefSetInstance = instantiatePreferenceSet(DEFAULT_PREFSET_CLASS_NAME); if(prefSetInstance != null && prefSetInstance instanceof DefaultPreferenceSet) { ((DefaultPreferenceSet)prefSetInstance).setErrorMessage(errorMessage.toString()); } // xxx: todo: set status message here }catch(LinkageError le) { le.printStackTrace(); errorMessage.append("Linkage Error in Preference Set Class Instantiation\n\r"); errorMessage.append("Using Default Preference Set Class"); prefSetInstance = instantiatePreferenceSet(DEFAULT_PREFSET_CLASS_NAME); if(prefSetInstance != null && prefSetInstance instanceof DefaultPreferenceSet) { ((DefaultPreferenceSet)prefSetInstance).setErrorMessage(errorMessage.toString()); } // xxx: todo: set status message here }catch(ClassNotFoundException cnfx) { cnfx.printStackTrace(); errorMessage.append("ClassNotFound Error in Preference Set Class Instantiation\n\r"); errorMessage.append("Using Default Preference Set Class"); prefSetInstance = instantiatePreferenceSet(DEFAULT_PREFSET_CLASS_NAME); if(prefSetInstance != null && prefSetInstance instanceof DefaultPreferenceSet) { ((DefaultPreferenceSet)prefSetInstance).setErrorMessage(errorMessage.toString()); } // xxx: todo: set status message here
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -