blob: 513bad3df3f26697ab124d9a43e6cda5bd877cd3 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2009 STMicroelectronics.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Xavier Raynaud <xavier.raynaud@st.com> - initial API and implementation
*******************************************************************************/
package org.eclipse.linuxtools.internal.gprof.view.fields;
import org.eclipse.linuxtools.dataviewers.abstractviewers.AbstractSTDataViewersField;
import org.eclipse.linuxtools.dataviewers.charts.provider.IChartField;
import org.eclipse.linuxtools.internal.gprof.Messages;
import org.eclipse.linuxtools.internal.gprof.view.GmonView;
import org.eclipse.linuxtools.internal.gprof.view.histogram.CGArc;
import org.eclipse.linuxtools.internal.gprof.view.histogram.CGCategory;
import org.eclipse.linuxtools.internal.gprof.view.histogram.HistFunction;
import org.eclipse.linuxtools.internal.gprof.view.histogram.HistRoot;
import org.eclipse.linuxtools.internal.gprof.view.histogram.TreeElement;
import org.eclipse.swt.graphics.Color;
/**
* Column "calls" of displayed elements
*
* @author Xavier Raynaud <xavier.raynaud@st.com>
*/
public class CallsProfField extends AbstractSTDataViewersField implements IChartField {
@Override
public int compare(Object obj1, Object obj2) {
TreeElement e1 = (TreeElement) obj1;
TreeElement e2 = (TreeElement) obj2;
int s1 = e1.getCalls();
int s2 = e2.getCalls();
return s1 - s2;
}
@Override
public String getColumnHeaderText() {
return Messages.CallsProfField_CALLS;
}
@Override
public String getColumnHeaderTooltip() {
return null;
}
@Override
public String getToolTipText(Object element) {
if (element instanceof HistRoot) {
return Messages.CallsProfField_TOTAL_NUMBER_OF_FUNCTION_CALLS;
} else if (element instanceof HistFunction) {
String format = Messages.CallsProfField_INVOCATION_NUMBER;
String s = String.format(format, ((HistFunction) element).getName());
return s;
} else if (element instanceof CGCategory) {
CGCategory cat = (CGCategory) element;
if (CGCategory.CHILDREN.equals(cat.getName())) {
String format = Messages.CallsProfField_TOTAL_CALL_NUMBER_BY_FUNCTION;
String s = String.format(format, cat.getParent().getName());
return s;
} else {
String format = Messages.CallsProfField_INVOCATION_NUMBER;
String s = String.format(format, cat.getParent().getName());
return s;
}
} else if (element instanceof CGArc) {
CGArc cgarc = (CGArc) element;
if (CGCategory.CHILDREN.equals(cgarc.getParent().getName())) {
String format = Messages.CallsProfField_FUNCTION_CALL_NUMBER_BY_FUNCTION;
String s = String.format(format, cgarc.getParent().getParent().getName(), cgarc.getFunctionName());
return s;
} else {
String format = Messages.CallsProfField_FUNCTION_CALL_NUMBER_BY_FUNCTION;
String s = String.format(format, cgarc.getFunctionName(), cgarc.getParent().getParent().getName());
return s;
}
}
return null;
}
@Override
public String getValue(Object obj) {
TreeElement e = (TreeElement) obj;
int i = e.getCalls();
if (i == -1)
return ""; //$NON-NLS-1$
String ret = String.valueOf(i);
return ret;
}
@Override
public Color getBackground(Object element) {
return GmonView.getBackground(element);
}
@Override
public Number getNumber(Object obj) {
TreeElement e = (TreeElement) obj;
int i = e.getCalls();
if (i == -1) {
return 0L;
}
return i;
}
}