// 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.preferences.Tab;
import net.sf.eclipsefp.haskell.ghccompiler.core.preferences.IGhcPreferenceNames;
import net.sf.eclipsefp.haskell.ghccompiler.ui.internal.util.UITexts;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.util.PropertyChangeEvent;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Text;
/** <p>The tab on the Ghc compiler preference page that displays general
* information about the ghc compiler installed on the machine (if any).</p>
*
* @author Leif Frenzel
*/
public class GeneralTab extends Tab implements IGhcPreferenceNames {
private Button cbActive;
private Text text;
public GeneralTab( 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( 1, false ) );
createExtraOptionsField( composite );
/*String text = ScionText.ghciTab_options;
BooleanDialogField fdGHCOptions = new BooleanDialogField( composite, text );
fdGHCOptions.addDialogFieldListener( new IDialogFieldListener() {
public void infoChanged( final Object newInfo ) {
boolean selected = ( ( Boolean )newInfo ).booleanValue();
getPreferenceStore().setValue( GHCI_USES_GHC_OPTIONS, selected );
}
} );
fdGHCOptions.setInfo( getFromStore( GHCI_USES_GHC_OPTIONS ) );
String txt2 = ScionText.ghciTab_srcFolders;
BooleanDialogField fdSrcFolders = new BooleanDialogField( composite, txt2 );
fdSrcFolders.addDialogFieldListener( new IDialogFieldListener() {
public void infoChanged( final Object newInfo ) {
boolean selected = ( ( Boolean )newInfo ).booleanValue();
getPreferenceStore().setValue( GHCI_SOURCE_FOLDERS, selected );
}
} );
fdSrcFolders.setInfo( getFromStore( GHCI_SOURCE_FOLDERS ) );
Label lblNote = new Label( composite, SWT.WRAP );
lblNote.setText( ScionText.ghciTab_note );
*/
return composite;
}
// helping methods
//////////////////
private void createExtraOptionsField( final Composite parent ) {
Composite wrapper = new Composite( parent, SWT.NONE );
wrapper.setLayout( new GridLayout( 1, false ) );
Group group = new Group( wrapper, SWT.NONE );
group.setLayout( new GridLayout() );
group.setText( UITexts.generalTab_extra );
group.setLayoutData( new GridData( GridData.FILL_HORIZONTAL) );
cbActive = new Button( group, SWT.CHECK );
cbActive.setText( UITexts.generalTab_extraMsg );
boolean selected = getPreferenceStore().getBoolean( USE_EXTRA_OPTIONS );
cbActive.setSelection( selected );
text = new Text( group, SWT.BORDER );
text.setText( getPreferenceStore().getString( EXTRA_OPTIONS ) );
text.setLayoutData( new GridData( GridData.FILL_HORIZONTAL ) );
text.addModifyListener( new ModifyListener() {
@Override
public void modifyText( final ModifyEvent event ) {
getPreferenceStore().setValue( EXTRA_OPTIONS, text.getText() );
}
} );
text.setEnabled( selected );
cbActive.addSelectionListener( new SelectionAdapter() {
@Override
public void widgetSelected( final SelectionEvent e ) {
boolean selected = cbActive.getSelection();
text.setEnabled( selected );
getPreferenceStore().setValue( USE_EXTRA_OPTIONS, selected );
}
} );
}
@Override
public void propertyChange( final PropertyChangeEvent event ) {
if (cbActive!=null){
cbActive.setSelection( getPreferenceStore().getBoolean( USE_EXTRA_OPTIONS ) );
}
if (text!=null){
boolean selected = cbActive.getSelection();
text.setEnabled( selected );
int c=text.getCaretPosition();
text.setText( getPreferenceStore().getString( EXTRA_OPTIONS ) );
text.setSelection( c,c );
}
}
/*private Boolean getFromStore( final String name ) {
boolean value = getPreferenceStore().getBoolean( name );
return ( value ) ? Boolean.TRUE : Boolean.FALSE;
}*/
}