Search in sources :

Example 1 with ISourceReference

use of org.eclipse.cdt.core.model.ISourceReference in project linuxtools by eclipse.

the class CachegrindViewPart method createPartControl.

@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);
    // $NON-NLS-1$
    column.getColumn().setText(Messages.getString("CachegrindViewPart.Location"));
    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 = 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 e1) {
                    e1.printStackTrace();
                }
            }
        }
        if (path != null) {
            try {
                ProfileUIUtils.openEditorAndSelect(path, line, ValgrindUIPlugin.getDefault().getProfiledProject());
            } catch (BadLocationException | CoreException e2) {
                e2.printStackTrace();
            }
        }
    };
    viewer.addDoubleClickListener(doubleClickListener);
    expandAction = new ExpandAction(viewer);
    collapseAction = new CollapseAction(viewer);
    MenuManager manager = new MenuManager();
    manager.addMenuListener(manager1 -> {
        ITreeSelection selection = (ITreeSelection) viewer.getSelection();
        ICachegrindElement element = (ICachegrindElement) selection.getFirstElement();
        if (contentProvider.hasChildren(element)) {
            manager1.add(expandAction);
            manager1.add(collapseAction);
        }
    });
    manager.setRemoveAllWhenShown(true);
    Menu contextMenu = manager.createContextMenu(viewer.getTree());
    viewer.getControl().setMenu(contextMenu);
}
Also used : TreeViewer(org.eclipse.jface.viewers.TreeViewer) CachegrindFunction(org.eclipse.linuxtools.internal.valgrind.cachegrind.model.CachegrindFunction) CModelException(org.eclipse.cdt.core.model.CModelException) StructuredSelection(org.eclipse.jface.viewers.StructuredSelection) GridLayout(org.eclipse.swt.layout.GridLayout) CachegrindFile(org.eclipse.linuxtools.internal.valgrind.cachegrind.model.CachegrindFile) Tree(org.eclipse.swt.widgets.Tree) CachegrindLine(org.eclipse.linuxtools.internal.valgrind.cachegrind.model.CachegrindLine) Menu(org.eclipse.swt.widgets.Menu) ISourceRange(org.eclipse.cdt.core.model.ISourceRange) ICachegrindElement(org.eclipse.linuxtools.internal.valgrind.cachegrind.model.ICachegrindElement) Composite(org.eclipse.swt.widgets.Composite) TreeViewerColumn(org.eclipse.jface.viewers.TreeViewerColumn) ITreeSelection(org.eclipse.jface.viewers.ITreeSelection) CoreException(org.eclipse.core.runtime.CoreException) GridData(org.eclipse.swt.layout.GridData) MenuManager(org.eclipse.jface.action.MenuManager) ExpandAction(org.eclipse.linuxtools.valgrind.ui.ExpandAction) ISourceReference(org.eclipse.cdt.core.model.ISourceReference) CollapseAction(org.eclipse.linuxtools.valgrind.ui.CollapseAction) BadLocationException(org.eclipse.jface.text.BadLocationException)

Aggregations

CModelException (org.eclipse.cdt.core.model.CModelException)1 ISourceRange (org.eclipse.cdt.core.model.ISourceRange)1 ISourceReference (org.eclipse.cdt.core.model.ISourceReference)1 CoreException (org.eclipse.core.runtime.CoreException)1 MenuManager (org.eclipse.jface.action.MenuManager)1 BadLocationException (org.eclipse.jface.text.BadLocationException)1 ITreeSelection (org.eclipse.jface.viewers.ITreeSelection)1 StructuredSelection (org.eclipse.jface.viewers.StructuredSelection)1 TreeViewer (org.eclipse.jface.viewers.TreeViewer)1 TreeViewerColumn (org.eclipse.jface.viewers.TreeViewerColumn)1 CachegrindFile (org.eclipse.linuxtools.internal.valgrind.cachegrind.model.CachegrindFile)1 CachegrindFunction (org.eclipse.linuxtools.internal.valgrind.cachegrind.model.CachegrindFunction)1 CachegrindLine (org.eclipse.linuxtools.internal.valgrind.cachegrind.model.CachegrindLine)1 ICachegrindElement (org.eclipse.linuxtools.internal.valgrind.cachegrind.model.ICachegrindElement)1 CollapseAction (org.eclipse.linuxtools.valgrind.ui.CollapseAction)1 ExpandAction (org.eclipse.linuxtools.valgrind.ui.ExpandAction)1 GridData (org.eclipse.swt.layout.GridData)1 GridLayout (org.eclipse.swt.layout.GridLayout)1 Composite (org.eclipse.swt.widgets.Composite)1 Menu (org.eclipse.swt.widgets.Menu)1