/*
* Copyright 2015 Nokia Solutions and Networks
* Licensed under the Apache License, Version 2.0,
* see license.txt file for details.
*/
package org.robotframework.ide.eclipse.main.plugin.debug;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.debug.core.model.IDebugTarget;
import org.eclipse.debug.core.model.ILineBreakpoint;
import org.eclipse.debug.core.model.IStackFrame;
import org.eclipse.debug.core.model.IThread;
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;
import org.robotframework.ide.eclipse.main.plugin.debug.model.RobotDebugValue;
import org.robotframework.ide.eclipse.main.plugin.debug.model.RobotLineBreakpoint;
import org.robotframework.ide.eclipse.main.plugin.tableeditor.RobotFormEditor;
/**
* @author mmarzec
*
*/
public class RobotModelPresentation extends LabelProvider implements IDebugModelPresentation {
@Override
public void setAttribute(final String attribute, final Object value) {
}
@Override
public Image getImage(final Object element) {
return null;
}
@Override
public String getText(final Object element) {
try {
if (element instanceof IThread) {
return ((IThread) element).getName();
} else if (element instanceof IDebugTarget) {
return ((IDebugTarget) element).getName();
} else if (element instanceof IStackFrame) {
return ((IStackFrame) element).getName();
} else if (element instanceof RobotLineBreakpoint) {
return ((RobotLineBreakpoint) element).getLabel();
}
} catch (final CoreException e) {
e.printStackTrace();
}
return "RED";
}
@Override
public void computeDetail(final IValue value, final IValueDetailListener listener) {
if (value instanceof RobotDebugValue) {
listener.detailComputed(value, ((RobotDebugValue) value).getDetailedValue());
}
}
@Override
public IEditorInput getEditorInput(final Object element) {
if (element instanceof IFile) {
return new FileEditorInput((IFile) element);
} else if (element instanceof ILineBreakpoint) {
return new FileEditorInput((IFile) ((ILineBreakpoint) element).getMarker().getResource());
}
return null;
}
@Override
public String getEditorId(final IEditorInput input, final Object element) {
if (element instanceof IFile || element instanceof ILineBreakpoint) {
return RobotFormEditor.ID;
}
return null;
}
}