|
What this is
Other links
The source code/* * Sun Public License Notice * * The contents of this file are subject to the Sun Public License * Version 1.0 (the "License"). You may not use this file except in * compliance with the License. A copy of the License is available at * http://www.sun.com/ * * The Original Code is NetBeans. The Initial Developer of the Original * Code is Sun Microsystems, Inc. Portions Copyright 1997-2000 Sun * Microsystems, Inc. All Rights Reserved. */ package org.netbeans.editor; import java.awt.Color; import java.awt.Font; import java.util.Map; import java.util.List; import java.util.Iterator; import java.util.HashMap; import java.util.HashSet; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.beans.PropertyChangeListener; import java.beans.PropertyChangeEvent; import javax.swing.text.JTextComponent; /** * Utility methods for managing settings * * @author Miloslav Metelka * @version 1.00 */ public class SettingsUtil { public static final String TOKEN_COLORING_INITIALIZER_NAME_SUFFIX = "token-coloring-initializer"; // NOI18N public static final PrintColoringEvaluator defaultPrintColoringEvaluator = new PrintColoringEvaluator(); private static final float defaultPrintFontSize = 10; /** Get either the cloned list or new list if the old * one was null. * @param l list to check * @return the cloned list if it was non-null or the new list */ public static List getClonedList(List l) { return (l != null) ? new ArrayList(l) : new ArrayList(); } public static List getClonedList(Class kitClass, String settingName) { return getClonedList((List)Settings.getValue(kitClass, settingName)); } /** Useful for initializers */ public static List getClonedList(Map settingsMap, String settingName) { if (settingsMap != null) { return getClonedList((List)settingsMap.get(settingName)); } else { return null; } } public static Map getClonedMap(Map m) { return (m != null) ? new HashMap(m) : new HashMap(); } public static Map getClonedMap(Class kitClass, String settingName) { return getClonedMap((Map)Settings.getValue(kitClass, settingName)); } /** Useful for initializers */ public static Map getClonedMap(Map settingsMap, String settingName) { if (settingsMap != null) { return getClonedMap((Map)settingsMap.get(settingName)); } else { return null; } } public static Object getValue(Class kitClass, String settingName, Object defaultValue) { Object value = Settings.getValue(kitClass, settingName); return (value != null) ? value : defaultValue; } public static int getInteger(Class kitClass, String settingName, int defaultValue) { Object value = Settings.getValue(kitClass, settingName); return (value instanceof Integer) ? ((Integer)value).intValue() : defaultValue; } public static int getInteger(Class kitClass, String settingName, Integer defaultValue) { return getInteger(kitClass, settingName, defaultValue.intValue()); } public static int getPositiveInteger(Class kitClass, String settingName, int defaultValue) { int ret = getInteger(kitClass, settingName, defaultValue); if (ret <= 0) { ret = defaultValue; } return ret; } public static int getPositiveInteger(Class kitClass, String settingName, Integer defaultValue) { return getPositiveInteger(kitClass, settingName, defaultValue.intValue()); } public static int getNonNegativeInteger(Class kitClass, String settingName, int defaultValue) { int ret = getInteger(kitClass, settingName, defaultValue); if (ret < 0) { ret = defaultValue; } return ret; } public static int getNonNegativeInteger(Class kitClass, String settingName, Integer defaultValue) { return getNonNegativeInteger(kitClass, settingName, defaultValue.intValue()); } public static boolean getBoolean(Class kitClass, String settingName, boolean defaultValue) { Object value = Settings.getValue(kitClass, settingName); return (value instanceof Boolean) ? ((Boolean)value).booleanValue() : defaultValue; } public static boolean getBoolean(Class kitClass, String settingName, Boolean defaultValue) { return getBoolean(kitClass, settingName, defaultValue.booleanValue()); } public static String getString(Class kitClass, String settingName, String defaultValue) { Object value = Settings.getValue(kitClass, settingName); return (value instanceof String) ? (String)value : defaultValue; } public static Acceptor getAcceptor(Class kitClass, String settingName, Acceptor defaultValue) { Object value = Settings.getValue(kitClass, settingName); return (value instanceof Acceptor) ? (Acceptor)value : defaultValue; } public static List getList(Class kitClass, String settingName, List defaultValue) { Object value = Settings.getValue(kitClass, settingName); return (value instanceof List) ? (List)value : defaultValue; } public static List getCumulativeList(Class kitClass, String settingName, List defaultValue) { Settings.KitAndValue[] kva = Settings.getValueHierarchy(kitClass, settingName); if (kva != null && kva.length > 0) { List l = new ArrayList(); for (int i = 0; i < kva.length; i++) { if (kva[i].value instanceof List) { l.addAll((List)kva[i].value); } } return l; } else { return defaultValue; } } public static Map getMap(Class kitClass, String settingName, Map defaultValue) { Object value = Settings.getValue(kitClass, settingName); return (value instanceof Map) ? (Map)value : defaultValue; } public static void updateListSetting(Class kitClass, String settingName, Object[] addToList) { if (addToList != null && addToList.length > 0) { List l = getClonedList(kitClass, settingName); l.addAll(Arrays.asList(addToList)); Settings.setValue(kitClass, settingName, l); } } public static void updateListSetting(Map settingsMap, String settingName, Object[] addToList) { if (settingsMap != null && addToList != null && addToList.length > 0) { List l = getClonedList(settingsMap, settingName); l.addAll(Arrays.asList(addToList)); settingsMap.put(settingName, l); } } private static String getColoringSettingName(String coloringName, boolean printingSet) { return (coloringName + (printingSet ? SettingsNames.COLORING_NAME_PRINT_SUFFIX : SettingsNames.COLORING_NAME_SUFFIX) ).intern(); } public static Coloring getColoring(Class kitClass, String coloringName, boolean printingSet) { return (Coloring)getColoring(kitClass, coloringName, printingSet, true); } public static Object getColoring(Class kitClass, String coloringName, boolean printingSet, boolean evaluateEvaluators) { return Settings.getValue(kitClass, getColoringSettingName(coloringName, printingSet), evaluateEvaluators ); } public static Coloring getTokenColoring(TokenContextPath tcp, TokenCategory tokenIDOrCategory, boolean printingSet) { return (Coloring)getTokenColoring(tcp, tokenIDOrCategory, printingSet, true); } public static Object getTokenColoring(TokenContextPath tcp, TokenCategory tokenIDOrCategory, boolean printingSet, boolean evaluateEvaluators) { return getColoring(BaseKit.class, tcp.getFullTokenName(tokenIDOrCategory), printingSet, evaluateEvaluators); } /** Get the coloring setting from the map that holds the settings values * for the particular kit. * @param settingsMap map that holds the [setting-name, setting-value] pairs * for some kit-class. * @param coloringName name of the coloring to retrieve * @param printingSet retrieve the value of printing coloring * instead of component coloring. */ public static Object getColoring(Map settingsMap, String coloringName, boolean printingSet) { return settingsMap.get(getColoringSettingName(coloringName, printingSet)); } public static void setColoring(Class kitClass, String coloringName, Object newValue, boolean printingSet) { Settings.setValue(kitClass, getColoringSettingName(coloringName, printingSet), newValue); } public static void setColoring(Class kitClass, String coloringName, Object componentColoringNewValue) { setColoring(kitClass, coloringName, componentColoringNewValue, false); setColoring(kitClass, coloringName, defaultPrintColoringEvaluator, true); } public static void setColoring(Class kitClass, String coloringName, Object componentColoringNewValue, Object printColoringNewValue) { setColoring(kitClass, coloringName, componentColoringNewValue, false); setColoring(kitClass, coloringName, printColoringNewValue, true); } /** Put the coloring into a map holding the settings for the particular kit. * */ public static void setColoring(Map settingsMap, String coloringName, Object newValue, boolean printingSet) { settingsMap.put(getColoringSettingName(coloringName, printingSet), newValue); } /** Put the coloring into a map holding the settings for the particular kit and assign * a default print coloring Evaluator to the print coloring setting. */ public static void setColoring(Map settingsMap, String coloringName, Object componentColoringNewValue) { setColoring(settingsMap, coloringName, componentColoringNewValue, false); setColoring(settingsMap, coloringName, defaultPrintColoringEvaluator, true); } public static void setColoring(Map settingsMap, String coloringName, Object componentColoringNewValue, Object printColoringNewValue) { setColoring(settingsMap, coloringName, componentColoringNewValue, false); setColoring(settingsMap, coloringName, printColoringNewValue, true); } /** Get the map holding [coloring-name, coloring-value] pairs for all the colorings * defined for the given kit. The SettingsNames.COLORING_NAME_LIST setting * is used to the coloring names that will apear in the map. * @param kitClass kit class for which the colorings are retrieved from the settings. * @param printingSet retrieve the printing colorings instead of component colorings. * @param evaluateEvaluators evaluate all the Settings.Evaluator instances or not. */ public static Map getColoringMap(Class kitClass, boolean printingSet, boolean evaluateEvaluators) { HashMap coloringMap = new HashMap(); List nameList = getCumulativeList(kitClass, SettingsNames.COLORING_NAME_LIST, null); // First take the name of the colorings if (nameList != null) { for (int i = nameList.size() - 1; i >= 0; i--) { String name = (String)nameList.get(i); Object coloring = getColoring(kitClass, name, printingSet, evaluateEvaluators); if (coloring != null) { coloringMap.put(name, coloring); } } } // Add the colorings from syntaxes List tokenContextList = getList(kitClass, SettingsNames.TOKEN_CONTEXT_LIST, null); if (tokenContextList != null) { for (int i = tokenContextList.size() - 1; i >= 0; i--) { TokenContext tc = (TokenContext)tokenContextList.get(i); TokenContextPath[] allPaths = tc.getAllContextPaths(); for (int j = 0; j < allPaths.length; j++) { TokenContext firstContext = allPaths[j].getContexts()[0]; // Add token-categories colorings TokenCategory[] tokenCategories = firstContext.getTokenCategories(); for (int k = 0; k < tokenCategories.length; k++) { Object coloring = getTokenColoring(allPaths[j], tokenCategories[k], printingSet, evaluateEvaluators); if (coloring != null) { String fullName = allPaths[j].getFullTokenName(tokenCategories[k]); coloringMap.put(fullName, coloring); } } // Add token-ids colorings TokenID[] tokenIDs = firstContext.getTokenIDs(); for (int k = 0; k < tokenIDs.length; k++) { Object coloring = getTokenColoring(allPaths[j], tokenIDs[k], printingSet, evaluateEvaluators); if (coloring != null) { String fullName = allPaths[j].getFullTokenName(tokenIDs[k]); coloringMap.put(fullName, coloring); } } } } } return coloringMap; } /** Update the settings according to the changes provided in the coloringMap. * @param kitClass class of the kit for which the colorings are being updated. * Only the colorings with the names contained in |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.