PreferencePropertyTester.java
package com.codeaffine.extras.jdt.internal.prefs;
import org.eclipse.core.expressions.PropertyTester;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.ui.services.IServiceLocator;
import com.codeaffine.extras.jdt.internal.JDTExtrasPlugin;
public class PreferencePropertyTester extends PropertyTester {
public static final String ID = "com.codeaffine.extras.jdt.internal.PreferencePropertyTester";
public static final String NAMESPACE = "com.codeaffine.extras.jdt.internal.PreferenceStore";
public static final String IS_TRUE = "isTrue";
public static final String PROP_IS_TRUE = NAMESPACE + "." + IS_TRUE;
private final IPreferenceStore preferenceStore;
public PreferencePropertyTester() {
this( JDTExtrasPlugin.getInstance().getPreferenceStore() );
}
public PreferencePropertyTester( IPreferenceStore preferenceStore ) {
this.preferenceStore = preferenceStore;
}
@Override
public boolean test( Object receiver, String property, Object[] args, Object expectedValue ) {
boolean result = false;
if( argumentsValid( receiver, property, args ) ) {
result = test( args, expectedValue );
}
return result;
}
private boolean test( Object[] args, Object expectedValue ) {
return evaluateResult( expectedValue, getPreferenceValue( args ) );
}
private static boolean argumentsValid( Object receiver, String property, Object[] args ) {
return receiver instanceof IServiceLocator
&& IS_TRUE.equals( property )
&& args.length == 1
&& args[ 0 ] instanceof String;
}
private boolean getPreferenceValue( Object[] args ) {
return preferenceStore.getBoolean( ( String )args[ 0 ] );
}
private static boolean evaluateResult( Object expectedValue, boolean value ) {
return expectedValue instanceof Boolean && ( ( Boolean )expectedValue ).booleanValue() == value;
}
}