/** * Copyright (c) 2014 by Brainwy Software LTDA. All Rights Reserved. * Licensed under the terms of the Eclipse Public License (EPL). * Please see the license.txt included with this distribution for details. * Any modifications to this file must keep this entire header intact. */ package org.python.pydev.editor.codefolding; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.util.IPropertyChangeListener; import org.eclipse.jface.util.PropertyChangeEvent; import org.eclipse.swt.custom.StyledText; import org.eclipse.swt.graphics.Color; import org.python.pydev.editor.preferences.PydevEditorPrefs; import org.python.pydev.plugin.PydevPlugin; import org.python.pydev.plugin.preferences.PydevPrefs; import org.python.pydev.shared_ui.ColorCache; import org.python.pydev.shared_ui.editor.IVerticalIndentGuidePreferencesProvider; public abstract class PyAbstractIndentGuidePreferencesProvider implements IVerticalIndentGuidePreferencesProvider, IPropertyChangeListener { private boolean showIndentGuide; private boolean useEditorForegroundColor; private int transparency; private IPreferenceStore chainedPrefStore; public PyAbstractIndentGuidePreferencesProvider() { chainedPrefStore = PydevPrefs.getChainedPrefStore(); showIndentGuide = chainedPrefStore.getBoolean(PydevEditorPrefs.USE_VERTICAL_INDENT_GUIDE); useEditorForegroundColor = chainedPrefStore .getBoolean(PydevEditorPrefs.USE_VERTICAL_INDENT_COLOR_EDITOR_FOREGROUND); setTransparency(chainedPrefStore.getInt(PydevEditorPrefs.VERTICAL_INDENT_TRANSPARENCY)); chainedPrefStore.addPropertyChangeListener(this); } private void setTransparency(int newVal) { if (newVal < 0) { newVal = 0; } if (newVal > 255) { newVal = 255; } transparency = newVal; } @Override public boolean getShowIndentGuide() { return showIndentGuide; } @Override public void dispose() { if (chainedPrefStore != null) { chainedPrefStore.removePropertyChangeListener(this); chainedPrefStore = null; } } @Override public void propertyChange(PropertyChangeEvent event) { if (PydevEditorPrefs.USE_VERTICAL_INDENT_GUIDE.equals(event.getProperty())) { this.showIndentGuide = chainedPrefStore.getBoolean(PydevEditorPrefs.USE_VERTICAL_INDENT_GUIDE); } else if (PydevEditorPrefs.USE_VERTICAL_INDENT_COLOR_EDITOR_FOREGROUND.equals(event.getProperty())) { this.useEditorForegroundColor = chainedPrefStore .getBoolean(PydevEditorPrefs.USE_VERTICAL_INDENT_COLOR_EDITOR_FOREGROUND); } else if (PydevEditorPrefs.VERTICAL_INDENT_TRANSPARENCY.equals(event.getProperty())) { setTransparency(chainedPrefStore.getInt(PydevEditorPrefs.VERTICAL_INDENT_TRANSPARENCY)); } } @Override public Color getColor(StyledText styledText) { if (useEditorForegroundColor) { return styledText.getForeground(); } ColorCache colorCache = PydevPlugin.getColorCache(); return colorCache.getColor(PydevEditorPrefs.VERTICAL_INDENT_COLOR); } @Override public int getTransparency() { return transparency; } }