Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'valgrind/org.eclipse.linuxtools.valgrind.cachegrind/src/org/eclipse/linuxtools/internal/valgrind/cachegrind/CachegrindViewPart.java')
-rw-r--r--valgrind/org.eclipse.linuxtools.valgrind.cachegrind/src/org/eclipse/linuxtools/internal/valgrind/cachegrind/CachegrindViewPart.java594
1 files changed, 297 insertions, 297 deletions
diff --git a/valgrind/org.eclipse.linuxtools.valgrind.cachegrind/src/org/eclipse/linuxtools/internal/valgrind/cachegrind/CachegrindViewPart.java b/valgrind/org.eclipse.linuxtools.valgrind.cachegrind/src/org/eclipse/linuxtools/internal/valgrind/cachegrind/CachegrindViewPart.java
index f9f21a06be..8bc2920013 100644
--- a/valgrind/org.eclipse.linuxtools.valgrind.cachegrind/src/org/eclipse/linuxtools/internal/valgrind/cachegrind/CachegrindViewPart.java
+++ b/valgrind/org.eclipse.linuxtools.valgrind.cachegrind/src/org/eclipse/linuxtools/internal/valgrind/cachegrind/CachegrindViewPart.java
@@ -54,301 +54,301 @@ import org.eclipse.ui.part.ViewPart;
public class CachegrindViewPart extends ViewPart implements IValgrindToolView {
- private CachegrindOutput[] outputs;
- private TreeViewer viewer;
-
- private static final int COLUMN_SIZE = 75;
- private CachegrindLabelProvider labelProvider;
- private CachegrindTreeContentProvider contentProvider;
- private IDoubleClickListener doubleClickListener;
- private ExpandAction expandAction;
- private CollapseAction collapseAction;
-
- // Events - Cache
- private static final String IR = "Ir"; //$NON-NLS-1$
- private static final String I1MR = "I1mr"; //$NON-NLS-1$
- private static final String I2MR = "I2mr"; //$NON-NLS-1$
- private static final String DR = "Dr"; //$NON-NLS-1$
- private static final String D1MR = "D1mr"; //$NON-NLS-1$
- private static final String D2MR = "D2mr"; //$NON-NLS-1$
- private static final String DW = "Dw"; //$NON-NLS-1$
- private static final String D1MW = "D1mw"; //$NON-NLS-1$
- private static final String D2MW = "D2mw"; //$NON-NLS-1$
-
- // Events - Branch
- private static final String BC = "Bc"; //$NON-NLS-1$
- private static final String BCM = "Bcm"; //$NON-NLS-1$
- private static final String BI = "Bi"; //$NON-NLS-1$
- private static final String BIM = "Bim"; //$NON-NLS-1$
-
- @Override
- public void createPartControl(Composite parent) {
- Composite top = new Composite(parent, SWT.NONE);
- GridLayout topLayout = new GridLayout();
- topLayout.marginHeight = topLayout.marginWidth = 0;
- top.setLayout(topLayout);
- top.setLayoutData(new GridData(GridData.FILL_BOTH));
-
- viewer = new TreeViewer(top, SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL
- | SWT.FULL_SELECTION);
-
- labelProvider = new CachegrindLabelProvider();
- ColumnViewerToolTipSupport.enableFor(viewer);
-
- Tree tree = viewer.getTree();
- tree.setHeaderVisible(true);
- tree.setLinesVisible(true);
- tree.setLayoutData(new GridData(GridData.FILL_BOTH));
-
- TreeViewerColumn column = new TreeViewerColumn(viewer, SWT.NONE);
- column.getColumn().setText(Messages.getString("CachegrindViewPart.Location")); //$NON-NLS-1$
- column.getColumn().setWidth(COLUMN_SIZE * 4);
- column.getColumn().setResizable(true);
- column.getColumn().addSelectionListener(getHeaderListener());
- column.setLabelProvider(labelProvider);
-
- contentProvider = new CachegrindTreeContentProvider();
- viewer.setContentProvider(contentProvider);
- viewer.setLabelProvider(labelProvider);
- viewer.setAutoExpandLevel(2);
- doubleClickListener = new IDoubleClickListener() {
- @Override
- public void doubleClick(DoubleClickEvent event) {
- Object selection = ((StructuredSelection) event.getSelection()).getFirstElement();
- String path = null;
- int line = 0;
- if (selection instanceof CachegrindFile) {
- path = ((CachegrindFile) selection).getPath();
- } else if (selection instanceof CachegrindLine) {
- CachegrindLine element = (CachegrindLine) selection;
- CachegrindFile file = (CachegrindFile) element.getParent().getParent();
- path = file.getPath();
- line = element.getLine();
- } else if (selection instanceof CachegrindFunction) {
- CachegrindFunction function = (CachegrindFunction) selection;
- path = ((CachegrindFile) function.getParent()).getPath();
- if (function.getModel() instanceof ISourceReference) {
- ISourceReference model = (ISourceReference) function.getModel();
- try {
- ISourceRange sr = model.getSourceRange();
- if (sr != null) {
- line = sr.getStartLine();
- }
- } catch (CModelException e) {
- e.printStackTrace();
- }
- }
- }
- if (path != null) {
- try {
- ProfileUIUtils.openEditorAndSelect(path, line);
- } catch (PartInitException|BadLocationException e) {
- e.printStackTrace();
- }
- }
- }
- };
- viewer.addDoubleClickListener(doubleClickListener);
-
- expandAction = new ExpandAction(viewer);
- collapseAction = new CollapseAction(viewer);
-
- MenuManager manager = new MenuManager();
- manager.addMenuListener(new IMenuListener() {
- @Override
- public void menuAboutToShow(IMenuManager manager) {
- ITreeSelection selection = (ITreeSelection) viewer.getSelection();
- ICachegrindElement element = (ICachegrindElement) selection.getFirstElement();
- if (contentProvider.hasChildren(element)) {
- manager.add(expandAction);
- manager.add(collapseAction);
- }
- }
- });
-
- manager.setRemoveAllWhenShown(true);
- Menu contextMenu = manager.createContextMenu(viewer.getTree());
- viewer.getControl().setMenu(contextMenu);
- }
-
- @Override
- public void setFocus() {
- viewer.getTree().setFocus();
- }
-
- @Override
- public IAction[] getToolbarActions() {
- return null;
- }
-
- @Override
- public void refreshView() {
- if (outputs != null && outputs.length > 0) {
- String[] events = outputs[0].getEvents();
- for (int i = 0; i < events.length; i++) {
- TreeViewerColumn column = new TreeViewerColumn(viewer, SWT.NONE);
- column.getColumn().setText(events[i]);
- column.getColumn().setWidth(COLUMN_SIZE);
- column.getColumn().setToolTipText(getFullEventName(events[i]));
- column.getColumn().setResizable(true);
- column.getColumn().addSelectionListener(getHeaderListener());
- column.setLabelProvider(labelProvider);
- }
- viewer.setInput(outputs);
- viewer.getTree().layout(true);
- }
- }
-
- public void setOutputs(CachegrindOutput[] outputs) {
- this.outputs = outputs;
- }
-
- public CachegrindOutput[] getOutputs() {
- return outputs;
- }
-
- public TreeViewer getViewer() {
- return viewer;
- }
-
- public IDoubleClickListener getDoubleClickListener() {
- return doubleClickListener;
- }
-
- private SelectionListener getHeaderListener() {
- return new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- TreeColumn column = (TreeColumn) e.widget;
- Tree tree = viewer.getTree();
- if (column.equals(tree.getSortColumn())) {
- int direction = tree.getSortDirection() == SWT.UP ? SWT.DOWN
- : SWT.UP;
- tree.setSortDirection(direction);
- } else {
- tree.setSortDirection(SWT.UP);
- }
- tree.setSortColumn(column);
- viewer.setComparator(new ViewerComparator() {
- @Override
- public int compare(Viewer viewer, Object e1, Object e2) {
- Tree tree = ((TreeViewer) viewer).getTree();
- int direction = tree.getSortDirection();
- ICachegrindElement o1 = (ICachegrindElement) e1;
- ICachegrindElement o2 = (ICachegrindElement) e2;
- long result = 0;
-
- int sortIndex = Arrays.asList(tree.getColumns()).indexOf(tree.getSortColumn());
- if (sortIndex == 0) { // use compareTo
- result = o1.compareTo(o2);
- }
- else {
- long[] v1 = null;
- long[] v2 = null;
- if (o1 instanceof CachegrindFunction && o2 instanceof CachegrindFunction) {
- v1 = ((CachegrindFunction) o1).getTotals();
- v2 = ((CachegrindFunction) o2).getTotals();
- }
- else if (o1 instanceof CachegrindLine && o2 instanceof CachegrindLine) {
- v1 = ((CachegrindLine) o1).getValues();
- v2 = ((CachegrindLine) o2).getValues();
- }
- else if (o1 instanceof CachegrindOutput && o2 instanceof CachegrindOutput) {
- v1 = ((CachegrindOutput) o1).getSummary();
- v2 = ((CachegrindOutput) o2).getSummary();
- }
-
- if (v1 != null && v2 != null) {
- result = v1[sortIndex - 1] - v2[sortIndex - 1];
- }
- }
-
- // ascending or descending
- result = direction == SWT.UP ? result : -result;
-
- // overflow check
- if (result > Integer.MAX_VALUE) {
- result = Integer.MAX_VALUE;
- } else if (result < Integer.MIN_VALUE) {
- result = Integer.MIN_VALUE;
- }
-
- return (int) result;
- }
- });
- }
- };
- }
-
- private String getFullEventName(String event) {
- String result = event;
- if (event.equals(IR)) {
- result = Messages.getString("CachegrindViewPart.Ir_long"); //$NON-NLS-1$
- } else if (event.equals(I1MR)) {
- result = Messages.getString("CachegrindViewPart.I1mr_long"); //$NON-NLS-1$
- } else if (event.equals(I2MR)) {
- result = Messages.getString("CachegrindViewPart.I2mr_long"); //$NON-NLS-1$
- } else if (event.equals(DR)) {
- result = Messages.getString("CachegrindViewPart.Dr_long"); //$NON-NLS-1$
- } else if (event.equals(D1MR)) {
- result = Messages.getString("CachegrindViewPart.D1mr_long"); //$NON-NLS-1$
- } else if (event.equals(D2MR)) {
- result = Messages.getString("CachegrindViewPart.D2mr_long"); //$NON-NLS-1$
- } else if (event.equals(DW)) {
- result = Messages.getString("CachegrindViewPart.Dw_long"); //$NON-NLS-1$
- } else if (event.equals(D1MW)) {
- result = Messages.getString("CachegrindViewPart.D1mw_long"); //$NON-NLS-1$
- } else if (event.equals(D2MW)) {
- result = Messages.getString("CachegrindViewPart.D2mw_long"); //$NON-NLS-1$
- } else if (event.equals(BC)) {
- result = Messages.getString("CachegrindViewPart.Bc_long"); //$NON-NLS-1$
- } else if (event.equals(BCM)) {
- result = Messages.getString("CachegrindViewPart.Bcm_long"); //$NON-NLS-1$
- } else if (event.equals(BI)) {
- result = Messages.getString("CachegrindViewPart.Bi_long"); //$NON-NLS-1$
- } else if (event.equals(BIM)) {
- result = Messages.getString("CachegrindViewPart.Bim_long"); //$NON-NLS-1$
- }
- return result;
- }
-
- protected static class CachegrindTreeContentProvider implements ITreeContentProvider {
-
- @Override
- public Object[] getChildren(Object parentElement) {
- Object[] result = null;
- if (parentElement instanceof CachegrindOutput[]) {
- result = (CachegrindOutput[]) parentElement;
- }
- else if (parentElement instanceof ICachegrindElement) {
- result = ((ICachegrindElement) parentElement).getChildren();
- }
- return result;
- }
-
- @Override
- public Object getParent(Object element) {
- return ((ICachegrindElement) element).getParent();
- }
-
- @Override
- public boolean hasChildren(Object element) {
- ICachegrindElement[] children = (ICachegrindElement[]) getChildren(element);
- return children != null && children.length > 0;
- }
-
- @Override
- public Object[] getElements(Object inputElement) {
- return getChildren(inputElement);
- }
-
- @Override
- public void dispose() {
- }
-
- @Override
- public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
- }
-
- }
+ private CachegrindOutput[] outputs;
+ private TreeViewer viewer;
+
+ private static final int COLUMN_SIZE = 75;
+ private CachegrindLabelProvider labelProvider;
+ private CachegrindTreeContentProvider contentProvider;
+ private IDoubleClickListener doubleClickListener;
+ private ExpandAction expandAction;
+ private CollapseAction collapseAction;
+
+ // Events - Cache
+ private static final String IR = "Ir"; //$NON-NLS-1$
+ private static final String I1MR = "I1mr"; //$NON-NLS-1$
+ private static final String I2MR = "I2mr"; //$NON-NLS-1$
+ private static final String DR = "Dr"; //$NON-NLS-1$
+ private static final String D1MR = "D1mr"; //$NON-NLS-1$
+ private static final String D2MR = "D2mr"; //$NON-NLS-1$
+ private static final String DW = "Dw"; //$NON-NLS-1$
+ private static final String D1MW = "D1mw"; //$NON-NLS-1$
+ private static final String D2MW = "D2mw"; //$NON-NLS-1$
+
+ // Events - Branch
+ private static final String BC = "Bc"; //$NON-NLS-1$
+ private static final String BCM = "Bcm"; //$NON-NLS-1$
+ private static final String BI = "Bi"; //$NON-NLS-1$
+ private static final String BIM = "Bim"; //$NON-NLS-1$
+
+ @Override
+ public void createPartControl(Composite parent) {
+ Composite top = new Composite(parent, SWT.NONE);
+ GridLayout topLayout = new GridLayout();
+ topLayout.marginHeight = topLayout.marginWidth = 0;
+ top.setLayout(topLayout);
+ top.setLayoutData(new GridData(GridData.FILL_BOTH));
+
+ viewer = new TreeViewer(top, SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL
+ | SWT.FULL_SELECTION);
+
+ labelProvider = new CachegrindLabelProvider();
+ ColumnViewerToolTipSupport.enableFor(viewer);
+
+ Tree tree = viewer.getTree();
+ tree.setHeaderVisible(true);
+ tree.setLinesVisible(true);
+ tree.setLayoutData(new GridData(GridData.FILL_BOTH));
+
+ TreeViewerColumn column = new TreeViewerColumn(viewer, SWT.NONE);
+ column.getColumn().setText(Messages.getString("CachegrindViewPart.Location")); //$NON-NLS-1$
+ column.getColumn().setWidth(COLUMN_SIZE * 4);
+ column.getColumn().setResizable(true);
+ column.getColumn().addSelectionListener(getHeaderListener());
+ column.setLabelProvider(labelProvider);
+
+ contentProvider = new CachegrindTreeContentProvider();
+ viewer.setContentProvider(contentProvider);
+ viewer.setLabelProvider(labelProvider);
+ viewer.setAutoExpandLevel(2);
+ doubleClickListener = new IDoubleClickListener() {
+ @Override
+ public void doubleClick(DoubleClickEvent event) {
+ Object selection = ((StructuredSelection) event.getSelection()).getFirstElement();
+ String path = null;
+ int line = 0;
+ if (selection instanceof CachegrindFile) {
+ path = ((CachegrindFile) selection).getPath();
+ } else if (selection instanceof CachegrindLine) {
+ CachegrindLine element = (CachegrindLine) selection;
+ CachegrindFile file = (CachegrindFile) element.getParent().getParent();
+ path = file.getPath();
+ line = element.getLine();
+ } else if (selection instanceof CachegrindFunction) {
+ CachegrindFunction function = (CachegrindFunction) selection;
+ path = ((CachegrindFile) function.getParent()).getPath();
+ if (function.getModel() instanceof ISourceReference) {
+ ISourceReference model = (ISourceReference) function.getModel();
+ try {
+ ISourceRange sr = model.getSourceRange();
+ if (sr != null) {
+ line = sr.getStartLine();
+ }
+ } catch (CModelException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+ if (path != null) {
+ try {
+ ProfileUIUtils.openEditorAndSelect(path, line);
+ } catch (PartInitException|BadLocationException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+ };
+ viewer.addDoubleClickListener(doubleClickListener);
+
+ expandAction = new ExpandAction(viewer);
+ collapseAction = new CollapseAction(viewer);
+
+ MenuManager manager = new MenuManager();
+ manager.addMenuListener(new IMenuListener() {
+ @Override
+ public void menuAboutToShow(IMenuManager manager) {
+ ITreeSelection selection = (ITreeSelection) viewer.getSelection();
+ ICachegrindElement element = (ICachegrindElement) selection.getFirstElement();
+ if (contentProvider.hasChildren(element)) {
+ manager.add(expandAction);
+ manager.add(collapseAction);
+ }
+ }
+ });
+
+ manager.setRemoveAllWhenShown(true);
+ Menu contextMenu = manager.createContextMenu(viewer.getTree());
+ viewer.getControl().setMenu(contextMenu);
+ }
+
+ @Override
+ public void setFocus() {
+ viewer.getTree().setFocus();
+ }
+
+ @Override
+ public IAction[] getToolbarActions() {
+ return null;
+ }
+
+ @Override
+ public void refreshView() {
+ if (outputs != null && outputs.length > 0) {
+ String[] events = outputs[0].getEvents();
+ for (int i = 0; i < events.length; i++) {
+ TreeViewerColumn column = new TreeViewerColumn(viewer, SWT.NONE);
+ column.getColumn().setText(events[i]);
+ column.getColumn().setWidth(COLUMN_SIZE);
+ column.getColumn().setToolTipText(getFullEventName(events[i]));
+ column.getColumn().setResizable(true);
+ column.getColumn().addSelectionListener(getHeaderListener());
+ column.setLabelProvider(labelProvider);
+ }
+ viewer.setInput(outputs);
+ viewer.getTree().layout(true);
+ }
+ }
+
+ public void setOutputs(CachegrindOutput[] outputs) {
+ this.outputs = outputs;
+ }
+
+ public CachegrindOutput[] getOutputs() {
+ return outputs;
+ }
+
+ public TreeViewer getViewer() {
+ return viewer;
+ }
+
+ public IDoubleClickListener getDoubleClickListener() {
+ return doubleClickListener;
+ }
+
+ private SelectionListener getHeaderListener() {
+ return new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ TreeColumn column = (TreeColumn) e.widget;
+ Tree tree = viewer.getTree();
+ if (column.equals(tree.getSortColumn())) {
+ int direction = tree.getSortDirection() == SWT.UP ? SWT.DOWN
+ : SWT.UP;
+ tree.setSortDirection(direction);
+ } else {
+ tree.setSortDirection(SWT.UP);
+ }
+ tree.setSortColumn(column);
+ viewer.setComparator(new ViewerComparator() {
+ @Override
+ public int compare(Viewer viewer, Object e1, Object e2) {
+ Tree tree = ((TreeViewer) viewer).getTree();
+ int direction = tree.getSortDirection();
+ ICachegrindElement o1 = (ICachegrindElement) e1;
+ ICachegrindElement o2 = (ICachegrindElement) e2;
+ long result = 0;
+
+ int sortIndex = Arrays.asList(tree.getColumns()).indexOf(tree.getSortColumn());
+ if (sortIndex == 0) { // use compareTo
+ result = o1.compareTo(o2);
+ }
+ else {
+ long[] v1 = null;
+ long[] v2 = null;
+ if (o1 instanceof CachegrindFunction && o2 instanceof CachegrindFunction) {
+ v1 = ((CachegrindFunction) o1).getTotals();
+ v2 = ((CachegrindFunction) o2).getTotals();
+ }
+ else if (o1 instanceof CachegrindLine && o2 instanceof CachegrindLine) {
+ v1 = ((CachegrindLine) o1).getValues();
+ v2 = ((CachegrindLine) o2).getValues();
+ }
+ else if (o1 instanceof CachegrindOutput && o2 instanceof CachegrindOutput) {
+ v1 = ((CachegrindOutput) o1).getSummary();
+ v2 = ((CachegrindOutput) o2).getSummary();
+ }
+
+ if (v1 != null && v2 != null) {
+ result = v1[sortIndex - 1] - v2[sortIndex - 1];
+ }
+ }
+
+ // ascending or descending
+ result = direction == SWT.UP ? result : -result;
+
+ // overflow check
+ if (result > Integer.MAX_VALUE) {
+ result = Integer.MAX_VALUE;
+ } else if (result < Integer.MIN_VALUE) {
+ result = Integer.MIN_VALUE;
+ }
+
+ return (int) result;
+ }
+ });
+ }
+ };
+ }
+
+ private String getFullEventName(String event) {
+ String result = event;
+ if (event.equals(IR)) {
+ result = Messages.getString("CachegrindViewPart.Ir_long"); //$NON-NLS-1$
+ } else if (event.equals(I1MR)) {
+ result = Messages.getString("CachegrindViewPart.I1mr_long"); //$NON-NLS-1$
+ } else if (event.equals(I2MR)) {
+ result = Messages.getString("CachegrindViewPart.I2mr_long"); //$NON-NLS-1$
+ } else if (event.equals(DR)) {
+ result = Messages.getString("CachegrindViewPart.Dr_long"); //$NON-NLS-1$
+ } else if (event.equals(D1MR)) {
+ result = Messages.getString("CachegrindViewPart.D1mr_long"); //$NON-NLS-1$
+ } else if (event.equals(D2MR)) {
+ result = Messages.getString("CachegrindViewPart.D2mr_long"); //$NON-NLS-1$
+ } else if (event.equals(DW)) {
+ result = Messages.getString("CachegrindViewPart.Dw_long"); //$NON-NLS-1$
+ } else if (event.equals(D1MW)) {
+ result = Messages.getString("CachegrindViewPart.D1mw_long"); //$NON-NLS-1$
+ } else if (event.equals(D2MW)) {
+ result = Messages.getString("CachegrindViewPart.D2mw_long"); //$NON-NLS-1$
+ } else if (event.equals(BC)) {
+ result = Messages.getString("CachegrindViewPart.Bc_long"); //$NON-NLS-1$
+ } else if (event.equals(BCM)) {
+ result = Messages.getString("CachegrindViewPart.Bcm_long"); //$NON-NLS-1$
+ } else if (event.equals(BI)) {
+ result = Messages.getString("CachegrindViewPart.Bi_long"); //$NON-NLS-1$
+ } else if (event.equals(BIM)) {
+ result = Messages.getString("CachegrindViewPart.Bim_long"); //$NON-NLS-1$
+ }
+ return result;
+ }
+
+ protected static class CachegrindTreeContentProvider implements ITreeContentProvider {
+
+ @Override
+ public Object[] getChildren(Object parentElement) {
+ Object[] result = null;
+ if (parentElement instanceof CachegrindOutput[]) {
+ result = (CachegrindOutput[]) parentElement;
+ }
+ else if (parentElement instanceof ICachegrindElement) {
+ result = ((ICachegrindElement) parentElement).getChildren();
+ }
+ return result;
+ }
+
+ @Override
+ public Object getParent(Object element) {
+ return ((ICachegrindElement) element).getParent();
+ }
+
+ @Override
+ public boolean hasChildren(Object element) {
+ ICachegrindElement[] children = (ICachegrindElement[]) getChildren(element);
+ return children != null && children.length > 0;
+ }
+
+ @Override
+ public Object[] getElements(Object inputElement) {
+ return getChildren(inputElement);
+ }
+
+ @Override
+ public void dispose() {
+ }
+
+ @Override
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ }
+
+ }
}

Back to the top