public static void setColorSettings(ColorSetting[] colorSettings) { fColorSettings = colorSettings; ColorSettingsXML.save(COLOR_SETTINGS_PATH_NAME, fColorSettings); fireColorSettingsChanged(); }
public class ColorSettingsManager { private static final String COLOR_SETTINGS_FILE_NAME = "color_settings.xml"; // $NON-NLS-1$ private static final String COLOR_SETTINGS_PATH_NAME = TmfUiPlugin.getDefault() .getStateLocation() .addTrailingSeparator() .append(COLOR_SETTINGS_FILE_NAME) .toString(); private static final ColorSetting DEFAULT_COLOR_SETTING = new ColorSetting( Display.getDefault().getSystemColor(SWT.COLOR_LIST_FOREGROUND).getRGB(), Display.getDefault().getSystemColor(SWT.COLOR_LIST_BACKGROUND).getRGB(), TraceColorScheme.BLACK_STATE, null); public static final int PRIORITY_NONE = Integer.MAX_VALUE; private static ColorSetting[] fColorSettings = ColorSettingsXML.load(COLOR_SETTINGS_PATH_NAME); private static ArrayList<IColorSettingsListener> fListeners = new ArrayList<IColorSettingsListener>(); public static ColorSetting[] getColorSettings() { return fColorSettings; } public static void setColorSettings(ColorSetting[] colorSettings) { fColorSettings = colorSettings; ColorSettingsXML.save(COLOR_SETTINGS_PATH_NAME, fColorSettings); fireColorSettingsChanged(); } public static ColorSetting getColorSetting(TmfEvent event) { for (int i = 0; i < fColorSettings.length; i++) { ColorSetting colorSetting = fColorSettings[i]; if (colorSetting.getFilter() != null && colorSetting.getFilter().matches(event)) { return colorSetting; } } return DEFAULT_COLOR_SETTING; } public static int getColorSettingPriority(TmfEvent event) { for (int i = 0; i < fColorSettings.length; i++) { ColorSetting colorSetting = fColorSettings[i]; if (colorSetting.getFilter() != null && colorSetting.getFilter().matches(event)) { return i; } } return PRIORITY_NONE; } public static ColorSetting getColorSetting(int priority) { if (priority < fColorSettings.length) { return fColorSettings[priority]; } return DEFAULT_COLOR_SETTING; } public static void addColorSettingsListener(IColorSettingsListener listener) { if (!fListeners.contains(listener)) { fListeners.add(listener); } } public static void removeColorSettingsListener(IColorSettingsListener listener) { fListeners.remove(listener); } private static void fireColorSettingsChanged() { for (IColorSettingsListener listener : fListeners) { listener.colorSettingsChanged(fColorSettings); } } }