// Copyright (c) 2003-2005 by Leif Frenzel - see http://leiffrenzel.de
package net.sf.eclipsefp.haskell.ghccompiler.ui.preferences;
import net.sf.eclipsefp.common.ui.dialog.BooleanDialogField;
import net.sf.eclipsefp.common.ui.dialog.DialogField;
import net.sf.eclipsefp.common.ui.dialog.IDialogFieldListener;
import net.sf.eclipsefp.common.ui.preferences.Tab;
import net.sf.eclipsefp.haskell.core.compiler.CompilerManager;
import net.sf.eclipsefp.haskell.core.compiler.HsImplementationType;
import net.sf.eclipsefp.haskell.core.compiler.IHsImplementation;
import net.sf.eclipsefp.haskell.ghccompiler.core.GhcParameter;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.swt.widgets.Composite;
/** <p>superclass for all tabs on the GHC compiler preference page,
* encapsulates some common functionality.</p>
*
* @author Leif Frenzel
*/
public abstract class GhcCompilerTab extends Tab {
public GhcCompilerTab( final IPreferenceStore store ) {
super( store );
}
// functionality for subclasses
///////////////////////////////
DialogField createBooleanField( final Composite parent, final String name ) {
String text = ParamsUITexts.getShortDescription( name );
String tooltip = text + "\n" + name; //$NON-NLS-1$
BooleanDialogField result = new BooleanDialogField( parent, text, tooltip );
result.addDialogFieldListener( new IDialogFieldListener() {
@Override
public void infoChanged( final Object newInfo ) {
boolean selected = ( ( Boolean )newInfo ).booleanValue();
getPreferenceStore().setValue( name, selected );
}
} );
result.setInfo( getFromStore( name ) );
return result;
}
DialogField createBooleanField( final Composite parent, final GhcParameter p ) {
final String name=p.getName();
String displayName=name;
IHsImplementation impl=CompilerManager.getCurrentHsImplementation();
if (impl!=null && impl.getType().equals( HsImplementationType.GHC )){
displayName=p.getName( impl.getVersion() );
}
String text = ParamsUITexts.getShortDescription( name );
String tooltip = text + "\n" + displayName; //$NON-NLS-1$
BooleanDialogField result = new BooleanDialogField( parent, text, tooltip );
result.addDialogFieldListener( new IDialogFieldListener() {
@Override
public void infoChanged( final Object newInfo ) {
boolean selected = ( ( Boolean )newInfo ).booleanValue();
getPreferenceStore().setValue( name, selected );
}
} );
result.setInfo( getFromStore( name ) );
return result;
}
// helping methods
//////////////////
protected Boolean getFromStore( final String name ) {
boolean value = getPreferenceStore().getBoolean( name );
return ( value ) ? Boolean.TRUE : Boolean.FALSE;
}
}