Newer
Older
org.ntlab.reverseDebugger / org.ntlab.reverseDebugger / src / org / ntlab / reverseDebugger / ObjectFlowAliasLabelProvider.java
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);
	}
}