package org.ntlab.reverseDebugger;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.swt.graphics.Image;
import org.eclipse.ui.ISharedImages;
import org.eclipse.ui.PlatformUI;
import org.ntlab.onlineAccessor.JDIInstanceMethodCaller;
import com.sun.jdi.ClassNotLoadedException;
import com.sun.jdi.IncompatibleThreadStateException;
import com.sun.jdi.IntegerValue;
import com.sun.jdi.InvalidTypeException;
import com.sun.jdi.InvocationException;
import com.sun.jdi.StringReference;
@SuppressWarnings("restriction")
public class ObjectFlowAliasLabelProvider extends LabelProvider implements ITableLabelProvider {
@Override
public String getColumnText(Object element, int columnIndex) {
if (element instanceof JDIInstanceMethodCaller) {
JDIInstanceMethodCaller mc = (JDIInstanceMethodCaller)element;
if (mc.getReceiver() == null) {
return "";
}
try {
switch (columnIndex) {
case 0:
return ((StringReference)mc.callInstanceMethod("getObjectId")).value();
case 1:
return ((StringReference)mc.callInstanceMethod("getClassName")).value();
case 2:
return ((StringReference)mc.callInstanceMethod("getMethodExecutionClassName")).value();
case 3:
return String.valueOf(((IntegerValue)mc.callInstanceMethod("getLineNo")).value());
case 4:
return ((StringReference)mc.callInstanceMethod("getStatementType")).value();
case 5:
return ((StringReference)mc.callInstanceMethod("getOccurrenceText")).value();
case 6:
return ((StringReference)mc.callInstanceMethod("getStatementSignature")).value();
}
} catch (InvalidTypeException | ClassNotLoadedException
| InvocationException | IncompatibleThreadStateException e) {
e.printStackTrace();
}
}
return "テスト用テキスト" + columnIndex;
}
@Override
public Image getColumnImage(Object element, int columnIndex) {
return getImage(element);
}
@Override
public Image getImage(Object element) {
return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_ELEMENT);
}
}