Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 167995 | Differences between
and this patch

Collapse All | Expand All

(-)src/org/eclipse/tptp/trace/jvmti/internal/client/views/UIMessages.java (+10 lines)
Lines 25-30 Link Here
25
	public static String TIME_SCALE;
25
	public static String TIME_SCALE;
26
	public static String MEM_ANALYSIS_TITLE;
26
	public static String MEM_ANALYSIS_TITLE;
27
	public static String NO_THREAD_STATS;
27
	public static String NO_THREAD_STATS;
28
	public static String TI_CONTEXT_PROVIDER;
29
	public static String CANNOT_OPEN_MEM_ANALYSIS;
30
	public static String CANNOT_OPEN_THREAD_STATS;
31
	public static String CANNOT_OPEN_THREAD_STATES;
32
	public static String CANNOT_OPEN_CALL_STACK;
33
	public static String DATA_NOT_SUPPORTED;
34
	public static String EMPTY_PROFILE_SELECTION;
28
35
29
	// state strings
36
	// state strings
30
	public static String _Not_Started;
37
	public static String _Not_Started;
Lines 80-89 Link Here
80
	public static String _Delta;
87
	public static String _Delta;
81
	public static String _ShowAsPercentage;
88
	public static String _ShowAsPercentage;
82
	public static String _ShowDeltaColumns;
89
	public static String _ShowDeltaColumns;
90
	public static String _ShowCallStack;
91
	public static String _Timescale;
83
	public static String _MONITOR_OWNER;
92
	public static String _MONITOR_OWNER;
84
	public static String _TIMEOUT;
93
	public static String _TIMEOUT;
85
	public static String _OBJECT_WAITING_FOR;
94
	public static String _OBJECT_WAITING_FOR;
86
	public static String _DURATION;
95
	public static String _DURATION;
96
	public static String _UNDEFINED_GROUP;
87
97
88
	private UIMessages() {
98
	private UIMessages() {
89
		// Do not instantiate
99
		// Do not instantiate
(-)src/org/eclipse/tptp/trace/jvmti/internal/client/views/OpenMemoryAnalysisViewAction.java (+8 lines)
Lines 35-38 Link Here
35
	public String getViewID() {
35
	public String getViewID() {
36
		return VIEW_ID;
36
		return VIEW_ID;
37
	}
37
	}
38
39
	public String getErrorMsg() {
40
		return UIMessages.CANNOT_OPEN_MEM_ANALYSIS;
41
	}
42
43
	boolean acceptAgentName(String name) {
44
		return name.equals("org.eclipse.tptp.jvmti");
45
	}
38
}
46
}
(-)src/org/eclipse/tptp/trace/jvmti/internal/client/views/AllocationDetailsView.java (-22 / +26 lines)
Lines 23-29 Link Here
23
import org.eclipse.hyades.models.trace.TRCMethod;
23
import org.eclipse.hyades.models.trace.TRCMethod;
24
import org.eclipse.hyades.models.trace.TRCObjectAllocationAnnotation;
24
import org.eclipse.hyades.models.trace.TRCObjectAllocationAnnotation;
25
import org.eclipse.hyades.trace.ui.TraceViewerPage;
25
import org.eclipse.hyades.trace.ui.TraceViewerPage;
26
import org.eclipse.hyades.trace.ui.internal.util.TString;
27
import org.eclipse.hyades.trace.views.util.internal.ColumnData;
26
import org.eclipse.hyades.trace.views.util.internal.ColumnData;
28
import org.eclipse.hyades.ui.provisional.context.IContextLabelFormatProvider;
27
import org.eclipse.hyades.ui.provisional.context.IContextLabelFormatProvider;
29
import org.eclipse.hyades.ui.util.GridUtil;
28
import org.eclipse.hyades.ui.util.GridUtil;
Lines 40-47 Link Here
40
import org.eclipse.tptp.trace.jvmti.internal.client.context.TIContextProvider;
39
import org.eclipse.tptp.trace.jvmti.internal.client.context.TIContextProvider;
41
import org.eclipse.tptp.trace.jvmti.internal.client.widgets.Utils;
40
import org.eclipse.tptp.trace.jvmti.internal.client.widgets.Utils;
42
41
42
/**
43
 * Allocation Details view provides allocation info for objects
44
 * of specified type.
45
 * 
46
 * @author Ruslan A. Scherbakov
47
 *
48
 */
43
public class AllocationDetailsView extends BaseStatisticView {
49
public class AllocationDetailsView extends BaseStatisticView {
44
50
51
	/**
52
	 * Column constants ids.
53
	 */
45
	static public final int AD_COL_METHOD_NAME = 0;
54
	static public final int AD_COL_METHOD_NAME = 0;
46
	static public final int AD_COL_LINE_NO = 1;
55
	static public final int AD_COL_LINE_NO = 1;
47
	static public final int AD_COL_CLASS_NAME = 2;
56
	static public final int AD_COL_CLASS_NAME = 2;
Lines 97-108 Link Here
97
			;
106
			;
98
	}
107
	}
99
108
100
	String formatPercent(int val, int max) {
101
		String s = max > 0 && max >= val ?
102
			TString.formatAsPercentage((double)val / (double)max) : "";
103
		return s;
104
	}
