// Copyright (c) 2003-2004 by Leif Frenzel - see http://leiffrenzel.de package net.sf.eclipsefp.common.ui.preferences.overlay; import org.eclipse.jface.preference.IPreferenceStore; /** <p>helper for the overlay store.</p> * * @author Leif Frenzel */ class Propagator { static void propagate( final IPreferenceStore origin, final OverlayKey key, final IPreferenceStore target ) { if( OverlayType.BOOLEAN == key.getType() ) { propagateBoolean( origin, key, target ); } else if( OverlayType.DOUBLE == key.getType() ) { propagateDouble( origin, key, target ); } else if( OverlayType.FLOAT == key.getType() ) { propagateFloat( origin, key, target ); } else if( OverlayType.INT == key.getType() ) { propagateInt( origin, key, target ); } else if( OverlayType.LONG == key.getType() ) { propagateLong( origin, key, target ); } else if( OverlayType.STRING == key.getType() ) { propagateString( origin, key, target ); } } // helping methods ////////////////// private static void propagateString( final IPreferenceStore origin, final OverlayKey key, final IPreferenceStore target ) { String originValue = origin.getString( key.getKey() ); String targetValue = target.getString( key.getKey() ); if( isEqual( originValue, targetValue ) ) { target.setValue( key.getKey(), originValue ); } } private static void propagateBoolean( final IPreferenceStore origin, final OverlayKey key, final IPreferenceStore target ) { boolean originValue = origin.getBoolean( key.getKey() ); boolean targetValue = target.getBoolean( key.getKey() ); if( targetValue != originValue ) { target.setValue( key.getKey(), originValue ); } } private static void propagateDouble( final IPreferenceStore origin, final OverlayKey key, final IPreferenceStore target ) { double originValue = origin.getDouble( key.getKey() ); double targetValue = target.getDouble( key.getKey() ); if( targetValue != originValue ) { target.setValue( key.getKey(), originValue ); } } private static void propagateFloat( final IPreferenceStore origin, final OverlayKey key, final IPreferenceStore target ) { float originValue = origin.getFloat( key.getKey() ); float targetValue = target.getFloat( key.getKey() ); if( targetValue != originValue ) { target.setValue( key.getKey(), originValue ); } } private static void propagateInt( final IPreferenceStore origin, final OverlayKey key, final IPreferenceStore target ) { int originValue = origin.getInt( key.getKey() ); int targetValue = target.getInt( key.getKey() ); if( targetValue != originValue ) { target.setValue( key.getKey(), originValue ); } } private static void propagateLong( final IPreferenceStore origin, final OverlayKey key, final IPreferenceStore target ) { long originValue = origin.getLong( key.getKey() ); long targetValue = target.getLong( key.getKey() ); if( targetValue != originValue ) { target.setValue( key.getKey(), originValue ); } } private static boolean isEqual( final String originValue, final String targetValue ) { return ( targetValue != null ) && ( originValue != null ) && !targetValue.equals( originValue ); } }