/**
* Copyright (c) 2012 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.resolve;
import net.sf.eclipsefp.haskell.core.cabalmodel.CabalSyntax;
import net.sf.eclipsefp.haskell.core.cabalmodel.PackageDescriptionStanza;
import net.sf.eclipsefp.haskell.core.cabalmodel.RealValuePosition;
import net.sf.eclipsefp.haskell.ui.internal.util.UITexts;
import org.eclipse.core.resources.IMarker;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.contentassist.ICompletionProposal;
import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.graphics.Image;
/**
* Add a ghc option to the Cabal file
* @author JP Moresmau
*
*/
public class AddGHCOptionResolution extends AddPackageDependency {
public AddGHCOptionResolution( final String pkg ) {
super( pkg );
}
@Override
public String getLabel() {
return NLS.bind( UITexts.resolve_addoption, getValue() );
}
@Override
public ICompletionProposal getCompletionProposal( final IMarker marker,
final IDocument document ) {
return new AddPackageDependencyProposal( getValue(), marker ){
/* (non-Javadoc)
* @see net.sf.eclipsefp.haskell.ui.internal.resolve.AddPackageDependencyProposal#getCabalField()
*/
@Override
protected CabalSyntax getCabalField() {
return CabalSyntax.FIELD_GHC_OPTIONS;
}
@Override
public String getDisplayString() {
return NLS.bind( UITexts.resolve_addoption, getValue() );
}
/* (non-Javadoc)
* @see net.sf.eclipsefp.haskell.ui.internal.resolve.AddPackageDependencyProposal#update(net.sf.eclipsefp.haskell.core.cabalmodel.PackageDescriptionStanza)
*/
@Override
protected RealValuePosition update( final PackageDescriptionStanza pds ) {
String val=pds.getProperties().get( getCabalField() );
if (val!=null && val.contains( getValue() )){
return null;
}
if (val!=null && val.length()>0){
val=val+" "+getValue();
} else {
val=getValue();
}
return pds.update( getCabalField(), val );
}
/* (non-Javadoc)
* @see net.sf.eclipsefp.haskell.ui.internal.resolve.AddPackageDependencyProposal#getImage()
*/
@Override
public Image getImage() {
return null;
}
};
}
}