105
106
	public String getColumnText(Object element, int columnIndex) {
109
	public String getColumnText(Object element, int columnIndex) {
107
		StatisticViewColumnInfo info = StatisticViewColumnInfo
110
		StatisticViewColumnInfo info = StatisticViewColumnInfo
108
				.getStatisticTableColumnInfo(getTree().getColumn(columnIndex));
111
				.getStatisticTableColumnInfo(getTree().getColumn(columnIndex));
Lines 115-120 Link Here
115
		switch (pos) {
118
		switch (pos) {
116
		case AD_COL_METHOD_NAME:
119
		case AD_COL_METHOD_NAME:
117
			label = allocSite.getMethodName();
120
			label = allocSite.getMethodName();
121
			if (null == label)
122
				label = "?";
118
			break;
123
			break;
119
		case AD_COL_CLASS_NAME:
124
		case AD_COL_CLASS_NAME:
120
			label = allocSite.getClassName();
125
			label = allocSite.getClassName();
Lines 129-154 Link Here
129
			if (noperc)
134
			if (noperc)
130
				label = String.valueOf(allocSite._total);
135
				label = String.valueOf(allocSite._total);
131
			else
136
			else
132
				label = formatPercent(allocSite._total, _allocAll._total);
137
				label = Utils.formatPercent(allocSite._total, _allocAll._total);
133
			break;
138
			break;
134
		case AD_COL_TOTAL_SIZE:
139
		case AD_COL_TOTAL_SIZE:
135
			if (noperc)
140
			if (noperc)
136
				label = String.valueOf(allocSite._totalSize);
141
				label = String.valueOf(allocSite._totalSize);
137
			else
142
			else
138
				label = formatPercent(allocSite._totalSize, _allocAll._totalSize);
143
				label = Utils.formatPercent(allocSite._totalSize, _allocAll._totalSize);
139
			break;
144
			break;
140
		case AD_COL_LIVE_INST:
145
		case AD_COL_LIVE_INST:
141
			if (noperc)
146
			if (noperc)
142
				label = String.valueOf(allocSite._total - allocSite._collected);
147
				label = String.valueOf(allocSite._total - allocSite._collected);
143
			else
148
			else
144
				label = formatPercent(allocSite._total - allocSite._collected,
149
				label = Utils.formatPercent(allocSite._total - allocSite._collected,
145
						_allocAll._total - _allocAll._collected);
150
						_allocAll._total - _allocAll._collected);
146
			break;
151
			break;
147
		case AD_COL_LIVE_SIZE:
152
		case AD_COL_LIVE_SIZE:
148
			if (noperc)
153
			if (noperc)
149
				label = String.valueOf(allocSite._totalSize - allocSite._collectedSize);
154
				label = String.valueOf(allocSite._totalSize - allocSite._collectedSize);
150
			else
155
			else
151
				label = formatPercent(allocSite._totalSize - allocSite._collectedSize,
156
				label = Utils.formatPercent(allocSite._totalSize - allocSite._collectedSize,
152
						_allocAll._totalSize - _allocAll._collectedSize);
157
						_allocAll._totalSize - _allocAll._collectedSize);
153
			break;
158
			break;
154
		case AD_COL_AVG_AGE:
159
		case AD_COL_AVG_AGE:
Lines 161-167 Link Here
161
				IContextLabelFormatProvider formatter = TIContextProvider.instance().getContextLabelFormatProvider(TIContextAttributes.CALL_SITE_AVG_AGE);
166
				IContextLabelFormatProvider formatter = TIContextProvider.instance().getContextLabelFormatProvider(TIContextAttributes.CALL_SITE_AVG_AGE);
162
				label = formatter.getDisplayStringFromElement(new Double(age), null, IContextLabelFormatProvider.MODE_COLUMN_CONTENT);
167
				label = formatter.getDisplayStringFromElement(new Double(age), null, IContextLabelFormatProvider.MODE_COLUMN_CONTENT);
163
			} else {
168
			} else {
164
				label = formatPercent(allocSite._sumAges, _allocAll._sumAges);
169
				label = Utils.formatPercent(allocSite._sumAges, _allocAll._sumAges);
165
			}
170
			}
166
			break;
171
			break;
167
		}
172
		}
Lines 304-323 Link Here
304
		// gather alloc sites by line No
309
		// gather alloc sites by line No
305
		for (int i = _nextIndex; i < lineNoLen; i++) {
310
		for (int i = _nextIndex; i < lineNoLen; i++) {
306
			Integer lineNo = (Integer) lineNumbers.get(i);
311
			Integer lineNo = (Integer) lineNumbers.get(i);
307
			AllocationSite allocSite = (AllocationSite) _allocSites.get(lineNo);
312
			TRCMethod method = null;
313
			long id = lineNo.intValue();
314
			if (i < methodsLen) {
315
				method = (TRCMethod) methods.get(i);
316
				id += method.getId() << 20;
317
			}
318
			Long siteId = new Long(id);
319
			AllocationSite allocSite = (AllocationSite) _allocSites.get(siteId);
308
			if (null == allocSite) {
320
			if (null == allocSite) {
309
				TRCMethod method = null;
310
				int line = lineNo.intValue();
321
				int line = lineNo.intValue();
311
				// find corresponding method
322
				// find corresponding method
312
				for (int j = 0; j < methodsLen; j++) {
313
					TRCMethod method0 = (TRCMethod) methods.get(j);
314
					if (line >= method0.getLineNo() && line <= method0.getLineNo() + method0.getLineCount()) {
315
						method = method0;
316
						break;
317
					}
318
				}
319
				allocSite = new AllocationSite(line, method);
323
				allocSite = new AllocationSite(line, method);
320
				_allocSites.put(lineNo, allocSite);
324
				_allocSites.put(siteId, allocSite);
321
			}
325
			}
322
			int j = i + i + 1;
326
			int j = i + i + 1;
323
			if (j < objectsLen && objects.get(j) instanceof TRCFullTraceObject) {
327
			if (j < objectsLen && objects.get(j) instanceof TRCFullTraceObject) {
(-)src/org/eclipse/tptp/trace/jvmti/internal/client/views/ThreadStatisticViewer.java (-6 / +16 lines)
Lines 26-32 Link Here
26
import org.eclipse.tptp.platform.common.ui.internal.CommonUIConstants;
26
import org.eclipse.tptp.platform.common.ui.internal.CommonUIConstants;
27
27
28
public class ThreadStatisticViewer extends TraceViewer implements
28
public class ThreadStatisticViewer extends TraceViewer implements
29
		IContextViewer {
29
		IContextViewer, ICallStackProvider {
30
30
31
	protected Action _chooseColumns;
31
	protected Action _chooseColumns;
32
	protected Action _sortByColumn;
32
	protected Action _sortByColumn;
Lines 95-101 Link Here
95
	}
95
	}
96
96
97
	public void updateContext() {
97
	public void updateContext() {
98
		ContextUpdaterHelper.setCurrentFocusContextLanguage(getSelectedContext());
98
		ContextUpdaterHelper
99
				.setCurrentFocusContextLanguage(getSelectedContext());
99
		_contextChanged = false;
100
		_contextChanged = false;
100
	}
101
	}
101
102
Lines 176-190 Link Here
176
		_openCallStackView = new OpenCallStackViewAction();
177
		_openCallStackView = new OpenCallStackViewAction();
177
		TracePluginImages.setImageDescriptors(_openCallStackView,
178
		TracePluginImages.setImageDescriptors(_openCallStackView,
178
				TracePluginImages.T_VIEW, "call_stack_view.gif");
179
				TracePluginImages.T_VIEW, "call_stack_view.gif");
179
		_openCallStackView.setText("Show Call Stack");
180
		_openCallStackView.setText(UIMessages._ShowCallStack);
180
		_openCallStackView.setDescription("Open Call Stack view");
181
		_openCallStackView.setDescription(UIMessages._ShowCallStack);
181
		_openCallStackView.setToolTipText("Open Call Stack view");
182
		_openCallStackView.setToolTipText(UIMessages._ShowCallStack);
182
		_openCallStackView.setEnabled(true);
183
		_openCallStackView.setEnabled(true);
183
184
184
		IMenuManager menum = getViewSite().getActionBars().getMenuManager();
185
		IMenuManager menum = getViewSite().getActionBars().getMenuManager();
185
		menum.add(_chooseColumns);
186
		menum.add(_chooseColumns);
186
		menum.add(_sortByColumn);
187
		menum.add(_sortByColumn);
187
		//menum.add(_openCallStackView);
188
		// menum.add(_openCallStackView);
188
189
189
		MenuManager submenu = new MenuManager(TraceUIMessages._222);
190
		MenuManager submenu = new MenuManager(TraceUIMessages._222);
190
		submenu.addMenuListener(getContextSelectionMenuListener());
191
		submenu.addMenuListener(getContextSelectionMenuListener());
Lines 192-195 Link Here
192
193
193
		getViewSite().getActionBars().updateActionBars();
194
		getViewSite().getActionBars().updateActionBars();
194
	}
195
	}
196
197
	public Object getCallStack() {
198
		if (!(getCurrentPage() instanceof ThreadStatisticPage))
199
			return null;
200
		ThreadStatisticPage page = (ThreadStatisticPage) getCurrentPage();
201
		if (page.getControl() == null || page.getControl().isDisposed())
202
			return null;
203
		return page.getView().getSelectedThread();
204
	}
195
}
205
}
(-)src/org/eclipse/tptp/trace/jvmti/internal/client/views/ThreadStatesViewer.java (-1 / +12 lines)
Lines 20-30 Link Here
20
import org.eclipse.jface.action.Action;
20
import org.eclipse.jface.action.Action;
21
import org.eclipse.jface.action.IMenuManager;
21
import org.eclipse.jface.action.IMenuManager;
22
import org.eclipse.jface.action.IToolBarManager;
22
import org.eclipse.jface.action.IToolBarManager;
23
import org.eclipse.jface.viewers.IStructuredSelection;
23
import org.eclipse.tptp.trace.jvmti.internal.client.TITracePlugin;
24
import org.eclipse.tptp.trace.jvmti.internal.client.TITracePlugin;
24
import org.eclipse.ui.IActionBars;
25
import org.eclipse.ui.IActionBars;
25
import org.eclipse.ui.plugin.AbstractUIPlugin;
26
import org.eclipse.ui.plugin.AbstractUIPlugin;
26
27
27
public class ThreadStatesViewer extends TraceViewer {
28
public class ThreadStatesViewer extends TraceViewer implements ICallStackProvider {
28
29
29
	public ThreadStatesViewer() {
30
	public ThreadStatesViewer() {
30
	}
31
	}
Lines 139-142 Link Here
139
		manager.add(_selectPrevThread);
140
		manager.add(_selectPrevThread);
140
		manager.add(_selectNextThread);
141
		manager.add(_selectNextThread);
141
	}
142
	}
