package org.erlide.debug.ui.tracing;
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.ui.IEditorInput;
import org.eclipse.ui.part.FileEditorInput;
import org.erlide.backend.debug.model.ErlangStackFrame;
import org.erlide.ui.editors.erl.ErlangEditor;
public class DebugTraceDebugModelPresentation extends LabelProvider
implements IDebugModelPresentation {
public static final String ID = "org.erlide.debug.trace.model";
@Override
public void computeDetail(final IValue value, final IValueDetailListener listener) {
String detail = "";
try {
detail = value.getValueString();
} catch (final DebugException e) {
}
listener.detailComputed(value, detail);
}
@Override
public void setAttribute(final String attribute, final Object value) {
}
@Override
public String getEditorId(final IEditorInput input, final Object element) {
if (element instanceof IFile || element instanceof ILineBreakpoint) {
return ErlangEditor.ERLANG_EDITOR_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;
}
@Override
public String getText(final Object element) {
if (element instanceof DebugTraceTarget) {
return getTargetText((DebugTraceTarget) element);
} else if (element instanceof DebugTraceProcess) {
return getDebugTraceProcessText((DebugTraceProcess) element);
} else if (element instanceof ErlangStackFrame) {
return getErlangStackFrameText((ErlangStackFrame) element);
}
return null;
}
private String getErlangStackFrameText(final ErlangStackFrame element) {
return element.toString();
}
private String getDebugTraceProcessText(final DebugTraceProcess element) {
return element.toString();
}
private String getTargetText(final DebugTraceTarget element) {
return element.toString();
}
}