package net.sf.eclipsefp.haskell.debug.ui.internal.debug;
import net.sf.eclipsefp.haskell.debug.core.internal.HaskellDebugCore;
import net.sf.eclipsefp.haskell.ui.internal.editors.haskell.HaskellEditor;
import org.eclipse.core.resources.IFile;
import org.eclipse.debug.core.DebugException;
import org.eclipse.debug.core.model.ILineBreakpoint;
import org.eclipse.debug.core.model.IValue;
import org.eclipse.debug.ui.IDebugModelPresentation;
import org.eclipse.debug.ui.IValueDetailListener;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.swt.graphics.Image;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.part.FileEditorInput;
/**
* Presentation of Haskell debug elements in Haskell source editor
* @author JP Moresmau
*
*/
public class HaskellModelPresentation extends LabelProvider implements IDebugModelPresentation {
public HaskellModelPresentation() {
//NOOP
}
@Override
public void computeDetail( final IValue value, final IValueDetailListener listener ) {
String detail = ""; //$NON-NLS-1$
try {
detail = value.getValueString();
} catch (DebugException e) {
HaskellDebugCore.log( e.getLocalizedMessage(), e );
}
listener.detailComputed(value, detail);
}
@Override
public Image getImage( final Object element ) {
return null;
}
@Override
public String getText( final Object element ) {
return null;
}
@Override
public void setAttribute( final String attribute, final Object value ) {
// noop
}
@Override
public String getEditorId( final IEditorInput input, final Object element ) {
if (element instanceof IFile || element instanceof ILineBreakpoint) {
return HaskellEditor.ID;
}
return null;
}
@Override
public IEditorInput getEditorInput( final Object element ) {
if (element instanceof IFile) {
return new FileEditorInput((IFile)element);
}
if (element instanceof ILineBreakpoint) {
return new FileEditorInput((IFile)((ILineBreakpoint)element).getMarker().getResource());
}
return null;
}
}