143
144
	public Object getCallStack() {
145
		if (!(getCurrentPage() instanceof ThreadStatesPage))
146
			return null;
147
		ThreadStatesPage page = ((ThreadStatesPage) getCurrentPage());
148
		if (page.getControl() == null || page.getControl().isDisposed())
149
			return null;
150
		IStructuredSelection sel = (IStructuredSelection) page.getSelection();
151
		return sel.getFirstElement();
152
	}
142
}
153
}
(-)src/org/eclipse/tptp/trace/jvmti/internal/client/views/CallStackViewer.java (-17 / +92 lines)
Lines 25-31 Link Here
25
import org.eclipse.hyades.trace.ui.ViewSelectionChangedEvent;
25
import org.eclipse.hyades.trace.ui.ViewSelectionChangedEvent;
26
import org.eclipse.jface.viewers.DoubleClickEvent;
26
import org.eclipse.jface.viewers.DoubleClickEvent;
27
import org.eclipse.jface.viewers.IDoubleClickListener;
27
import org.eclipse.jface.viewers.IDoubleClickListener;
28
import org.eclipse.jface.viewers.IStructuredSelection;
29
import org.eclipse.jface.viewers.ITreeContentProvider;
28
import org.eclipse.jface.viewers.ITreeContentProvider;
30
import org.eclipse.jface.viewers.LabelProvider;
29
import org.eclipse.jface.viewers.LabelProvider;
31
import org.eclipse.jface.viewers.TreeSelection;
30
import org.eclipse.jface.viewers.TreeSelection;
Lines 36-52 Link Here
36
import org.eclipse.swt.widgets.Composite;
35
import org.eclipse.swt.widgets.Composite;
37
import org.eclipse.tptp.trace.jvmti.internal.client.MethodDetails;
36
import org.eclipse.tptp.trace.jvmti.internal.client.MethodDetails;
38
import org.eclipse.tptp.trace.jvmti.internal.client.widgets.Utils;
37
import org.eclipse.tptp.trace.jvmti.internal.client.widgets.Utils;
38
import org.eclipse.ui.IPartListener2;
39
import org.eclipse.ui.IViewReference;
40
import org.eclipse.ui.IWorkbench;
41
import org.eclipse.ui.IWorkbenchPartReference;
42
import org.eclipse.ui.IWorkbenchWindow;
39
import org.eclipse.ui.part.ViewPart;
43
import org.eclipse.ui.part.ViewPart;
40
44
45
interface ICallStackProvider {
46
	Object getCallStack();
47
}
48
41
public class CallStackViewer extends ViewPart implements
49
public class CallStackViewer extends ViewPart implements
42
		IViewSelectionChangedListener {
50
		IViewSelectionChangedListener {
43
51
44
	private TreeViewer _calStackCtrl;
52
	private TreeViewer _calStackCtrl;
53
	ICallStackProvider _provider;
45
	private Object _selection;
54
	private Object _selection;
55
	private PartListener _partListener;
56
	private static final Object[] _empty = new Object[0];
46
57
47
	public CallStackViewer() {
58
	public CallStackViewer() {
48
	}
59
	}
49
60
61
	class PartListener implements IPartListener2 {
62
63
		IWorkbenchWindow _window;
64
65
		PartListener() {
66
			IWorkbench wb = UIPlugin.getDefault().getWorkbench();
67
			_window = wb.getActiveWorkbenchWindow();
68
			_window.getActivePage().addPartListener(this);
69
			IViewReference refs[] = _window.getActivePage().getViewReferences();
70
			for (int i = 0; i < refs.length; i++) {
71
				Object part = refs[i].getPart(false);
72
				if (part instanceof ICallStackProvider) {
73
					_provider = (ICallStackProvider) part;
74
					update();
75
					break;
76
				}
77
			}
78
		}
79
80
		void dispose() {
81
			_window.getActivePage().removePartListener(this);
82
			_window = null;
83
		}
84
85
		void detach() {
86
			if (_window != null) {
87
				_window.getActivePage().removePartListener(this);
88
				_window = null;
89
			}
90
			_provider = null;
91
		}
92
93
		public void partActivated(IWorkbenchPartReference partRef) {
94
			Object part = partRef.getPart(false);
95
			if (part instanceof ICallStackProvider) {
96
				_provider = (ICallStackProvider) part;
97
				update();
98
			}
99
		}
100
101
		public void partBroughtToTop(IWorkbenchPartReference partRef) {
102
		}
103
104
		public void partClosed(IWorkbenchPartReference partRef) {
105
			if (_provider == partRef.getPart(false)) {
106
				_provider = null;
107
				update();
108
			}
109
		}
110
111
		public void partDeactivated(IWorkbenchPartReference partRef) {
112
		}
113
114
		public void partHidden(IWorkbenchPartReference partRef) {
115
			if (_provider == partRef.getPart(false)) {
116
				_provider = null;
117
				update();
118
			}
119
		}
120
121
		public void partInputChanged(IWorkbenchPartReference partRef) {
122
		}
123
124
		public void partOpened(IWorkbenchPartReference partRef) {
125
		}
126
127
		public void partVisible(IWorkbenchPartReference partRef) {
128
		}
129
	}
130
50
	public void createPartControl(Composite parent) {
131
	public void createPartControl(Composite parent) {
51
		_calStackCtrl = new TreeViewer(parent, SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.SINGLE);
132
		_calStackCtrl = new TreeViewer(parent, SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.SINGLE);
52
		_calStackCtrl.setContentProvider(new CallStackContentProvider());
133
		_calStackCtrl.setContentProvider(new CallStackContentProvider());
Lines 73-81 Link Here
73
		});
154
		});
