sysperfana/perfinvestigator/com.nokia.carbide.cpp.pi.irq/src/com/nokia/carbide/cpp/pi/irq/SwiFunctionLabelProvider.java
author Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
Tue, 24 Aug 2010 14:01:48 +0300
changeset 16 72f198be1c1d
parent 5 844b047e260d
permissions -rw-r--r--
Crash Analyser Carbide Extension 1.4.0

/*
 * Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). 
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
 * which accompanies this distribution, and is available
 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
 *
 * Initial Contributors:
 * Nokia Corporation - initial contribution.
 *
 * Contributors:
 *
 * Description: 
 *
 */

package com.nokia.carbide.cpp.pi.irq;

import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Table;
import com.nokia.carbide.cpp.internal.pi.visual.GenericTable;

/**
 * LabelProvider for software function table
 */
public class SwiFunctionLabelProvider extends LabelProvider implements
		ITableLabelProvider {

	/* function table */
	Table table;

	/**
	 * Constructor
	 * 
	 * @param table
	 *            table
	 */
	public SwiFunctionLabelProvider(Table table) {
		super();
		this.table = table;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(java.lang
	 * .Object, int)
	 */
	public String getColumnText(Object element, int columnIndex) {
		int columnId = ((Integer) table.getColumn(columnIndex).getData())
				.intValue();

		switch (columnId) {
		// name of the function
		case GenericTable.COLUMN_ID_SWI_FUNCTION:

			if (element instanceof IrqSampleTypeWrapper) {
				IrqSampleTypeWrapper item = (IrqSampleTypeWrapper) element;
				if (item.getPrototypeSample().getFunction() != null
						&& item.getPrototypeSample().getFunction().getFunctionName() != null) {
					return item.getPrototypeSample().getFunction().getFunctionName();
				} else {
					return Messages.SwiFunctionLabelProvider_0
							+ Long.toHexString(item.getPrototypeSample()
									.getLrValue()) + Messages.SwiFunctionLabelProvider_1;
				}
			}

			// return address
		case GenericTable.COLUMN_ID_RETURN_ADDRESS:

			if (element instanceof IrqSampleTypeWrapper) {
				IrqSampleTypeWrapper item = (IrqSampleTypeWrapper) element;
				if (item.getPrototypeSample().getFunction() != null) {
					return Messages.SwiFunctionLabelProvider_2
							+ Long.toHexString(item.getPrototypeSample()
									.getFunction().getStartAddress());
				}
			}

			// count of interrupts in selection area
		case GenericTable.COLUMN_ID_SWI_COUNT:
			if (element instanceof IrqSampleTypeWrapper) {
				IrqSampleTypeWrapper profiledItem = (IrqSampleTypeWrapper) element;
				return Integer.toString(profiledItem.count);
			}
		default: {
			break;
		}
		}
		// should never get here
		return ""; //$NON-NLS-1$
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * org.eclipse.jface.viewers.ITableLabelProvider#getColumnImage(java.lang
	 * .Object, int)
	 */
	public Image getColumnImage(Object element, int columnIndex) {
		return null;
	}
}