/** * Copyright (c) 2015 by JP Moresmau * This code is made available under the terms of the Eclipse Public License, * version 1.0 (EPL). See http://www.eclipse.org/legal/epl-v10.html */ package net.sf.eclipsefp.haskell.ui.internal.preferences.editor; import net.sf.eclipsefp.common.ui.preferences.overlay.OverlayPreferenceStore; import net.sf.eclipsefp.haskell.core.cabal.CabalPackageVersion; import net.sf.eclipsefp.haskell.core.cabal.CabalPackageVersion.Restriction; import net.sf.eclipsefp.haskell.ui.internal.util.UITexts; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; 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.Label; /** * Preferences applying on quick fixes * @author JP Moresmau * */ public class FixesPP extends AbstractEditorPP { private final Button[] buttons=new Button[CabalPackageVersion.Restriction.values().length]; private Restriction res=Restriction.NONE; /** * */ public FixesPP() { } /* (non-Javadoc) * @see net.sf.eclipsefp.haskell.ui.internal.preferences.editor.AbstractEditorPP#addPreferences(net.sf.eclipsefp.common.ui.preferences.overlay.OverlayPreferenceStore) */ @Override protected void addPreferences( final OverlayPreferenceStore store ) { store.addStringKey( EDITOR_FIXES_PACKAGE_RESTRICTION ); } /* (non-Javadoc) * @see org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse.swt.widgets.Composite) */ @Override protected Control createContents( final Composite parent ) { Composite control = new Composite( parent, SWT.NONE ); GridLayout layout = new GridLayout(1,false); control.setLayout( layout ); String s=getPreferenceStore().getString( EDITOR_FIXES_PACKAGE_RESTRICTION ); res=Restriction.valueOf( s ); Label lText=new Label( control, SWT.NONE ); lText.setText( UITexts.preferences_editor_fixes_version ); GridData gdText=new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL); lText.setLayoutData( gdText ); for (final Restriction r:Restriction.values()){ Button b=new Button(control,SWT.RADIO); buttons[r.ordinal()]=b; b.setText( getButtonLabel( r ) ); GridData gdButton=new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL); gdButton.horizontalIndent=20; b.setLayoutData( gdButton ); b.addSelectionListener( new SelectionAdapter() { @Override public void widgetSelected(final org.eclipse.swt.events.SelectionEvent e) { res=r; getPreferenceStore().setValue( EDITOR_FIXES_PACKAGE_RESTRICTION, r.name() ); } } ); } buttons[res.ordinal()].setSelection( true ); return control; } private String getButtonLabel(final Restriction r){ switch( r ) { case MAJOR: return UITexts.cabalEditor_dependencyVersionMajor; case MAJOR_FROM_MINOR: return UITexts.cabalEditor_dependencyVersionCurrent; case MINOR: return UITexts.cabalEditor_dependencyVersionMinor; case FROM_MAJOR: return UITexts.cabalEditor_dependencyVersionFromMajor; default: return UITexts.cabalEditor_dependencyVersionNone; } } }