74
		UIPlugin.getDefault().addViewSelectionChangedListener(this);
155
		UIPlugin.getDefault().addViewSelectionChangedListener(this);
75
		handleViewSelectionChangedEvent(UIPlugin.getDefault().getViewSelectionChangedEvent());
156
		handleViewSelectionChangedEvent(UIPlugin.getDefault().getViewSelectionChangedEvent());
157
		_partListener = new PartListener();
76
	}
158
	}
77
159
78
	public void dispose() {
160
	public void dispose() {
161
		_partListener.dispose();
79
		UIPlugin.getDefault().removeViewSelectionChangedListener(this);
162
		UIPlugin.getDefault().removeViewSelectionChangedListener(this);
80
		super.dispose();
163
		super.dispose();
81
	}
164
	}
Lines 85-90 Link Here
85
			_calStackCtrl.getControl().setFocus();
168
			_calStackCtrl.getControl().setFocus();
86
	}
169
	}
87
170
171
	void update() {
172
		if (_provider != null)
173
			update(_provider.getCallStack());
174
		else
175
			update(null);
176
	}
177
88
	/** update view content */
178
	/** update view content */
89
	void update(Object selection) {
179
	void update(Object selection) {
90
		if (null == _calStackCtrl)
180
		if (null == _calStackCtrl)
Lines 116-123 Link Here
116
		return obj.toString();
206
		return obj.toString();
117
	}
207
	}
118
208
119
	static final Object[] _empty = new Object[0];
120
121
	class CallStackContentProvider implements ITreeContentProvider {
209
	class CallStackContentProvider implements ITreeContentProvider {
122
210
123
		public void inputChanged(Viewer v, Object oldInput, Object newInput) {
211
		public void inputChanged(Viewer v, Object oldInput, Object newInput) {
Lines 186-204 Link Here
186
	}
274
	}
187
275
188
	public void handleViewSelectionChangedEvent(ViewSelectionChangedEvent event) {
276
	public void handleViewSelectionChangedEvent(ViewSelectionChangedEvent event) {
189
		Object source = event.getSource();
277
		update();
190
		updateView(source);
191
	}
192
193
	public void updateView(Object source) {
194
		if (source instanceof ThreadStatisticView) {
195
			ThreadStatisticView view = (ThreadStatisticView) source;
196
			TRCThread thread = view.getSelectedThread();
197
			update(thread);
198
		} else if (source instanceof ThreadStatesPage) {
199
			ThreadStatesPage page = (ThreadStatesPage) source;
200
			IStructuredSelection sel = (IStructuredSelection) page.getSelection();
201
			update(sel.getFirstElement());
202
		}
203
	}
278
	}
204
}
279
}
(-)src/org/eclipse/tptp/trace/jvmti/internal/client/views/OpenTraceViewActionBase.java (-2 / +32 lines)
Lines 17-29 Link Here
17
import org.eclipse.core.resources.IResourceStatus;
17
import org.eclipse.core.resources.IResourceStatus;
18
import org.eclipse.core.resources.ResourcesPlugin;
18
import org.eclipse.core.resources.ResourcesPlugin;
19
import org.eclipse.core.runtime.Status;
19
import org.eclipse.core.runtime.Status;
20
import org.eclipse.emf.ecore.EObject;
20
import org.eclipse.hyades.trace.ui.TraceViewer;
21
import org.eclipse.hyades.trace.ui.TraceViewer;
21
import org.eclipse.hyades.trace.ui.UIPlugin;
22
import org.eclipse.hyades.trace.ui.UIPlugin;
22
import org.eclipse.hyades.trace.views.actions.internal.OpenTraceViewAction;
23
import org.eclipse.hyades.trace.views.actions.internal.OpenTraceViewAction;
23
import org.eclipse.hyades.trace.views.internal.TraceUIMessages;
24
import org.eclipse.jface.action.IAction;
24
import org.eclipse.jface.action.IAction;
25
import org.eclipse.jface.dialogs.ErrorDialog;
25
import org.eclipse.jface.dialogs.ErrorDialog;
26
import org.eclipse.jface.resource.ImageDescriptor;
26
import org.eclipse.jface.resource.ImageDescriptor;
27
import org.eclipse.tptp.trace.jvmti.internal.client.widgets.Utils;
27
import org.eclipse.ui.IViewPart;
28
import org.eclipse.ui.IViewPart;
28
import org.eclipse.ui.IWorkbenchPage;
29
import org.eclipse.ui.IWorkbenchPage;
29
import org.eclipse.ui.IWorkbenchWindow;
30
import org.eclipse.ui.IWorkbenchWindow;
Lines 41-50 Link Here
41
	public OpenTraceViewActionBase(String label, ImageDescriptor image) {
42
	public OpenTraceViewActionBase(String label, ImageDescriptor image) {
42
		super(label, image);
43
		super(label, image);
43
	}
44
	}
45
	
46
	boolean acceptAgentName(String name) {
47
		return true;
48
	}
49
50
	public abstract String getErrorMsg();
