// Copyright (c) 2003-2005 by Leif Frenzel - see http://leiffrenzel.de
package net.sf.eclipsefp.haskell.ghccompiler.ui.preferences;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import net.sf.eclipsefp.common.ui.dialog.DialogField;
import net.sf.eclipsefp.haskell.ghccompiler.core.GhcParameter;
import net.sf.eclipsefp.haskell.ghccompiler.core.GhcParameterType;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.util.PropertyChangeEvent;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
/** <p>Tab for individual compiler optimizations on the ghc preference
* page.</p>
*
* @author Leif Frenzel
*/
public class MoreOptimizationTab extends GhcCompilerTab {
private final List<DialogField> fields=new LinkedList<>();
public MoreOptimizationTab( final IPreferenceStore store ) {
super( store );
}
// interface methods of Tab
///////////////////////////
@Override
public Control createControl( final Composite parent ) {
Composite composite = new Composite( parent, SWT.NONE );
composite.setLayout( new GridLayout( 4, false ) );
/*createField( composite, OPT_CASE_MERGE, 2 );
createField( composite, OPT_DICTS_STRICT, 2 );
createField( composite, OPT_DO_ETA_REDUCTION, 2 );
createField( composite, OPT_DO_LAMBDA_ETA_EXPANSION, 2 );
createField( composite, OPT_FOLDR_BUILD_ON, 2 );
createField( composite, OPT_IGNORE_INTERFACE_PRAGMAS, 2 );
createField( composite, OPT_LET_NO_ESCAPE, 2 );
createField( composite, OPT_OMIT_INTERFACE_PRAGMAS, 2 );
createField( composite, OPT_NO_CSE, 2 );
createField( composite, OPT_NO_PRE_INLINING, 2 );
createField( composite, OPT_NUMBERS_STRICT, 2 );
createField( composite, OPT_USAGESP, 2 );
*/
for (GhcParameter p:GhcParameter.values()){
if (GhcParameterType.OPTIMIZATION_SPECIFIC.equals( p.getType() )){
fields.add( createField( composite, p, 2 ));
}
}
return composite;
}
private DialogField createField( final Composite composite,
final GhcParameter p,
final int span ) {
DialogField field = createBooleanField( composite, p );
GridData gd = new GridData();
gd.horizontalSpan = span;
field.setLayoutData( gd );
return field;
}
@Override
public void propertyChange( final PropertyChangeEvent event ) {
Iterator<DialogField> it=fields.iterator();
for (GhcParameter p:GhcParameter.values()){
if (GhcParameterType.OPTIMIZATION_SPECIFIC.equals( p.getType() )){
it.next().setInfo( getFromStore(p.getName()) );
}
}
}
}