blob: 47ab8dcac45f45a86c88c496c1402ec5caedce5e (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
/*******************************************************************************
* Copyright (c) 2008 Red Hat, Inc.
* 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:
* Elliott Baron <ebaron@redhat.com> - initial API and implementation
*******************************************************************************/
package org.eclipse.linuxtools.valgrind.massif;
import org.eclipse.core.resources.IFile;
import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.debug.core.model.ISourceLocator;
import org.eclipse.debug.core.sourcelookup.ISourceLookupDirector;
import org.eclipse.jface.text.BadLocationException;
import org.eclipse.linuxtools.profiling.ui.ProfileUIUtils;
import org.eclipse.linuxtools.valgrind.core.PluginConstants;
import org.eclipse.swt.graphics.FontMetrics;
import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.widgets.Control;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.osgi.framework.BundleContext;
public class MassifPlugin extends AbstractUIPlugin {
// The plug-in ID
public static final String PLUGIN_ID = "org.eclipse.linuxtools.valgrind.massif"; //$NON-NLS-1$
public static final String EDITOR_ID = PLUGIN_ID + ".chartEditor"; //$NON-NLS-1$
// The shared instance
private static MassifPlugin plugin;
protected ILaunchConfiguration config;
// Needed for source lookup on massif output, since massif only supplies filenames
// and not full paths
protected ISourceLocator locator;
public static final String TOOL_ID = PluginConstants.LAUNCH_PLUGIN_ID + ".massif"; //$NON-NLS-1$
/**
* The constructor
*/
public MassifPlugin() {
}
/*
* (non-Javadoc)
* @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
*/
public void start(BundleContext context) throws Exception {
super.start(context);
plugin = this;
}
/*
* (non-Javadoc)
* @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
*/
public void stop(BundleContext context) throws Exception {
plugin = null;
super.stop(context);
}
public static FontMetrics getFontMetrics(Control control) {
GC gc = new GC(control);
gc.setFont(control.getFont());
FontMetrics fontMetrics = gc.getFontMetrics();
gc.dispose();
return fontMetrics;
}
public void openEditorForNode(MassifHeapTreeNode element) {
// do source lookup
ISourceLocator sourceLocator = MassifPlugin.getDefault().getSourceLocator();
if (sourceLocator instanceof ISourceLookupDirector) {
Object obj = ((ISourceLookupDirector) sourceLocator).getSourceElement(element.getFilename());
if (obj != null && obj instanceof IFile) {
try {
ProfileUIUtils.openEditorAndSelect(((IFile) obj).getLocation().toOSString(), element.getLine());
} catch (PartInitException e) {
e.printStackTrace();
} catch (BadLocationException e) {
e.printStackTrace();
}
}
}
}
public ISourceLocator getSourceLocator() {
return locator;
}
protected void setSourceLocator(ISourceLocator locator) {
this.locator = locator;
}
public ILaunchConfiguration getConfig() {
return config;
}
public void setConfig(ILaunchConfiguration config) {
this.config = config;
}
/**
* Returns the shared instance
*
* @return the shared instance
*/
public static MassifPlugin getDefault() {
return plugin;
}
}
|