44
51
45
	void openView(boolean showError) {
52
	void openView(boolean showError) {
46
		IWorkbenchWindow window = UIPlugin.getDefault().getWorkbench()
53
		IWorkbenchWindow window = UIPlugin.getDefault().getWorkbench()
47
				.getActiveWorkbenchWindow();
54
				.getActiveWorkbenchWindow();
55
56
		// check profiler type
57
		EObject mofObject = getMofObject();
58
		if (mofObject == null) {
59
			if (showError) {
60
				String msg = UIMessages.EMPTY_PROFILE_SELECTION;
61
				Status err = new Status(Status.WARNING,
62
						ResourcesPlugin.PI_RESOURCES, msg);
63
				ErrorDialog.openError(window.getShell(), msg, "", err);
64
			}
65
			return;
66
		}
67
		String name = Utils.getAgentName(mofObject);
68
		if (!acceptAgentName(name)) {
69
			if (showError) {
70
				String msg = UIMessages.DATA_NOT_SUPPORTED;
71
				Status err = new Status(Status.WARNING,
72
						ResourcesPlugin.PI_RESOURCES, msg);
73
				ErrorDialog.openError(window.getShell(), msg, "", err);
74
			}
75
			return;
76
		}
77
48
		try {
78
		try {
49
			IWorkbenchPage persp = UIPlugin.getActivePage();
79
			IWorkbenchPage persp = UIPlugin.getActivePage();
50
			IViewPart view = persp.showView(getViewID());
80
			IViewPart view = persp.showView(getViewID());
Lines 53-59 Link Here
53
			}
83
			}
54
		} catch (Exception e) {
84
		} catch (Exception e) {
55
			if (showError) {
85
			if (showError) {
56
				String msg = TraceUIMessages._3;
86
				String msg = getErrorMsg();
57
				Status err = new Status(Status.WARNING,
87
				Status err = new Status(Status.WARNING,
58
						ResourcesPlugin.PI_RESOURCES,
88
						ResourcesPlugin.PI_RESOURCES,
59
						IResourceStatus.INTERNAL_ERROR, e.toString(), null);
89
						IResourceStatus.INTERNAL_ERROR, e.toString(), null);
(-)src/org/eclipse/tptp/trace/jvmti/internal/client/views/OpenThreadStatesViewAction.java (+4 lines)
Lines 35-38 Link Here
35
	public String getViewID() {
35
	public String getViewID() {
36
		return VIEW_ID;
36
		return VIEW_ID;
37
	}
37
	}
38
39
	public String getErrorMsg() {
40
		return UIMessages.CANNOT_OPEN_THREAD_STATES;
41
	}
38
}
42
}
(-)src/org/eclipse/tptp/trace/jvmti/internal/client/views/messages.properties (+11 lines)
Lines 21-26 Link Here
21
TIME_SCALE = Time Scale
21
TIME_SCALE = Time Scale
22
MEM_ANALYSIS_TITLE = Memory Analysis
22
MEM_ANALYSIS_TITLE = Memory Analysis
23
NO_THREAD_STATS = No thread statistics is available for display.\nEither you have no trace selected in the Profiling Monitor view or the current selection does not contain thread statistics information.\n\nNote:\nThis view is available only if the trace contains thread statistics. To collect this type of information, on the Profile tab in the Launch configuration, choose the Thread Statistics option.
23
NO_THREAD_STATS = No thread statistics is available for display.\nEither you have no trace selected in the Profiling Monitor view or the current selection does not contain thread statistics information.\n\nNote:\nThis view is available only if the trace contains thread statistics. To collect this type of information, on the Profile tab in the Launch configuration, choose the Thread Statistics option.
24
TI_CONTEXT_PROVIDER = JVMTI profiler context provider
25
CANNOT_OPEN_MEM_ANALYSIS = Error opening the Memory Analysis view.
26
CANNOT_OPEN_THREAD_STATS = Error opening the Thread Statistics view.
27
CANNOT_OPEN_THREAD_STATES = Error opening the Threads Visualizer view.
28
CANNOT_OPEN_CALL_STACK = Error opening the Call Stack view.
29
DATA_NOT_SUPPORTED = The collected data is not supported by JVMTI profiler views.
30
EMPTY_PROFILE_SELECTION = No trace is selected in the Profiling Monitor view.
31
24
_Not_Started = Not Started
32
_Not_Started = Not Started
25
_Running = Running
33
_Running = Running
26
_Sleeping = Sleeping
34
_Sleeping = Sleeping
Lines 73-79 Link Here
73
_Delta = Delta
81
_Delta = Delta
74
_ShowAsPercentage = Show as Percentage
82
_ShowAsPercentage = Show as Percentage
75
_ShowDeltaColumns = Show Delta Columns
83
_ShowDeltaColumns = Show Delta Columns
84
_ShowCallStack = Show Call Stack
85
_Timescale = Time scale
76
_THREAD_MONITOR = Monitor
86
_THREAD_MONITOR = Monitor
77
_MONITOR_OWNER = Monitor Owner
87
_MONITOR_OWNER = Monitor Owner
78
_TIMEOUT = Timeout
88
_TIMEOUT = Timeout
79
_OBJECT_WAITING_FOR = Object Waiting For
89
_OBJECT_WAITING_FOR = Object Waiting For
90
_UNDEFINED_GROUP = <undefined>
(-)src/org/eclipse/tptp/trace/jvmti/internal/client/views/OpenThreadStatisticViewAction.java (-57 / +8 lines)
Lines 7-31 Link Here
7
 * $Id: OpenThreadStatisticViewAction.java,v 1.2 2007/02/13 20:44:43 ewchan Exp $
7
 * $Id: OpenThreadStatisticViewAction.java,v 1.2 2007/02/13 20:44:43 ewchan Exp $
8
 * 
8
 * 
9
 **********************************************************************/
9
 **********************************************************************/
10
10
package org.eclipse.tptp.trace.jvmti.internal.client.views;
11
package org.eclipse.tptp.trace.jvmti.internal.client.views;
11
12
12
import org.eclipse.core.resources.IResourceStatus;
13
import org.eclipse.core.resources.ResourcesPlugin;
14
import org.eclipse.core.runtime.Status;
15
import org.eclipse.hyades.trace.ui.UIPlugin;
16
import org.eclipse.hyades.trace.views.actions.internal.OpenTraceViewAction;
17
import org.eclipse.hyades.trace.views.internal.TraceUIMessages;
18
import org.eclipse.jface.action.IAction;
19
import org.eclipse.jface.dialogs.ErrorDialog;
20
import org.eclipse.jface.resource.ImageDescriptor;
13
import org.eclipse.jface.resource.ImageDescriptor;
21
import org.eclipse.ui.IViewPart;
22
import org.eclipse.ui.IWorkbenchPage;
23
import org.eclipse.ui.IWorkbenchWindow;
24
14
25
public class OpenThreadStatisticViewAction extends OpenTraceViewAction {
15
public class OpenThreadStatisticViewAction extends OpenTraceViewActionBase {
16
17
	static final String VIEW_ID = "org.eclipse.tptp.trace.jvmti.internal.client.views.ThreadStatisticViewer";
26
18
27
	static final String VIEW_ID="org.eclipse.tptp.trace.jvmti.internal.client.views.ThreadStatisticViewer";
28
	
29
	public OpenThreadStatisticViewAction() {
19
	public OpenThreadStatisticViewAction() {
30
		super("");
20
		super("");
31
	}
21
	}
Lines 38-87 Link Here
38
		super(label, image);
28
		super(label, image);
39
	}
29
	}
40
30
41
	public boolean isVisibleForType(Object mofObject) {
42
		return true;
43
	}
44
	
45
	/**
46
	 * @see org.eclipse.jface.action.IAction#run()
47
	 */
48
	public void run() {
49
		IWorkbenchWindow window =
50
			UIPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow();
51
52
		try {
53
			IWorkbenchPage persp = UIPlugin.getActivePage();
54
			IViewPart view = persp.showView(VIEW_ID);
55
56
			if(view != null && view instanceof ThreadStatisticViewer) {
57
				 ((ThreadStatisticViewer)view).addViewPage(getMofObject(), true);
58
			}
59
60
		} catch (Exception e) {
61
			String msg =
62
				TraceUIMessages._3;
63
			Status err =
64
				new Status(
65
					Status.WARNING,
66
					ResourcesPlugin.PI_RESOURCES,
67
					IResourceStatus.INTERNAL_ERROR,
68
					e.toString(),
69
					null);
70
71
			ErrorDialog.openError(window.getShell(), msg, "",
72
			// no special message
73
			err);
74
75
			e.printStackTrace();
76
		}
77
78
	}
79
80
	public void run(IAction action) {
81
		run();
82
	}
83
84
	public String getViewID() {
31
	public String getViewID() {
85
		return VIEW_ID;
32
		return VIEW_ID;
86
	}
33
	}
34
35
	public String getErrorMsg() {
36
		return UIMessages.CANNOT_OPEN_THREAD_STATS;
37
	}
87
}
38
}
(-)src/org/eclipse/tptp/trace/jvmti/internal/client/views/OpenCallStackViewAction.java (+4 lines)
Lines 35-38 Link Here
35
	public String getViewID() {
35
	public String getViewID() {
36
		return VIEW_ID;
36
		return VIEW_ID;
37
	}
37
	}
