/**
* Copyright (c) 2014 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.views.worksheet;
import net.sf.eclipsefp.haskell.buildwrapper.types.EvalResult;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IMarker;
import org.eclipse.core.runtime.CoreException;
/**
* An evaluation expression
* @author JP Moresmau
*
*/
public class EvalExpression implements Comparable<EvalExpression>{
/**
* the expression to evaluate
*/
private String expression;
/**
* the last result of the evaluation
*/
private EvalResult lastResult;
/**
* the index in the list of evaluation for that file
*/
private int index;
private ResultType resultType=ResultType.TEXT;
/**
*
*/
public EvalExpression() {
}
public EvalExpression(final IMarker m){
expression=m.getAttribute( WorkSheetViewPage.MARKER_EXPRESSION, "" );
index=m.getAttribute( WorkSheetViewPage.MARKER_INDEX, 0 );
try {
resultType=ResultType.valueOf( m.getAttribute( WorkSheetViewPage.MARKER_RESULT_TYPE, ResultType.TEXT.toString() ) );
} catch (IllegalArgumentException ignore){
// noop
}
}
/**
* save the expression as a marker on the file
* @param f the file
* @return the generated marker
* @throws CoreException
*/
public IMarker addMarker(final IFile f) throws CoreException{
IMarker m=f.createMarker( WorkSheetViewPage.MARKER_TYPE );
m.setAttribute( WorkSheetViewPage.MARKER_EXPRESSION, expression );
m.setAttribute( WorkSheetViewPage.MARKER_INDEX, index );
m.setAttribute( WorkSheetViewPage.MARKER_RESULT_TYPE, String.valueOf(resultType ));
return m;
}
/**
* do we have an expression to evaluate
* @return
*/
public boolean isValid(){
return expression!=null && expression.trim().length()>0;
}
/* (non-Javadoc)
* @see java.lang.Comparable#compareTo(java.lang.Object)
*/
@Override
public int compareTo( final EvalExpression o ) {
return Integer.valueOf(index).compareTo( o.index);
}
public String getExpression() {
return expression;
}
public void setExpression( final String expression ) {
this.expression = expression;
}
public EvalResult getLastResult() {
return lastResult;
}
public void setLastResult( final EvalResult lastResult ) {
this.lastResult = lastResult;
}
public int getIndex() {
return index;
}
public void setIndex( final int index ) {
this.index = index;
}
public ResultType getResultType() {
return resultType;
}
public void setResultType( final ResultType resultType ) {
this.resultType = resultType;
}
}