/*******************************************************************************
* Copyright (c) 2000, 2006 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
* Exadel, Inc.
* Red Hat, Inc.
*******************************************************************************/
package org.jboss.tools.common.text.xml.ui.xpl;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.Plugin;
import org.eclipse.jdt.internal.core.ModelUpdater;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.preference.PreferenceConverter;
import org.eclipse.jface.util.IPropertyChangeListener;
import org.eclipse.jface.util.PropertyChangeEvent;
import org.eclipse.swt.graphics.RGB;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.jboss.tools.common.text.xml.XmlEditorPlugin;
/**
* @author Jeremy
*
*/
public class XmlPreferenceConstants extends BasePreferenceConstants {
private XmlPreferenceConstants() {
}
/**
* A named preference that controls whether bracket matching highlighting is turned on or off.
* <p>
* Value is of type <code>Boolean</code>.
* </p>
*/
public final static String EDITOR_MATCHING_BRACKETS= "matchingBrackets"; //$NON-NLS-1$
/**
* A named preference that holds the color used to highlight matching brackets.
* <p>
* Value is of type <code>String</code>. A RGB color value encoded as a string
* using class <code>PreferenceConverter</code>
* </p>
*
* @see org.eclipse.jface.resource.StringConverter
* @see org.eclipse.jface.preference.PreferenceConverter
*/
public final static String EDITOR_MATCHING_BRACKETS_COLOR= "matchingBracketsColor"; //$NON-NLS-1$
/**
* A named preference that controls whether the current line highlighting is turned on or off.
* <p>
* Value is of type <code>Boolean</code>.
* </p>
*/
public final static String EDITOR_CURRENT_LINE= "currentLine"; //$NON-NLS-1$
/**
* A named preference that holds the color used to highlight the current line.
* <p>
* Value is of type <code>String</code>. A RGB color value encoded as a string
* using class <code>PreferenceConverter</code>
* </p>
*
* @see org.eclipse.jface.resource.StringConverter
* @see org.eclipse.jface.preference.PreferenceConverter
*/
public final static String EDITOR_CURRENT_LINE_COLOR= "currentLineColor"; //$NON-NLS-1$
/**
* A named preference that controls whether the print margin is turned on or off.
* <p>
* Value is of type <code>Boolean</code>.
* </p>
*/
public final static String EDITOR_PRINT_MARGIN= "printMargin"; //$NON-NLS-1$
/**
* A named preference that holds the color used to render the print margin.
* <p>
* Value is of type <code>String</code>. A RGB color value encoded as a string
* using class <code>PreferenceConverter</code>
* </p>
*
* @see org.eclipse.jface.resource.StringConverter
* @see org.eclipse.jface.preference.PreferenceConverter
*/
public final static String EDITOR_PRINT_MARGIN_COLOR= "printMarginColor"; //$NON-NLS-1$
/**
* Print margin column. Int value.
*/
public final static String EDITOR_PRINT_MARGIN_COLUMN= "printMarginColumn"; //$NON-NLS-1$
/**
* A named preference that controls if the line number ruler is shown in the UI.
* <p>
* Value is of type <code>Boolean</code>.
* </p>
*/
public final static String EDITOR_LINE_NUMBER_RULER= "lineNumberRuler"; //$NON-NLS-1$
/**
* A named preference that holds the color used to render line numbers inside the line number ruler.
* <p>
* Value is of type <code>String</code>. A RGB color value encoded as a string
* using class <code>PreferenceConverter</code>
* </p>
*
* @see org.eclipse.jface.resource.StringConverter
* @see org.eclipse.jface.preference.PreferenceConverter
* @see #EDITOR_LINE_NUMBER_RULER
*/
public final static String EDITOR_LINE_NUMBER_RULER_COLOR= "lineNumberColor"; //$NON-NLS-1$
/**
* Initializes the given preference store with the default values.
*
* @param store the preference store to be initialized
*
* @since 2.1
*/
public static void initializeDefaultValues(final IPreferenceStore store) {
store.setDefault(XmlPreferenceConstants.EDITOR_MATCHING_BRACKETS, false);
PreferenceConverter.setDefault(store, XmlPreferenceConstants.EDITOR_MATCHING_BRACKETS_COLOR, new RGB(192, 192,192));
store.setDefault(XmlPreferenceConstants.EDITOR_CURRENT_LINE, true);
PreferenceConverter.setDefault(store, XmlPreferenceConstants.EDITOR_CURRENT_LINE_COLOR, new RGB(225, 235, 224));
store.setDefault(XmlPreferenceConstants.EDITOR_PRINT_MARGIN, false);
store.setDefault(XmlPreferenceConstants.EDITOR_PRINT_MARGIN_COLUMN, 80);
PreferenceConverter.setDefault(store, XmlPreferenceConstants.EDITOR_PRINT_MARGIN_COLOR, new RGB(176, 180 , 185));
store.setDefault(XmlPreferenceConstants.EDITOR_LINE_NUMBER_RULER, false);
PreferenceConverter.setDefault(store, XmlPreferenceConstants.EDITOR_LINE_NUMBER_RULER_COLOR, new RGB(0, 0, 0));
store.setDefault(BasePreferenceConstants.EDITOR_TAB_WIDTH, 4);
store.setDefault(BasePreferenceConstants.EDITOR_REPLACE_TAB_WITH_WHITESPACE, false);
setDefault(store, "errorIndicationColor", new RGB(255,175,175), new RGB(255, 255, 255), false, false); //$NON-NLS-1$
initializeTextEditorValues(store);
}
static String[] BOOLEAN_PROPERTIES = new String[]{
EDITOR_CURRENT_LINE, EDITOR_LINE_NUMBER_RULER, EDITOR_PRINT_MARGIN, "overviewRuler" //$NON-NLS-1$
};
static String[] STRING_PROPERTIES = new String[]{
EDITOR_CURRENT_LINE_COLOR, EDITOR_LINE_NUMBER_RULER_COLOR, EDITOR_PRINT_MARGIN_COLOR,
"errorIndicationColor", "warningIndicationColor", "infoIndicationColor", "taskIndicationColor", "bookmarkIndicationColor" //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
};
static String[] INT_PROPERTIES = new String[]{EDITOR_PRINT_MARGIN_COLUMN};
private static void initializeTextEditorValues(final IPreferenceStore store) {
Plugin plugin = Platform.getPlugin("org.eclipse.ui.editors"); //$NON-NLS-1$
try {
Method m = AbstractUIPlugin.class.getDeclaredMethod("initializeDefaultPluginPreferences", new Class[0]); //$NON-NLS-1$
m.setAccessible(true);
m.invoke(plugin, new Object[0]);
} catch (NoSuchMethodException e1) {
//ignore
} catch (IllegalAccessException e2) {
//ignore
} catch (IllegalArgumentException e3) {
XmlEditorPlugin.getPluginLog().logError(e3);
} catch (InvocationTargetException e4) {
XmlEditorPlugin.getPluginLog().logError(e4);
}
final IPreferenceStore editorsStore = ((AbstractUIPlugin)plugin).getPreferenceStore();
for (int i = 0; i < BOOLEAN_PROPERTIES.length; i++) {
String p = BOOLEAN_PROPERTIES[i];
store.setValue(p, editorsStore.getBoolean(p));
}
for (int i = 0; i < STRING_PROPERTIES.length; i++) {
String p = STRING_PROPERTIES[i];
store.setValue(p, editorsStore.getString(p));
}
for (int i = 0; i < INT_PROPERTIES.length; i++) {
String p = INT_PROPERTIES[i];
store.setValue(p, editorsStore.getInt(p));
}
// these annotation preferences have a different default value than the one the base provides
store.setDefault("errorIndicationInVerticalRuler", true); //$NON-NLS-1$
store.setDefault("warningIndicationInVerticalRuler", true); //$NON-NLS-1$
editorsStore.addPropertyChangeListener(new IPropertyChangeListener() {
public void propertyChange(PropertyChangeEvent event) {
for (int i = 0; i < BOOLEAN_PROPERTIES.length; i++) {
String p = BOOLEAN_PROPERTIES[i];
if(!event.getProperty().equals(p)) continue;
store.setValue(p, editorsStore.getBoolean(p));
return;
}
for (int i = 0; i < STRING_PROPERTIES.length; i++) {
String p = STRING_PROPERTIES[i];
if(!event.getProperty().equals(p)) continue;
store.setValue(p, editorsStore.getString(p));
return;
}
for (int i = 0; i < INT_PROPERTIES.length; i++) {
String p = INT_PROPERTIES[i];
if(!event.getProperty().equals(p)) continue;
store.setValue(p, editorsStore.getInt(p));
return;
}
}
});
}
}