/******************************************************************************* * Copyright © 2008, 2013 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 * *******************************************************************************/ package org.eclipse.edt.ide.rui.visualeditor.internal.preferences; import java.util.StringTokenizer; import org.eclipse.edt.ide.rui.visualeditor.internal.editor.EvConstants; import org.eclipse.edt.ide.rui.visualeditor.internal.util.BrowserManager; import org.eclipse.edt.ide.rui.visualeditor.plugin.Activator; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.swt.graphics.RGB; /** * A class that contains static methods to access and modify the editor's preference values. */ public class EvPreferences { protected static IPreferenceStore _preferenceStore = null; /** * */ protected static String convertRGBToString( RGB rgb ) { if( rgb != null ) { return rgb.red + "," + rgb.green + "," + rgb.blue; //$NON-NLS-1$ //$NON-NLS-2$ } else { return "0,0,0"; //$NON-NLS-1$ } } /** * */ protected static RGB convertStringToRGB( String value ) { RGB ret = null; if( value != null ) { StringTokenizer st = new StringTokenizer( value, "," ); //$NON-NLS-1$ if( st.hasMoreTokens() ) { try { int red = Integer.parseInt( st.nextToken() ); int green = Integer.parseInt( st.nextToken() ); int blue = Integer.parseInt( st.nextToken() ); ret = new RGB( red, green, blue ); } catch( Exception ex ) { } } } if( ret == null ) { ret = new RGB( 0, 0, 0 ); } return ret; } /** * */ public static boolean getBoolean( String name ) { initialize(); return _preferenceStore.getBoolean( name ); } /** * */ public static double getDouble( String name ) { initialize(); return _preferenceStore.getDouble( name ); } /** * */ public static float getFloat( String name ) { initialize(); return _preferenceStore.getFloat( name ); } /** * */ public static int getInt( String name ) { initialize(); return _preferenceStore.getInt( name ); } /** * Returns the preference store */ public static IPreferenceStore getPreferenceStore() { initialize(); return _preferenceStore; } /** * */ public static RGB getRGB( String name ) { initialize(); RGB rgb = convertStringToRGB( _preferenceStore.getString( name ) ); return rgb; } /** * */ public static String getString( String name ) { initialize(); return _preferenceStore.getString( name ); } /** * Initializes the preference store with initial values if they have not been set. * Both default values and user defined values are set. */ protected static void initialize() { if( _preferenceStore != null ) return; // Initialize the preference store //-------------------------------- _preferenceStore = Activator.getDefault().getPreferenceStore(); // Initialize default values // Always do this in case they get changed during development //----------------------------------------------------------- _preferenceStore.setDefault( EvConstants.PREFERENCE_EDITOR_OPENING_TAB, EvConstants.PREFERENCE_DEFAULT_EDITOR_OPENING_TAB ); _preferenceStore.setDefault( EvConstants.PREFERENCE_BROWSER_SIZE_CONTROLS_VISIBLE, EvConstants.PREFERENCE_DEFAULT_BROWSER_SIZE_CONTROLS_VISIBLE ); _preferenceStore.setDefault( EvConstants.PREFERENCE_BROWSER_SIZE_MINIMUM_WIDTH, EvConstants.PREFERENCE_DEFAULT_BROWSER_SIZE_MINIMUM_WIDTH ); _preferenceStore.setDefault( EvConstants.PREFERENCE_BROWSER_SIZE_MINIMUM_HEIGHT, EvConstants.PREFERENCE_DEFAULT_BROWSER_SIZE_MINIMUM_HEIGHT ); _preferenceStore.setDefault( EvConstants.PREFERENCE_BROWSER_SIZE_MAXIMUM_WIDTH, EvConstants.PREFERENCE_DEFAULT_BROWSER_SIZE_MAXIMUM_WIDTH ); _preferenceStore.setDefault( EvConstants.PREFERENCE_BROWSER_SIZE_MAXIMUM_HEIGHT, EvConstants.PREFERENCE_DEFAULT_BROWSER_SIZE_MAXIMUM_HEIGHT ); _preferenceStore.setDefault( EvConstants.PREFERENCE_BROWSER_SIZE_DEFAULT_WIDTH, EvConstants.PREFERENCE_DEFAULT_BROWSER_SIZE_DEFAULT_WIDTH ); _preferenceStore.setDefault( EvConstants.PREFERENCE_BROWSER_SIZE_DEFAULT_HEIGHT, EvConstants.PREFERENCE_DEFAULT_BROWSER_SIZE_DEFAULT_HEIGHT ); _preferenceStore.setDefault( EvConstants.PREFERENCE_TRANSPARENCY_CONTROLS_VISIBLE, EvConstants.PREFERENCE_DEFAULT_TRANSPARENCY_CONTROLS_VISIBLE ); _preferenceStore.setDefault( EvConstants.PREFERENCE_SEMITRANSPARENCY_WHILE_DRAGGING, EvConstants.PREFERENCE_DEFAULT_SEMITRANSPARENCY_WHILE_DRAGGING ); _preferenceStore.setDefault( EvConstants.PREFERENCE_SEMITRANSPARENCY_MODE, EvConstants.PREFERENCE_DEFAULT_SEMITRANSPARENCY_MODE ); _preferenceStore.setDefault( EvConstants.PREFERENCE_SEMITRANSPARENCY_AMOUNT, EvConstants.PREFERENCE_DEFAULT_SEMITRANSPARENCY_AMOUNT ); _preferenceStore.setDefault( EvConstants.PREFERENCE_COLOR_DROP_LOCATION_POTENTIAL, EvConstants.PREFERENCE_DEFAULT_COLOR_DROP_LOCATION_POTENTIAL ); _preferenceStore.setDefault( EvConstants.PREFERENCE_COLOR_DROP_LOCATION_SELECTED, EvConstants.PREFERENCE_DEFAULT_COLOR_DROP_LOCATION_SELECTED ); _preferenceStore.setDefault( EvConstants.PREFERENCE_COLOR_SELECTION, EvConstants.PREFERENCE_DEFAULT_COLOR_SELECTION ); _preferenceStore.setDefault( EvConstants.PREFERENCE_PATTERN_DROP_LOCATION_SELECTED, EvConstants.PREFERENCE_DEFAULT_PATTERN_DROP_LOCATION_SELECTED ); _preferenceStore.setDefault( EvConstants.PREFERENCE_PATTERN_SELECTION, EvConstants.PREFERENCE_DEFAULT_PATTERN_SELECTION ); _preferenceStore.setDefault( EvConstants.PREFERENCE_PERFORMANCE, EvConstants.PREFERENCE_DEFAULT_PERFORMANCE ); _preferenceStore.setDefault( EvConstants.PREFERENCE_RENDERENGINE, BrowserManager.getInstance().getDefaultRenderEngine() ); _preferenceStore.setDefault( EvConstants.PREFERENCE_PROMPT_FOR_A_NEW_WIDGET_NAME, EvConstants.PREFERENCE_DEFAULT_PROMPT_FOR_A_NEW_WIDGET_NAME ); // IBMBIDI Append Start _preferenceStore.setDefault( EvConstants.PREFERENCE_BIDI_WIDGET_ORIENTATION, EvConstants.PREFERENCE_DEFAULT_BIDI_WIDGET_ORIENTATION ); _preferenceStore.setDefault( EvConstants.PREFERENCE_BIDI_TEXT_LAYOUT, EvConstants.PREFERENCE_DEFAULT_BIDI_TEXT_LAYOUT ); _preferenceStore.setDefault( EvConstants.PREFERENCE_BIDI_REVERSE_TEXT_DIRECTION, EvConstants.PREFERENCE_DEFAULT_BIDI_REVERSE_TEXT_DIRECTION ); _preferenceStore.setDefault( EvConstants.PREFERENCE_BIDI_SYM_SWAPPING, EvConstants.PREFERENCE_DEFAULT_BIDI_SYM_SWAPPING ); _preferenceStore.setDefault( EvConstants.PREFERENCE_BIDI_NUM_SWAPPING, EvConstants.PREFERENCE_DEFAULT_BIDI_NUM_SWAPPING ); // IBMBIDI Append End // Initialize user preferred values //--------------------------------- // Last preference page viewed //---------------------------- if( _preferenceStore.contains( EvConstants.PREFERENCE_PAGE_TAB ) == false ) setInt( EvConstants.PREFERENCE_PAGE_TAB, 0 ); // Tab to show when editor is opened //---------------------------------- if( _preferenceStore.contains( EvConstants.PREFERENCE_EDITOR_OPENING_TAB ) == false ) setInt( EvConstants.PREFERENCE_EDITOR_OPENING_TAB, 0 ); // Browser size controls //---------------------- if( _preferenceStore.contains( EvConstants.PREFERENCE_BROWSER_SIZE_CONTROLS_VISIBLE ) == false ) setBoolean( EvConstants.PREFERENCE_BROWSER_SIZE_CONTROLS_VISIBLE, false ); if( _preferenceStore.contains( EvConstants.PREFERENCE_BROWSER_SIZE_MINIMUM_WIDTH ) == false ) setInt( EvConstants.PREFERENCE_BROWSER_SIZE_MINIMUM_WIDTH, 200 ); if( _preferenceStore.contains( EvConstants.PREFERENCE_BROWSER_SIZE_MINIMUM_HEIGHT ) == false ) setInt( EvConstants.PREFERENCE_BROWSER_SIZE_MINIMUM_HEIGHT, 200 ); if( _preferenceStore.contains( EvConstants.PREFERENCE_BROWSER_SIZE_MAXIMUM_WIDTH ) == false ) setInt( EvConstants.PREFERENCE_BROWSER_SIZE_MAXIMUM_WIDTH, 3000 ); if( _preferenceStore.contains( EvConstants.PREFERENCE_BROWSER_SIZE_MAXIMUM_HEIGHT ) == false ) setInt( EvConstants.PREFERENCE_BROWSER_SIZE_MAXIMUM_HEIGHT, 5000 ); if( _preferenceStore.contains( EvConstants.PREFERENCE_BROWSER_SIZE_DEFAULT_WIDTH ) == false ) setInt( EvConstants.PREFERENCE_BROWSER_SIZE_DEFAULT_WIDTH, 1000 ); if( _preferenceStore.contains( EvConstants.PREFERENCE_BROWSER_SIZE_DEFAULT_HEIGHT ) == false ) setInt( EvConstants.PREFERENCE_BROWSER_SIZE_DEFAULT_HEIGHT, 800 ); // Transparency controls //---------------------- if( _preferenceStore.contains( EvConstants.PREFERENCE_TRANSPARENCY_CONTROLS_VISIBLE ) == false ) setBoolean( EvConstants.PREFERENCE_TRANSPARENCY_CONTROLS_VISIBLE, false ); if( _preferenceStore.contains( EvConstants.PREFERENCE_SEMITRANSPARENCY_WHILE_DRAGGING ) == false ) setBoolean( EvConstants.PREFERENCE_SEMITRANSPARENCY_WHILE_DRAGGING, EvConstants.PREFERENCE_DEFAULT_SEMITRANSPARENCY_WHILE_DRAGGING ); if( _preferenceStore.contains( EvConstants.PREFERENCE_SEMITRANSPARENCY_MODE ) == false ) setInt( EvConstants.PREFERENCE_SEMITRANSPARENCY_MODE, EvConstants.PREFERENCE_DEFAULT_SEMITRANSPARENCY_MODE ); if( _preferenceStore.contains( EvConstants.PREFERENCE_SEMITRANSPARENCY_AMOUNT ) == false ) setInt( EvConstants.PREFERENCE_SEMITRANSPARENCY_AMOUNT, EvConstants.PREFERENCE_DEFAULT_SEMITRANSPARENCY_AMOUNT ); // Color and pattern //------------------ if( _preferenceStore.contains( EvConstants.PREFERENCE_COLOR_DROP_LOCATION_POTENTIAL ) == false ) setString( EvConstants.PREFERENCE_COLOR_DROP_LOCATION_POTENTIAL, EvConstants.PREFERENCE_DEFAULT_COLOR_DROP_LOCATION_POTENTIAL ); if( _preferenceStore.contains( EvConstants.PREFERENCE_COLOR_DROP_LOCATION_SELECTED ) == false ) setString( EvConstants.PREFERENCE_COLOR_DROP_LOCATION_SELECTED, EvConstants.PREFERENCE_DEFAULT_COLOR_DROP_LOCATION_SELECTED ); if( _preferenceStore.contains( EvConstants.PREFERENCE_COLOR_SELECTION ) == false ) setString( EvConstants.PREFERENCE_COLOR_SELECTION, EvConstants.PREFERENCE_DEFAULT_COLOR_SELECTION ); if( _preferenceStore.contains( EvConstants.PREFERENCE_PATTERN_DROP_LOCATION_SELECTED ) == false ) setBoolean( EvConstants.PREFERENCE_PATTERN_DROP_LOCATION_SELECTED, EvConstants.PREFERENCE_DEFAULT_PATTERN_DROP_LOCATION_SELECTED ); if( _preferenceStore.contains( EvConstants.PREFERENCE_PATTERN_SELECTION ) == false ) setBoolean( EvConstants.PREFERENCE_PATTERN_SELECTION, EvConstants.PREFERENCE_DEFAULT_PATTERN_SELECTION ); // Performance //------------ if( _preferenceStore.contains( EvConstants.PREFERENCE_PERFORMANCE ) == false ) setInt( EvConstants.PREFERENCE_PERFORMANCE, EvConstants.PREFERENCE_DEFAULT_PERFORMANCE ); // Render Engine //------------ if( _preferenceStore.contains( EvConstants.PREFERENCE_RENDERENGINE ) == false ) setInt( EvConstants.PREFERENCE_RENDERENGINE, BrowserManager.getInstance().getDefaultRenderEngine() ); // Widget creation //---------------- if( _preferenceStore.contains( EvConstants.PREFERENCE_PROMPT_FOR_A_NEW_WIDGET_NAME ) == false ) setBoolean( EvConstants.PREFERENCE_PROMPT_FOR_A_NEW_WIDGET_NAME, EvConstants.PREFERENCE_DEFAULT_PROMPT_FOR_A_NEW_WIDGET_NAME ); // Bidirectional //-------------- // IBMBIDI Append Start if( _preferenceStore.contains( EvConstants.PREFERENCE_BIDI_WIDGET_ORIENTATION ) == false ) setString( EvConstants.PREFERENCE_BIDI_WIDGET_ORIENTATION, EvConstants.PREFERENCE_DEFAULT_BIDI_WIDGET_ORIENTATION ); if( _preferenceStore.contains( EvConstants.PREFERENCE_BIDI_TEXT_LAYOUT ) == false ) setString( EvConstants.PREFERENCE_BIDI_TEXT_LAYOUT, EvConstants.PREFERENCE_DEFAULT_BIDI_TEXT_LAYOUT ); if( _preferenceStore.contains( EvConstants.PREFERENCE_BIDI_REVERSE_TEXT_DIRECTION ) == false ) setString( EvConstants.PREFERENCE_BIDI_REVERSE_TEXT_DIRECTION, EvConstants.PREFERENCE_DEFAULT_BIDI_REVERSE_TEXT_DIRECTION ); if( _preferenceStore.contains( EvConstants.PREFERENCE_BIDI_SYM_SWAPPING ) == false ) setString( EvConstants.PREFERENCE_BIDI_SYM_SWAPPING, EvConstants.PREFERENCE_DEFAULT_BIDI_SYM_SWAPPING ); if( _preferenceStore.contains( EvConstants.PREFERENCE_BIDI_NUM_SWAPPING ) == false ) setString( EvConstants.PREFERENCE_BIDI_NUM_SWAPPING, EvConstants.PREFERENCE_DEFAULT_BIDI_NUM_SWAPPING ); // IBMBIDI Append End } /** * */ public static void setBoolean( String name, boolean value ) { initialize(); _preferenceStore.setValue( name, value ); } /** * */ public static void setDouble( String name, double value ) { initialize(); _preferenceStore.setValue( name, value ); } /** * */ public static void setFloat( String name, float value ) { initialize(); _preferenceStore.setValue( name, value ); } /** * */ public static void setInt( String name, int value ) { initialize(); _preferenceStore.setValue( name, value ); } /** * */ public static void setRGB( String name, RGB value ) { initialize(); _preferenceStore.setValue( name, convertRGBToString( value ) ); } /** * */ public static void setString( String name, String value ) { initialize(); _preferenceStore.setValue( name, value ); } /** * Do not publicly instantiate */ private EvPreferences() { } }