38
39
	public String getErrorMsg() {
40
		return UIMessages.CANNOT_OPEN_CALL_STACK;
41
	}
38
}
42
}
(-)src/org/eclipse/tptp/trace/jvmti/internal/client/widgets/ThreadStatesCtrl.java (-1 / +2 lines)
Lines 45-50 Link Here
45
import org.eclipse.swt.graphics.Point;
45
import org.eclipse.swt.graphics.Point;
46
import org.eclipse.swt.graphics.Rectangle;
46
import org.eclipse.swt.graphics.Rectangle;
47
import org.eclipse.swt.widgets.Composite;
47
import org.eclipse.swt.widgets.Composite;
48
import org.eclipse.tptp.trace.jvmti.internal.client.views.UIMessages;
48
49
49
public class ThreadStatesCtrl extends TraceCtrl implements FocusListener,
50
public class ThreadStatesCtrl extends TraceCtrl implements FocusListener,
50
		KeyListener, MouseMoveListener, MouseListener, ControlListener,
51
		KeyListener, MouseMoveListener, MouseListener, ControlListener,
Lines 1062-1068 Link Here
1062
	public void refreshData(Object threads[]) {
1063
	public void refreshData(Object threads[]) {
1063
		clearGroups();
1064
		clearGroups();
1064
		_threads = threads;
1065
		_threads = threads;
1065
		String undef = "<undefined>";
1066
		String undef = UIMessages._UNDEFINED_GROUP;
1066
		ArrayList groupList = new ArrayList();
1067
		ArrayList groupList = new ArrayList();
1067
		for (int i = 0; i < _threads.length; i++) {
1068
		for (int i = 0; i < _threads.length; i++) {
1068
			TRCThread thread = (TRCThread) _threads[i];
1069
			TRCThread thread = (TRCThread) _threads[i];
(-)src/org/eclipse/tptp/trace/jvmti/internal/client/widgets/TimeScaleCtrl.java (-2 / +3 lines)
Lines 23-28 Link Here
23
import org.eclipse.swt.graphics.Point;
23
import org.eclipse.swt.graphics.Point;
24
import org.eclipse.swt.graphics.Rectangle;
24
import org.eclipse.swt.graphics.Rectangle;
25
import org.eclipse.swt.widgets.Composite;
25
import org.eclipse.swt.widgets.Composite;
26
import org.eclipse.tptp.trace.jvmti.internal.client.views.UIMessages;
26
27
27
public class TimeScaleCtrl extends TraceCtrl implements MouseListener, MouseMoveListener {
28
public class TimeScaleCtrl extends TraceCtrl implements MouseListener, MouseMoveListener {
28
29
Lines 137-145 Link Here
137
		_rect0.width -= 4;
138
		_rect0.width -= 4;
138
		if (_rect0.width > 0) {
139
		if (_rect0.width > 0) {
139
			if (false && rect.width - leftSpace > 0)
140
			if (false && rect.width - leftSpace > 0)
140
				Utils.drawText(gc, "Time scale: " + timeDraw.hint(), _rect0, true);
141
				Utils.drawText(gc, UIMessages._Timescale + ": " + timeDraw.hint(), _rect0, true);
141
			else
142
			else
142
				Utils.drawText(gc, "Time scale:", _rect0, true);
143
				Utils.drawText(gc, UIMessages._Timescale + ":", _rect0, true);
143
		}
144
		}
144
		_rect0.x -= 4;
145
		_rect0.x -= 4;
145
		_rect0.width += 4;
146
		_rect0.width += 4;
(-)src/org/eclipse/tptp/trace/jvmti/internal/client/widgets/Utils.java (-2 / +27 lines)
Lines 18-24 Link Here
18
18
19
import org.eclipse.emf.common.util.EList;
19
import org.eclipse.emf.common.util.EList;
20
import org.eclipse.emf.ecore.EObject;
20
import org.eclipse.emf.ecore.EObject;
21
import org.eclipse.hyades.models.hierarchy.TRCAgentProxy;
21
import org.eclipse.hyades.models.hierarchy.TRCAnnotation;
22
import org.eclipse.hyades.models.hierarchy.TRCAnnotation;
23
import org.eclipse.hyades.models.hierarchy.TRCNode;
24
import org.eclipse.hyades.models.hierarchy.TRCProcessProxy;
22
import org.eclipse.hyades.models.trace.TRCClass;
25
import org.eclipse.hyades.models.trace.TRCClass;
23
import org.eclipse.hyades.models.trace.TRCFullTraceObject;
26
import org.eclipse.hyades.models.trace.TRCFullTraceObject;
24
import org.eclipse.hyades.models.trace.TRCGCEvent;
27
import org.eclipse.hyades.models.trace.TRCGCEvent;
Lines 36-41 Link Here
36
import org.eclipse.hyades.models.trace.TRCThreadWaitingForObjectEvent;
39
import org.eclipse.hyades.models.trace.TRCThreadWaitingForObjectEvent;
37
import org.eclipse.hyades.trace.ui.ITraceSelection;
40
import org.eclipse.hyades.trace.ui.ITraceSelection;
38
import org.eclipse.hyades.trace.ui.UIPlugin;
41
import org.eclipse.hyades.trace.ui.UIPlugin;
42
import org.eclipse.hyades.trace.ui.internal.util.TString;
39
import org.eclipse.hyades.trace.ui.internal.util.TraceMessages;
43
import org.eclipse.hyades.trace.ui.internal.util.TraceMessages;
40
import org.eclipse.hyades.trace.views.internal.TraceUIMessages;
44
import org.eclipse.hyades.trace.views.internal.TraceUIMessages;
41
import org.eclipse.hyades.trace.views.internal.TraceUIPlugin;
45
import org.eclipse.hyades.trace.views.internal.TraceUIPlugin;
Lines 694-700 Link Here
694
		return age;
698
		return age;
695
	}
699
	}
696
700
697
	public static int compare(double d1, double d2) {
701
	static public int compare(double d1, double d2) {
698
		if (d1 > d2)
702
		if (d1 > d2)
699
			return 1;
703
			return 1;
700
		if (d1 < d2)
704
		if (d1 < d2)
Lines 702-708 Link Here
702
		return 0;
706
		return 0;
703
	}
707
	}
704
708
705
	public static int compare(String s1, String s2) {
709
	static public int compare(String s1, String s2) {
706
		if (s1 != null && s2 != null)
710
		if (s1 != null && s2 != null)
707
			return s1.compareToIgnoreCase(s2);
711
			return s1.compareToIgnoreCase(s2);
708
		if (s1 != null)
712
		if (s1 != null)
Lines 711-714 Link Here
711
			return -1;
715
			return -1;
712
		return 0;
716
		return 0;
713
	}
717
	}
718
719
	static public String getAgentName(EObject mofObject) {
720
		String name = "";
721
		EList list = null;
722
		if (mofObject instanceof TRCAgentProxy) {
723
			name = ((TRCAgentProxy) mofObject).getName();
724
		} else if (mofObject instanceof TRCProcessProxy) {
725
			list = ((TRCProcessProxy) mofObject).getAgentProxies();
726
		} else if (mofObject instanceof TRCNode) {
727
			list = ((TRCNode) mofObject).getProcessProxies();
728
		}
729
		if (list != null && list.size() > 0)
730
			name = getAgentName((EObject) list.get(0));
731
		return name;
732
	}
733
734
	static public String formatPercent(int val, int max) {
735
		String s = max > 0 && max >= val ?
736
			TString.formatAsPercentage((double)val / (double)max) : "";
737
		return s;
738
	}
714
}
739
}
(-)src/org/eclipse/tptp/trace/jvmti/internal/client/context/TIContextProvider.java (-1 / +2 lines)
Lines 20-25 Link Here
20
20
21
import org.eclipse.hyades.trace.views.internal.context.java.BasicContextProvider;
21
import org.eclipse.hyades.trace.views.internal.context.java.BasicContextProvider;
22
import org.eclipse.hyades.ui.provisional.context.IContextLabelFormatProvider;
22
import org.eclipse.hyades.ui.provisional.context.IContextLabelFormatProvider;
23
import org.eclipse.tptp.trace.jvmti.internal.client.views.UIMessages;
23
24
24
public class TIContextProvider extends BasicContextProvider implements TIContextAttributes {
25
public class TIContextProvider extends BasicContextProvider implements TIContextAttributes {
25
26
Lines 112-118 Link Here
112
	}
113
	}
113
114
114
	public String getName() {
115
	public String getName() {
115
		return "JVMTI profiler context provider";
116
		return UIMessages.TI_CONTEXT_PROVIDER;
116
	}
117
	}
117
118
118
	public String[] getSupportAttributes() {
119
	public String[] getSupportAttributes() {
(-)plugin.properties (-5 / +5 lines)
Lines 27-34 Link Here
27
JVMTI_ANALYSIS_TYPE_VIEW_THRD_STATES    = Threads Visualizer
27
JVMTI_ANALYSIS_TYPE_VIEW_THRD_STATES    = Threads Visualizer
28
JVMTI_ANALYSIS_TYPE_VIEW_CALL_STACK     = Call Stack
28
JVMTI_ANALYSIS_TYPE_VIEW_CALL_STACK     = Call Stack
29
JVMTI_ANALYSIS_TYPE_VIEW_HEAP           = Memory Statistics
29
JVMTI_ANALYSIS_TYPE_VIEW_HEAP           = Memory Statistics
30
JVMTI_ANALYSIS_TYPE_VIEW_HEAP_ANALYSIS  = Memory Analysis
30
JVMTI_ANALYSIS_TYPE_VIEW_HEAP_ANALYSIS  = Object Allocations
31
JVMTI_ANALYSIS_TYPE_TOOLTIP_THRD        = Open Thread Statistics
31
JVMTI_ANALYSIS_TYPE_TOOLTIP_THRD        = Open Thread Statistics view
32
JVMTI_ANALYSIS_TYPE_TOOLTIP_THRD_STATES = Open Threads Visualizer
32
JVMTI_ANALYSIS_TYPE_TOOLTIP_THRD_STATES = Open Threads Visualizer view
33
JVMTI_ANALYSIS_TYPE_TOOLTIP_CALL_STACK  = Open Call Stack
33
JVMTI_ANALYSIS_TYPE_TOOLTIP_CALL_STACK  = Open Call Stack view
34
JVMTI_ANALYSIS_TYPE_TOOLTIP_HEAP_ANALYSIS = Open Memory Analysis
34
JVMTI_ANALYSIS_TYPE_TOOLTIP_HEAP_ANALYSIS = Open Object Allocations view
(-)plugin.xml (-15 / +24 lines)
Lines 79-85 Link Here
79
       <analyzerExtension
79
       <analyzerExtension
80
             class="org.eclipse.tptp.trace.jvmti.internal.client.views.OpenThreadStatisticViewAction"
80
             class="org.eclipse.tptp.trace.jvmti.internal.client.views.OpenThreadStatisticViewAction"
81
             extension="trace"
81
             extension="trace"
82
             icon="icons/full/obj16/thread.gif"
82
             icon="icons/full/cview16/thread_stat_view.gif"
83
             id="org.eclipse.tptp.trace.jvmti.internal.client.views.OpenThreadStatisticViewAction"
83
             id="org.eclipse.tptp.trace.jvmti.internal.client.views.OpenThreadStatisticViewAction"
84
             name="%JVMTI_ANALYSIS_TYPE_VIEW_THRD"
84
             name="%JVMTI_ANALYSIS_TYPE_VIEW_THRD"
85
             type="org.eclipse.tptp.analysisType.jvmti.thread"/>
85
             type="org.eclipse.tptp.analysisType.jvmti.thread"/>
Lines 105-111 Link Here
105
         point="org.eclipse.ui.views">
105
         point="org.eclipse.ui.views">
106
      <view
106
      <view
107
            name="%JVMTI_ANALYSIS_TYPE_VIEW_THRD"
107
            name="%JVMTI_ANALYSIS_TYPE_VIEW_THRD"
108
            icon="icons/full/obj16/thread.gif"
108
            icon="icons/full/cview16/thread_stat_view.gif"
109
            category="org.eclipse.hyades.trace.internal.ui.trace"
109
            category="org.eclipse.hyades.trace.internal.ui.trace"
110
            class="org.eclipse.tptp.trace.jvmti.internal.client.views.ThreadStatisticViewer"
110
            class="org.eclipse.tptp.trace.jvmti.internal.client.views.ThreadStatisticViewer"
111
            id="org.eclipse.tptp.trace.jvmti.internal.client.views.ThreadStatisticViewer">
111
            id="org.eclipse.tptp.trace.jvmti.internal.client.views.ThreadStatisticViewer">
Lines 118-135 Link Here
118
            name="%JVMTI_ANALYSIS_TYPE_VIEW_THRD_STATES"/>
118
            name="%JVMTI_ANALYSIS_TYPE_VIEW_THRD_STATES"/>
119
      <view
119
      <view
120
            category="org.eclipse.hyades.trace.internal.ui.trace"
120
            category="org.eclipse.hyades.trace.internal.ui.trace"
121
            class="org.eclipse.tptp.trace.jvmti.internal.client.views.CallStackViewer"
122
            icon="icons/full/cview16/call_stack_view.gif"
123
            id="org.eclipse.tptp.trace.jvmti.internal.client.views.CallStackViewer"
124
            name="%JVMTI_ANALYSIS_TYPE_VIEW_CALL_STACK">
125
      </view>
126
      <view
127
            category="org.eclipse.hyades.trace.internal.ui.trace"
128
            class="org.eclipse.tptp.trace.jvmti.internal.client.views.MemoryAnalysisViewer"
121
            class="org.eclipse.tptp.trace.jvmti.internal.client.views.MemoryAnalysisViewer"
129
            icon="icons/full/obj16/memleakantype_obj.gif"
122
            icon="icons/full/obj16/memleakantype_obj.gif"
130
            id="org.eclipse.tptp.trace.jvmti.internal.client.views.MemoryAnalysisViewer"
123
            id="org.eclipse.tptp.trace.jvmti.internal.client.views.MemoryAnalysisViewer"
131
            name="%JVMTI_ANALYSIS_TYPE_VIEW_HEAP_ANALYSIS">
124
            name="%JVMTI_ANALYSIS_TYPE_VIEW_HEAP_ANALYSIS">
132
      </view>
125
      </view>
126
      <view
127
            category="org.eclipse.hyades.trace.internal.ui.trace"
128
            class="org.eclipse.tptp.trace.jvmti.internal.client.views.CallStackViewer"
129
            icon="icons/full/cview16/call_stack_view.gif"
130
            id="org.eclipse.tptp.trace.jvmti.internal.client.views.CallStackViewer"
131
            name="%JVMTI_ANALYSIS_TYPE_VIEW_CALL_STACK">
132
      </view>
133
   	</extension>
133
   	</extension>
134
134
135
   	<extension
135
   	<extension
Lines 149-154 Link Here
149
               visible="false">
149
               visible="false">
150
         </view>
150
         </view>
151
         <view
151
         <view
152
               id="org.eclipse.tptp.trace.jvmti.internal.client.views.MemoryAnalysisViewer"
153
               relationship="stack"
154
               relative="org.eclipse.hyades.trace.views.adapter.internal.ExecutionStatisticViewer2"
155
               visible="false">
156
         </view>
157
         <view
152
               id="org.eclipse.tptp.trace.jvmti.internal.client.views.CallStackViewer"
158
               id="org.eclipse.tptp.trace.jvmti.internal.client.views.CallStackViewer"
153
               relationship="bottom"
159
               relationship="bottom"
154
               relative="org.eclipse.tptp.trace.jvmti.internal.client.views.ThreadStatesViewer"
160
               relative="org.eclipse.tptp.trace.jvmti.internal.client.views.ThreadStatesViewer"
Lines 171-177 Link Here
171
            id="org.eclipse.tptp.trace.jvmti.threadActionSet">
177
            id="org.eclipse.tptp.trace.jvmti.threadActionSet">
172
         <action
178
         <action
173
               class="org.eclipse.tptp.trace.jvmti.internal.client.views.OpenCallStackViewAction"
179
               class="org.eclipse.tptp.trace.jvmti.internal.client.views.OpenCallStackViewAction"
174
               icon="icons/full/cview16/call_stack_view.gif"
180
               disabledIcon="icons/full/dtool16/callstack.gif"
181
               icon="icons/full/etool16/callstack.gif"
175
               id="org.eclipse.tptp.trace.jvmti.internal.client.views.OpenCallStackViewAction"
182
               id="org.eclipse.tptp.trace.jvmti.internal.client.views.OpenCallStackViewAction"
176
               label="%JVMTI_ANALYSIS_TYPE_VIEW_CALL_STACK"
183
               label="%JVMTI_ANALYSIS_TYPE_VIEW_CALL_STACK"
177
               style="push"
184
               style="push"
Lines 189-207 Link Here
189
         </action>
196
         </action>
190
         <action
197
         <action
191
               class="org.eclipse.tptp.trace.jvmti.internal.client.views.OpenThreadStatesViewAction"
198
               class="org.eclipse.tptp.trace.jvmti.internal.client.views.OpenThreadStatesViewAction"
192
               icon="icons/full/cview16/thread_states_view.gif"
199
               disabledIcon="icons/full/dtool16/thread_state.gif"
200
               icon="icons/full/etool16/thread_state.gif"
193
               id="org.eclipse.tptp.trace.jvmti.internal.client.views.OpenThreadStatesViewAction"
201
               id="org.eclipse.tptp.trace.jvmti.internal.client.views.OpenThreadStatesViewAction"
194
               label="%JVMTI_ANALYSIS_TYPE_VIEW_THRD_STATES"
202
               label="%JVMTI_ANALYSIS_TYPE_VIEW_THRD_STATES"
195
               style="push"
203
               style="push"
196
               toolbarPath="trace/group.statistic"
204
               toolbarPath="trace/group.statistic"
197
               tooltip="%JVMTI_ANALYSIS_TYPE_TOOLTIP_THRD_STATES"/>
205
               tooltip="%JVMTI_ANALYSIS_TYPE_TOOLTIP_THRD_STATES"/>
198
         <action
206
         <action
199
               label="%JVMTI_ANALYSIS_TYPE_VIEW_THRD"
200
               icon="icons/full/obj16/thread.gif"
201
               tooltip="%JVMTI_ANALYSIS_TYPE_TOOLTIP_THRD"
202
               class="org.eclipse.tptp.trace.jvmti.internal.client.views.OpenThreadStatisticViewAction"
207
               class="org.eclipse.tptp.trace.jvmti.internal.client.views.OpenThreadStatisticViewAction"
208
               disabledIcon="icons/full/dtool16/thread_stat.gif"
209
               icon="icons/full/etool16/thread_stat.gif"
210
               id="org.eclipse.tptp.trace.jvmti.internal.client.views.OpenThreadStatisticViewAction"
211
               label="%JVMTI_ANALYSIS_TYPE_VIEW_THRD"
203
               toolbarPath="trace/group.statistic"
212
               toolbarPath="trace/group.statistic"
204
               id="org.eclipse.tptp.trace.jvmti.internal.client.views.OpenThreadStatisticViewAction">
213
               tooltip="%JVMTI_ANALYSIS_TYPE_TOOLTIP_THRD">
205
         </action>
214
         </action>
206
      </actionSet>
215
      </actionSet>
207
   </extension>
216
   </extension>

Return to bug 167995