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 167609 | Differences between
and this patch

Collapse All | Expand All

(-)src/org/eclipse/tptp/trace/jvmti/internal/client/views/MemoryAnalysisPage.java (-3 / +7 lines)
Lines 82-95 Link Here
82
82
83
		tabItem = new CTabItem(_tabFolder, SWT.NONE);
83
		tabItem = new CTabItem(_tabFolder, SWT.NONE);
84
		tabItem.setText("Memory Statistic");
84
		tabItem.setText("Memory Statistic");
85
		_views[0] = new BaseMemoryStatisticView(_tabFolder, this);
85
		BaseMemoryStatisticView memView = new BaseMemoryStatisticView(_tabFolder, this);
86
		_views[0] = memView;
86
		tabItem.setControl(_views[0].getControl());
87
		tabItem.setControl(_views[0].getControl());
87
88
88
		tabItem = new CTabItem(_tabFolder, SWT.NONE);
89
		tabItem = new CTabItem(_tabFolder, SWT.NONE);
89
		tabItem.setText("Allocation Details");
90
		tabItem.setText("Allocation Details");
90
		_views[1] = new AllocationDetailsView(_tabFolder, this);
91
		AllocationDetailsView allocView = new AllocationDetailsView(_tabFolder, this, memView);
92
		_views[1] = allocView;
91
		tabItem.setControl(_views[1].getControl());
93
		tabItem.setControl(_views[1].getControl());
92
		
94
95
		memView._viewDetails = allocView;
96
93
		_tabFolder.setSelection(0);
97
		_tabFolder.setSelection(0);
94
	}
98
	}
95
99
(-)src/org/eclipse/tptp/trace/jvmti/internal/client/views/UIMessages.java (+7 lines)
Lines 62-69 Link Here
62
62
63
	public static String _THREAD_NAME;
63
	public static String _THREAD_NAME;
64
	public static String _THREAD_CLASS_NAME;
64
	public static String _THREAD_CLASS_NAME;
65
	public static String _THREAD_GROUP_NAME;
65
	public static String _THREAD_START_TIME;
66
	public static String _THREAD_START_TIME;
66
	public static String _THREAD_STOP_TIME;
67
	public static String _THREAD_STOP_TIME;
68
	public static String _DURATION;
67
	public static String _THREAD_STATE;
69
	public static String _THREAD_STATE;
68
	public static String _THREAD_RUNNING_TIME;
70
	public static String _THREAD_RUNNING_TIME;
69
	public static String _THREAD_SLEEPING_TIME;
71
	public static String _THREAD_SLEEPING_TIME;
Lines 72-77 Link Here
72
	public static String _THREAD_DEADLOCKED_TIME;
74
	public static String _THREAD_DEADLOCKED_TIME;
73
	public static String _THREAD_BLOCK_COUNT;
75
	public static String _THREAD_BLOCK_COUNT;
74
	public static String _THREAD_DEADLOCK_COUNT;
76
	public static String _THREAD_DEADLOCK_COUNT;
77
	
78
	public static String _THREAD_MONITOR;
79
	public static String _MONITOR_OWNER;
80
	public static String _TIMEOUT;
81
	public static String _OBJECT_WAITING_FOR;
75
82
76
	private UIMessages() {
83
	private UIMessages() {
77
		// Do not instantiate
84
		// Do not instantiate
(-)src/org/eclipse/tptp/trace/jvmti/internal/client/views/BaseMemoryStatisticView.java (-12 / +20 lines)
Lines 15-21 Link Here
15
package org.eclipse.tptp.trace.jvmti.internal.client.views;
15
package org.eclipse.tptp.trace.jvmti.internal.client.views;
16
16
17
import java.util.Hashtable;
17
import java.util.Hashtable;
18
import java.util.Iterator;
19
import java.util.Map;
18
import java.util.Map;
20
19
21
import org.eclipse.emf.common.util.EList;
20
import org.eclipse.emf.common.util.EList;
Lines 76-81 Link Here
76
75
77
	protected int _totalAge;
76
	protected int _totalAge;
78
	protected int _totalGenerations;
77
	protected int _totalGenerations;
78
	protected AllocationDetailsView _viewDetails;
79
79
80
	static private int V = ColumnData.IS_VISIBLE;
80
	static private int V = ColumnData.IS_VISIBLE;
81
	static private int D = ColumnData.SUPPORTS_DELTA;
81
	static private int D = ColumnData.SUPPORTS_DELTA;
Lines 238-244 Link Here
238
			+ IContextAttributes.CLASS_ACTIVE_SIZE + ":" + CM_COL_LIVE_SIZE + ":" + String.valueOf(V | D) + ":right:80,"
238
			+ IContextAttributes.CLASS_ACTIVE_SIZE + ":" + CM_COL_LIVE_SIZE + ":" + String.valueOf(V | D) + ":right:80,"
239
			+ IContextAttributes.CLASS_TOTAL_INST + ":" + CM_COL_TOTAL_INST + ":" + String.valueOf(V | D) + ":right:80,"
239
			+ IContextAttributes.CLASS_TOTAL_INST + ":" + CM_COL_TOTAL_INST + ":" + String.valueOf(V | D) + ":right:80,"
240
			+ IContextAttributes.CLASS_TOTAL_SIZE + ":" + CM_COL_TOTAL_SIZE + ":" + String.valueOf(V | D) + ":right:80,"
240
			+ IContextAttributes.CLASS_TOTAL_SIZE + ":" + CM_COL_TOTAL_SIZE + ":" + String.valueOf(V | D) + ":right:80,"
241
			+ TIContextAttributes.CLASS_AVG_AGE + ":" + CM_COL_AVG_AGE + ":" + String.valueOf(V | D) + ":right:80"
241
			+ TIContextAttributes.CLASS_AVG_AGE + ":" + CM_COL_AVG_AGE + ":" + String.valueOf(V) + ":right:80"
242
			//+ TIContextAttributes.CLASS_GENERATIONS + ":" + CM_COL_GENERATIONS + ":" + String.valueOf(V | D) + ":right:80"
242
			//+ TIContextAttributes.CLASS_GENERATIONS + ":" + CM_COL_GENERATIONS + ":" + String.valueOf(V | D) + ":right:80"
243
			;
243
			;
244
	}
244
	}
Lines 250-256 Link Here
250
			+ IContextAttributes.PACKAGE_ACTIVE_SIZE + ":" + PM_COL_LIVE_SIZE + ":" + String.valueOf(V | D) + ":right:80,"
250
			+ IContextAttributes.PACKAGE_ACTIVE_SIZE + ":" + PM_COL_LIVE_SIZE + ":" + String.valueOf(V | D) + ":right:80,"
251
			+ IContextAttributes.PACKAGE_TOTAL_INST + ":" + PM_COL_TOTAL_INST + ":" + String.valueOf(V | D) + ":right:80,"
251
			+ IContextAttributes.PACKAGE_TOTAL_INST + ":" + PM_COL_TOTAL_INST + ":" + String.valueOf(V | D) + ":right:80,"
252
			+ IContextAttributes.PACKAGE_TOTAL_SIZE + ":" + PM_COL_TOTAL_SIZE + ":" + String.valueOf(V | D) + ":right:80,"
252
			+ IContextAttributes.PACKAGE_TOTAL_SIZE + ":" + PM_COL_TOTAL_SIZE + ":" + String.valueOf(V | D) + ":right:80,"
253
			+ TIContextAttributes.PACKAGE_AVG_AGE + ":" + PM_COL_AVG_AGE + ":" + String.valueOf(V | D) + ":right:80"
253
			+ TIContextAttributes.PACKAGE_AVG_AGE + ":" + PM_COL_AVG_AGE + ":" + String.valueOf(V) + ":right:80"
254
			//+ TIContextAttributes.PACKAGE_GENERATIONS + ":" + PM_COL_GENERATIONS + ":" + String.valueOf(V | D) + ":right:80"
254
			//+ TIContextAttributes.PACKAGE_GENERATIONS + ":" + PM_COL_GENERATIONS + ":" + String.valueOf(V | D) + ":right:80"
255
			;
255
			;
256
	}
256
	}
Lines 292-306 Link Here
292
		int age = 0;
292
		int age = 0;
293
		double t0 = obj.getCreateTime();
293
		double t0 = obj.getCreateTime();
294
		double t1 = obj.getCollectTime();
294
		double t1 = obj.getCollectTime();
295
		Iterator it = listGC.iterator();
295
		int len = listGC.size();
296
		while (it.hasNext()) {
296
		for (int j = 0; j < len; j++) {
297
			TRCGCEvent gcEvent = (TRCGCEvent) it.next();
297
			TRCGCEvent gcEvent = (TRCGCEvent) listGC.get(j);
298
			double time = gcEvent.getTime();
298
			if (gcEvent.getType().equals("finish")) {
299
			if (time <= t0)
299
				double time = gcEvent.getTime();
300
				continue;
300
				if (time <= t0)
301
			if (t1 > 0 && time >= t1)
301
					continue;
302
				break;
302
				if (t1 > 0 && time >= t1)
303
			age++;
303
					break;
304
				age++;
305
			}
304
		}
306
		}
305
		return age;
307
		return age;
306
	}
308
	}
Lines 333-336 Link Here
333
		public int sumAges;
335
		public int sumAges;
334
		public int objCount;
336
		public int objCount;
335
	}
337
	}
338
	
339
	protected void select(Object obj) {
340
		if (null == _viewDetails || _viewDetails.getControl().isDisposed())
341
			return;
342
		_viewDetails.populateData(obj);
343
	}
336
}
344
}
(-)src/org/eclipse/tptp/trace/jvmti/internal/client/views/BaseStatisticView.java (-1 / +4 lines)
Lines 130-142 Link Here
130
		if (model.size() > 0) {
130
		if (model.size() > 0) {
131
			Object sel = model.getFirstElement();
131
			Object sel = model.getFirstElement();
132
			if (sel != null) {
132
			if (sel != null) {
133
				//select(sel);
133
				select(sel);
134
				if (sel instanceof EObject)
134
				if (sel instanceof EObject)
135
					updateStatusContext(ContextManager.getContextLanguage(ContextUpdaterHelper.getContext((EObject)sel)));
135
					updateStatusContext(ContextManager.getContextLanguage(ContextUpdaterHelper.getContext((EObject)sel)));
136
			}
136
			}
137
		}
137
		}
138
	}
138
	}
139
139
140
	protected void select(Object obj) {
141
	}
142
140
	public void updateModelSelection() {
143
	public void updateModelSelection() {
141
		ISelection selection = getTreeViewer().getSelection();
144
		ISelection selection = getTreeViewer().getSelection();
142
		if (selection != null && !selection.isEmpty()) {
145
		if (selection != null && !selection.isEmpty()) {
(-)src/org/eclipse/tptp/trace/jvmti/internal/client/views/CallStackViewer.java (-4 / +6 lines)
Lines 23-29 Link Here
23
import org.eclipse.hyades.trace.ui.IViewSelectionChangedListener;
23
import org.eclipse.hyades.trace.ui.IViewSelectionChangedListener;
24
import org.eclipse.hyades.trace.ui.UIPlugin;
24
import org.eclipse.hyades.trace.ui.UIPlugin;
25
import org.eclipse.hyades.trace.ui.ViewSelectionChangedEvent;
25
import org.eclipse.hyades.trace.ui.ViewSelectionChangedEvent;
26
import org.eclipse.hyades.trace.views.util.internal.OpenSource;
27
import org.eclipse.jface.viewers.DoubleClickEvent;
26
import org.eclipse.jface.viewers.DoubleClickEvent;
28
import org.eclipse.jface.viewers.IDoubleClickListener;
27
import org.eclipse.jface.viewers.IDoubleClickListener;
29
import org.eclipse.jface.viewers.IStructuredSelection;
28
import org.eclipse.jface.viewers.IStructuredSelection;
Lines 61-69 Link Here
61
				Object element = trsel.getFirstElement();
60
				Object element = trsel.getFirstElement();
62
				if (null == element)
61
				if (null == element)
63
					return;
62
					return;
64
				if (element instanceof TRCMethodInvocation ||
63
				if (element instanceof TRCMethodInvocation) {
65
						element instanceof TRCMethodInvocation) {
64
					Utils.openSource(element);
66
					OpenSource.openSource(element);
65
				} else if (element instanceof MethodDetails) {
66
					MethodDetails md = (MethodDetails) element;
67
					String pattern = md.name + Utils.fixMethodSignature(md.signature);
68
					Utils.openSource(pattern);
67
				} else if (_calStackCtrl.isExpandable(element)) {
69
				} else if (_calStackCtrl.isExpandable(element)) {
68
					_calStackCtrl.expandToLevel(element, 1);
70
					_calStackCtrl.expandToLevel(element, 1);
69
				}
71
				}
(-)src/org/eclipse/tptp/trace/jvmti/internal/client/views/messages.properties (-2 / +9 lines)
Lines 55-63 Link Here
55
_GENERATIONS = Generations
55
_GENERATIONS = Generations
56
_LINE_NUMBER = Line No.
56
_LINE_NUMBER = Line No.
57
_THREAD_NAME = Thread Name
57
_THREAD_NAME = Thread Name
58
_THREAD_CLASS_NAME = Class
58
_THREAD_CLASS_NAME = Class Name
59
_THREAD_GROUP_NAME = Group Name
59
_THREAD_START_TIME = Start Time
60
_THREAD_START_TIME = Start Time
60
_THREAD_STOP_TIME = Stop Time
61
_THREAD_STOP_TIME = Stop Time
62
_DURATION = Duration
61
_THREAD_STATE = State
63
_THREAD_STATE = State
62
_THREAD_RUNNING_TIME = Running Time
64
_THREAD_RUNNING_TIME = Running Time
63
_THREAD_SLEEPING_TIME = Sleeping Time
65
_THREAD_SLEEPING_TIME = Sleeping Time
Lines 65-68 Link Here
65
_THREAD_BLOCKED_TIME = Blocked Time
67
_THREAD_BLOCKED_TIME = Blocked Time
66
_THREAD_DEADLOCKED_TIME = Deadlocked Time
68
_THREAD_DEADLOCKED_TIME = Deadlocked Time
67
_THREAD_BLOCK_COUNT = Block Count
69
_THREAD_BLOCK_COUNT = Block Count
68
_THREAD_DEADLOCK_COUNT = Deadlock Count
70
_THREAD_DEADLOCK_COUNT = Deadlock Count
71
72
_THREAD_MONITOR = Monitor
73
_MONITOR_OWNER = Monitor Owner
74
_TIMEOUT = Timeout
75
_OBJECT_WAITING_FOR = Object Waiting For
(-)src/org/eclipse/tptp/trace/jvmti/internal/client/views/AllocationDetailsView.java (-16 / +62 lines)
Lines 14-23 Link Here
14
14
15
package org.eclipse.tptp.trace.jvmti.internal.client.views;
15
package org.eclipse.tptp.trace.jvmti.internal.client.views;
16
16
17
import org.eclipse.emf.common.util.EList;
18
import org.eclipse.emf.ecore.EObject;
17
import org.eclipse.hyades.models.trace.TRCClass;
19
import org.eclipse.hyades.models.trace.TRCClass;
20
import org.eclipse.hyades.models.trace.TRCObjectAllocationAnnotation;
21
import org.eclipse.hyades.trace.ui.ITraceSelection;
18
import org.eclipse.hyades.trace.ui.TraceViewerPage;
22
import org.eclipse.hyades.trace.ui.TraceViewerPage;
23
import org.eclipse.hyades.trace.ui.UIPlugin;
24
import org.eclipse.hyades.trace.ui.ViewSelectionChangedEvent;
25
import org.eclipse.hyades.trace.views.internal.view.columnlabels.ContextUpdaterHelper;
19
import org.eclipse.hyades.trace.views.util.internal.ColumnData;
26
import org.eclipse.hyades.trace.views.util.internal.ColumnData;
20
import org.eclipse.hyades.trace.views.util.internal.StatisticTableColumnInfo;
27
import org.eclipse.hyades.trace.views.util.internal.StatisticTableColumnInfo;
28
import org.eclipse.hyades.ui.provisional.context.ContextManager;
21
import org.eclipse.jface.viewers.Viewer;
29
import org.eclipse.jface.viewers.Viewer;
22
import org.eclipse.swt.graphics.Image;
30
import org.eclipse.swt.graphics.Image;
23
import org.eclipse.swt.widgets.Composite;
31
import org.eclipse.swt.widgets.Composite;
Lines 25-36 Link Here
25
33
26
public class AllocationDetailsView extends BaseStatisticView {
34
public class AllocationDetailsView extends BaseStatisticView {
27
35
28
	protected AllocationDetailsView(Composite parent, TraceViewerPage page) {
36
	TRCClass _class;
37
	BaseMemoryStatisticView _memView;
38
	static final Object _emptyArr[] = new Object[0];
39
	
40
	protected AllocationDetailsView(Composite parent, TraceViewerPage page,
41
			BaseMemoryStatisticView memView) {
29
		super(parent, page);
42
		super(parent, page);
43
		_memView = memView;
30
	}
44
	}
31
45
32
	protected String getColumnsPreferencesKey() {
46
	protected String getColumnsPreferencesKey() {
33
		return "org.eclipse.hyades.trace.views.statistic.allocdetails02";
47
		return "org.eclipse.hyades.trace.views.statistic.allocdetails03";
34
	}
48
	}
35
49
36
	protected String getViewTypeStr() {
50
	protected String getViewTypeStr() {
Lines 41-47 Link Here
41
		return ""
55
		return ""
42
			+ TIContextAttributes.METHOD_NAME + ":" + 0 + ":" + String.valueOf(ColumnData.NONDELETABLE | ColumnData.IS_VISIBLE | ColumnData.NONMOVABLE) + ":left:150,"
56
			+ TIContextAttributes.METHOD_NAME + ":" + 0 + ":" + String.valueOf(ColumnData.NONDELETABLE | ColumnData.IS_VISIBLE | ColumnData.NONMOVABLE) + ":left:150,"
43
			+ TIContextAttributes.METHOD_LINE_NUMBER + ":" + 1 + ":" + String.valueOf(ColumnData.IS_VISIBLE) + ":left:120,"
57
			+ TIContextAttributes.METHOD_LINE_NUMBER + ":" + 1 + ":" + String.valueOf(ColumnData.IS_VISIBLE) + ":left:120,"
44
			+ TIContextAttributes.THREAD_CLASS_NAME + ":" + 2 + ":" + String.valueOf(ColumnData.IS_VISIBLE) + ":left:150,"
58
			+ TIContextAttributes.CLASS_NAME + ":" + 2 + ":" + String.valueOf(ColumnData.IS_VISIBLE) + ":left:150,"
45
			+ TIContextAttributes.PACKAGE_NAME + ":" + 3 + ":" + String.valueOf(ColumnData.IS_VISIBLE) + ":left:120,"
59
			+ TIContextAttributes.PACKAGE_NAME + ":" + 3 + ":" + String.valueOf(ColumnData.IS_VISIBLE) + ":left:120,"
46
			+ TIContextAttributes.CLASS_LIVE_INST + ":" + 4 + ":" + String.valueOf(ColumnData.IS_VISIBLE) + ":right:80,"
60
			+ TIContextAttributes.CLASS_LIVE_INST + ":" + 4 + ":" + String.valueOf(ColumnData.IS_VISIBLE) + ":right:80,"
47
			+ TIContextAttributes.CLASS_ACTIVE_SIZE + ":" + 5 + ":" + String.valueOf(ColumnData.IS_VISIBLE) + ":right:80,"
61
			+ TIContextAttributes.CLASS_ACTIVE_SIZE + ":" + 5 + ":" + String.valueOf(ColumnData.IS_VISIBLE) + ":right:80,"
Lines 55-75 Link Here
55
	public String getColumnText(Object element, int columnIndex) {
69
	public String getColumnText(Object element, int columnIndex) {
56
		StatisticTableColumnInfo info = StatisticTableColumnInfo.getStatisticTableColumnInfo(getTree().getColumn(columnIndex));
70
		StatisticTableColumnInfo info = StatisticTableColumnInfo.getStatisticTableColumnInfo(getTree().getColumn(columnIndex));
57
		int pos = info.getColumnData().getInitalPos();
71
		int pos = info.getColumnData().getInitalPos();
58
		String label = "placeholder-" + pos;
72
		String label = "";
59
		TRCClass cls = null;
73
		if (!(element instanceof TRCObjectAllocationAnnotation))
60
		if (true)
61
			return label;
74
			return label;
62
		switch (pos) {
75
		switch (pos) {
63
		case 0: label = "method name"; break;
76
		case 0: label = "method name"; break;
64
		case 1: label = "line number"; break;
77
		case 1: label = "line number"; break;
65
		case 2: label = cls.getName(); break;
78
		case 2: break;
66
		case 3: label = cls.getPackage().getName(); break;
79
		case 3: break;
67
		case 4: label = "" + (cls.getTotalInstances() - cls.getCollectedInstances()); break;
80
		case 4: break;
68
		case 5: label = "" + (cls.getTotalSize() - cls.getCollectedSize()); break;
69
		case 6: label = "" + cls.getTotalInstances(); break;
70
		case 7: label = "" + cls.getTotalSize(); break;
71
		//case 8: label = "" + cls.getAvarageAge(); break;
72
		//case 9: label = "" + cls.getGenerations(); break;
73
		}
81
		}
74
		return label;
82
		return label;
75
	}
83
	}
Lines 78-85 Link Here
78
		return null;
86
		return null;
79
	}
87
	}
80
88
89
	TRCClass getSelectedClass() {
90
		return _class;
91
		/*if (null == _memView || _memView.getControl().isDisposed())
92
			return null;
93
		IStructuredSelection selection = (IStructuredSelection) _memView.getTreeViewer().getSelection();
94
		if (null == selection || selection.isEmpty())
95
			return null;
96
		Object element = selection.getFirstElement();
97
		if (!(element instanceof TRCClass))
98
			return null;
99
		return (TRCClass) element;*/
100
	}
101
81
	public Object[] getElements(Object inputElement) {
102
	public Object[] getElements(Object inputElement) {
82
		return new Object[] {""};
103
		TRCClass cls = getSelectedClass();
104
		if (null == cls)
105
			return _emptyArr;
106
		EList list = cls.getAnnotations();
107
		if (null == list)
108
			return _emptyArr;
109
		return list.toArray();
83
	}
110
	}
84
111
85
	public int compare(Viewer viewer, Object e1, Object e2, int pos) {
112
	public int compare(Viewer viewer, Object e1, Object e2, int pos) {
Lines 96-102 Link Here
96
123
97
	protected StatisticSorter getViewerSorterInstance() {
124
	protected StatisticSorter getViewerSorterInstance() {
98
		return new StatisticSorter() {
125
		return new StatisticSorter() {
99
			
100
		};
126
		};
101
	}
127
	}
128
129
	protected void populateData(Object obj) {
130
		if (obj instanceof TRCClass) {
131
			_class = (TRCClass) obj;
132
			refresh();
133
		}
134
	}
135
	
136
	public void handleViewSelectionChangedEvent(ViewSelectionChangedEvent event) {
137
		Object source = event.getSource();
138
		if (source != this) {
139
			ITraceSelection model = UIPlugin.getDefault().getSelectionModel(_page.getMOFObject());
140
			if (model.size() > 0) {
141
				Object sel = model.getFirstElement();
142
				if (sel != null) {
143
					populateData(sel);
144
				}
145
			}
146
		}
147
	}
102
}
148
}
(-)src/org/eclipse/tptp/trace/jvmti/internal/client/widgets/ThreadsTipHandler.java (-13 / +23 lines)
Lines 13-24 Link Here
13
 *****************************************************************************/
13
 *****************************************************************************/
14
package org.eclipse.tptp.trace.jvmti.internal.client.widgets;
14
package org.eclipse.tptp.trace.jvmti.internal.client.widgets;
15
15
16
import org.eclipse.hyades.models.trace.TRCClass;
16
import org.eclipse.hyades.models.trace.TRCObject;
17
import org.eclipse.hyades.models.trace.TRCObject;
17
import org.eclipse.hyades.models.trace.TRCThread;
18
import org.eclipse.hyades.models.trace.TRCThread;
18
import org.eclipse.hyades.models.trace.TRCThreadEvent;
19
import org.eclipse.hyades.models.trace.TRCThreadEvent;
19
import org.eclipse.hyades.models.trace.TRCThreadWaitingForLockEvent;
20
import org.eclipse.hyades.models.trace.TRCThreadWaitingForLockEvent;
20
import org.eclipse.hyades.models.trace.TRCThreadWaitingForObjectEvent;
21
import org.eclipse.hyades.models.trace.TRCThreadWaitingForObjectEvent;
21
import org.eclipse.hyades.trace.views.internal.TraceUIMessages;
22
import org.eclipse.swt.SWT;
22
import org.eclipse.swt.SWT;
23
import org.eclipse.swt.events.MouseAdapter;
23
import org.eclipse.swt.events.MouseAdapter;
24
import org.eclipse.swt.events.MouseEvent;
24
import org.eclipse.swt.events.MouseEvent;
Lines 34-39 Link Here
34
import org.eclipse.swt.widgets.TableColumn;
34
import org.eclipse.swt.widgets.TableColumn;
35
import org.eclipse.swt.widgets.TableItem;
35
import org.eclipse.swt.widgets.TableItem;
36
import org.eclipse.swt.widgets.Widget;
36
import org.eclipse.swt.widgets.Widget;
37
import org.eclipse.tptp.trace.jvmti.internal.client.views.UIMessages;
37
38
38
public class ThreadsTipHandler {
39
public class ThreadsTipHandler {
39
40
Lines 97-125 Link Here
97
		    TRCThreadEvent nextEvent = Utils.findEvent(thrd,
98
		    TRCThreadEvent nextEvent = Utils.findEvent(thrd,
98
			    threadStates.hitTimeTest(pt.x, pt.y), 1);
99
			    threadStates.hitTimeTest(pt.x, pt.y), 1);
99
		    // thread name
100
		    // thread name
100
		    addItem(TraceUIMessages._203, thrd.getName());
101
		    addItem(UIMessages._THREAD_NAME, thrd.getName());
101
		    // class name
102
		    // class name
102
		    addItem(TraceUIMessages._198, Utils.getThreadClassName(thrd));
103
		    addItem(UIMessages._THREAD_CLASS_NAME, Utils.getThreadClassName(thrd));
103
		    // thread state
104
		    // thread state
104
		    addItem(TraceUIMessages._255, Utils.getEventName(threadEvent));
105
		    addItem(UIMessages._THREAD_STATE, Utils.getEventName(threadEvent));
105
106
106
		    TRCObject obj;
107
		    TRCObject obj;
107
		    if (threadEvent instanceof TRCThreadWaitingForObjectEvent) {
108
		    if (threadEvent instanceof TRCThreadWaitingForObjectEvent) {
108
			TRCThreadWaitingForObjectEvent event = (TRCThreadWaitingForObjectEvent) threadEvent;
109
			TRCThreadWaitingForObjectEvent event = (TRCThreadWaitingForObjectEvent) threadEvent;
109
			obj = event.getObjectWaitingFor();
110
			obj = event.getObjectWaitingFor();
110
			addItem("object for which the thread wait",
111
			addItem(UIMessages._OBJECT_WAITING_FOR,
111
				obj != null ? obj.getIsA().getName() : "null");
112
				obj != null ? obj.getIsA().getName() : "null");
112
			addItem("timeout", "" + event.getTimeout());
113
			addItem(UIMessages._TIMEOUT, "" + event.getTimeout());
113
114
114
		    } else if (threadEvent instanceof TRCThreadWaitingForLockEvent) {
115
		    } else if (threadEvent instanceof TRCThreadWaitingForLockEvent) {
115
			TRCThreadWaitingForLockEvent event = (TRCThreadWaitingForLockEvent) threadEvent;
116
			TRCThreadWaitingForLockEvent event = (TRCThreadWaitingForLockEvent) threadEvent;
117
			obj = event.getLockedObject();
118
			String monitor = "null";
119
			if (obj != null) {
120
				TRCClass cls = obj.getIsA();
121
				if (cls != null) {
122
					monitor = "";
123
					if (cls.getPackage() != null && cls.getPackage().getName().length() > 0)
124
						monitor+= cls.getPackage().getName() + ".";
125
					monitor+= cls.getName();
126
				}
127
			}
128
			addItem(UIMessages._THREAD_MONITOR, monitor);
116
			TRCThread thread = event.getLockingThread();
129
			TRCThread thread = event.getLockingThread();
117
			if (thread != null)
130
			if (thread != null)
118
			    addItem("locking thread", thread.getName()
131
			    addItem(UIMessages._MONITOR_OWNER, thread.getName()
119
				    + "[" + Utils.getThreadClassName(thread) + "]");
132
				    + "[" + Utils.getThreadClassName(thread) + "]");
120
			obj = event.getLockedObject();
121
			addItem("locked object", obj != null ? obj
122
				.toString() : "null");
123
133
124
		    }
134
		    }
125
135
Lines 129-139 Link Here
129
		    double stopTime = (nextEvent == null ? thrd.getStopTime()
139
		    double stopTime = (nextEvent == null ? thrd.getStopTime()
130
			    : nextEvent.getTime());
140
			    : nextEvent.getTime());
131
		    double duration = stopTime - startTime;
141
		    double duration = stopTime - startTime;
132
		    addItem(TraceUIMessages._253, Utils.formatTime(startTime));
142
		    addItem(UIMessages._THREAD_START_TIME, Utils.formatTime(startTime));
133
		    addItem("Duration", duration > 0 ? Utils.formatTime(duration) : "?");
143
		    addItem(UIMessages._DURATION, duration > 0 ? Utils.formatTime(duration) : "?");
134
144
135
		} else if (item instanceof GroupItem) {
145
		} else if (item instanceof GroupItem) {
136
		    addItem("Group name", item.toString());
146
		    addItem(UIMessages._THREAD_GROUP_NAME, item.toString());
137
		    addItem("Number of threads", ""
147
		    addItem("Number of threads", ""
138
			    + ((GroupItem) item)._threads.size());
148
			    + ((GroupItem) item)._threads.size());
139
		}
149
		}
(-)src/org/eclipse/tptp/trace/jvmti/internal/client/widgets/Utils.java (-3 / +103 lines)
Lines 33-44 Link Here
33
import org.eclipse.hyades.models.trace.TRCThreadWaitingForObjectEvent;
33
import org.eclipse.hyades.models.trace.TRCThreadWaitingForObjectEvent;
34
import org.eclipse.hyades.trace.ui.ITraceSelection;
34
import org.eclipse.hyades.trace.ui.ITraceSelection;
35
import org.eclipse.hyades.trace.ui.UIPlugin;
35
import org.eclipse.hyades.trace.ui.UIPlugin;
36
import org.eclipse.hyades.trace.ui.internal.util.TraceMessages;
37
import org.eclipse.hyades.trace.views.internal.TraceUIMessages;
36
import org.eclipse.hyades.trace.views.internal.TraceUIPlugin;
38
import org.eclipse.hyades.trace.views.internal.TraceUIPlugin;
39
import org.eclipse.hyades.trace.views.util.internal.OpenSource;
40
import org.eclipse.hyades.ui.internal.util.OpenJavaSource;
37
import org.eclipse.hyades.ui.provisional.context.ContextManager;
41
import org.eclipse.hyades.ui.provisional.context.ContextManager;
38
import org.eclipse.hyades.ui.provisional.context.IContextLabelFormatProvider;
42
import org.eclipse.hyades.ui.provisional.context.IContextLabelFormatProvider;
43
import org.eclipse.jdt.core.search.IJavaSearchConstants;
44
import org.eclipse.jdt.core.search.SearchEngine;
39
import org.eclipse.jface.action.Action;
45
import org.eclipse.jface.action.Action;
46
import org.eclipse.jface.dialogs.MessageDialog;
40
import org.eclipse.jface.resource.ImageDescriptor;
47
import org.eclipse.jface.resource.ImageDescriptor;
48
import org.eclipse.osgi.util.NLS;
41
import org.eclipse.swt.SWT;
49
import org.eclipse.swt.SWT;
50
import org.eclipse.swt.custom.BusyIndicator;
42
import org.eclipse.swt.graphics.Color;
51
import org.eclipse.swt.graphics.Color;
43
import org.eclipse.swt.graphics.Device;
52
import org.eclipse.swt.graphics.Device;
44
import org.eclipse.swt.graphics.GC;
53
import org.eclipse.swt.graphics.GC;
Lines 323-330 Link Here
323
		String name = "";
332
		String name = "";
324
		if (method.name != null)
333
		if (method.name != null)
325
			name += method.name;
334
			name += method.name;
326
		if (method.signature != null)
335
		if (method.signature != null) {
327
			name += method.signature;
336
			int pos = method.signature.indexOf('(');
337
			if (pos >= 0)
338
				name += method.signature.substring(pos);
339
		}
328
		if (method.line >= 0)
340
		if (method.line >= 0)
329
			name += " line: " + method.line;
341
			name += " line: " + method.line;
330
		return name;
342
		return name;
Lines 395-401 Link Here
395
			for (int i = 0; i < list.size(); i++) {
407
			for (int i = 0; i < list.size(); i++) {
396
				String name = list.get(i).toString();
408
				String name = list.get(i).toString();
397
				String sig = null;
409
				String sig = null;
398
				int pos = name.indexOf('(');
410
				int pos = name.indexOf(' ');
399
				if (pos >= 0) {
411
				if (pos >= 0) {
400
					sig = name.substring(pos + 1);
412
					sig = name.substring(pos + 1);
401
					name = name.substring(0, pos);
413
					name = name.substring(0, pos);
Lines 527-530 Link Here
527
			return ((TRCClass) element).getPackage();
539
			return ((TRCClass) element).getPackage();
528
		return null;
540
		return null;
529
	}
541
	}
542
543
	public static String fixMethodSignature(String sig) {
544
		int pos = sig.indexOf('(');
545
		if (pos >= 0) {
546
			String ret = sig.substring(0, pos);
547
			sig = sig.substring(pos);
548
			sig = sig + " " + ret;
549
		}
550
		return sig;
551
	}
552
553
	public static String restoreMethodSignature(String sig) {
554
		String ret = "";
555
		int pos = sig.indexOf('(');
556
		if (pos >= 0) {
557
			ret = sig.substring(0, pos);
558
			sig = sig.substring(pos + 1);
559
		}
560
		pos = sig.indexOf(')');
561
		if (pos >= 0) {
562
			sig = sig.substring(0, pos);
563
		}
564
		String args[] = sig.split(",");
565
		sig = "(";
566
		for (int i = 0; i < args.length; i++) {
567
			String arg = args[i].trim();
568
			if (arg.length() == 0 && args.length == 1)
569
				break;
570
			sig += getTypeSignature(arg);
571
		}
572
		sig += ")" + getTypeSignature(ret);
573
		return sig;
574
	}
575
576
	static public String getTypeSignature(String type) {
577
		int dim = 0;
578
		for (int j = 0; j < type.length(); j++) {
579
			if (type.charAt(j) == '[')
580
				dim++;
581
		}
582
		int pos = type.indexOf('[');
583
		if (pos >= 0)
584
			type = type.substring(0, pos);
585
		String sig = "";
586
		for (int j = 0; j < dim; j++)
587
			sig += "[";
588
		if (type.equals("boolean"))
589
			sig+= "Z";
590
		else if (type.equals("byte"))
591
			sig+= "B";
592
		else if (type.equals("char"))
593
			sig+= "C";
594
		else if (type.equals("short"))
595
			sig+= "S";
596
		else if (type.equals("int"))
597
			sig+= "I";
598
		else if (type.equals("long"))
599
			sig+= "J";
600
		else if (type.equals("float"))
601
			sig+= "F";
602
		else if (type.equals("double"))
603
			sig+= "D";
604
		else if (type.equals("void"))
605
			sig+= "V";
606
		else
607
			sig+= "L" + type.replace('.', '/') + ";";
608
		return sig;
609
	}
610
611
	public static boolean openSource(Object element) {
612
		if (element instanceof String) {
613
			final String pattern = (String) element;
614
			final int javaType = IJavaSearchConstants.METHOD;
615
			BusyIndicator.showWhile(Display.getDefault(), new Runnable() {
616
				public void run() {
617
					if (!OpenJavaSource.openSource(pattern, javaType,
618
							SearchEngine.createWorkspaceScope(), true)) {
619
						MessageDialog.openInformation(UIPlugin.getDefault()
620
								.getWorkbench().getActiveWorkbenchWindow()
621
								.getShell(), TraceMessages.TRC_MSGT, NLS.bind(
622
								TraceUIMessages._68, pattern));
623
					}
624
				}
625
			});
626
		}
627
		OpenSource.openSource(element);
628
		return true;
629
	}
530
}
630
}
(-)META-INF/MANIFEST.MF (-1 / +2 lines)
Lines 10-16 Link Here
10
 org.eclipse.hyades.trace.views;bundle-version="[4.1.0,5.0.0)",
10
 org.eclipse.hyades.trace.views;bundle-version="[4.1.0,5.0.0)",
11
 org.eclipse.tptp.platform.models,
11
 org.eclipse.tptp.platform.models,
12
 org.eclipse.hyades.trace.ui,
12
 org.eclipse.hyades.trace.ui,
13
 org.eclipse.ui.forms
13
 org.eclipse.ui.forms,
14
 org.eclipse.jdt.core
14
Eclipse-LazyStart: true
15
Eclipse-LazyStart: true
15
Bundle-Vendor: %providerName
16
Bundle-Vendor: %providerName
16
Bundle-RequiredExecutionEnvironment: J2SE-1.4
17
Bundle-RequiredExecutionEnvironment: J2SE-1.4
(-)src/org/eclipse/tptp/trace/jvmti/internal/client/views/columnlabels/AvgAgeLabelAdapter.java (-26 / +1 lines)
Lines 15-23 Link Here
15
import org.eclipse.emf.ecore.EObject;
15
import org.eclipse.emf.ecore.EObject;
16
import org.eclipse.hyades.models.trace.TRCClass;
16
import org.eclipse.hyades.models.trace.TRCClass;
17
import org.eclipse.hyades.models.trace.TRCPackage;
17
import org.eclipse.hyades.models.trace.TRCPackage;
18
import org.eclipse.hyades.models.trace.TracePackage;
19
import org.eclipse.hyades.models.trace.impl.TRCClassImpl.TRCClassSnapshot;
20
import org.eclipse.hyades.models.trace.impl.TRCPackageImpl.TRCPackageSnapshot;
21
import org.eclipse.hyades.trace.views.internal.view.columnlabels.ColumnDisplayInfo;
18
import org.eclipse.hyades.trace.views.internal.view.columnlabels.ColumnDisplayInfo;
22
import org.eclipse.hyades.trace.views.internal.view.columnlabels.ContextUpdaterHelper;
19
import org.eclipse.hyades.trace.views.internal.view.columnlabels.ContextUpdaterHelper;
23
import org.eclipse.tptp.trace.jvmti.internal.client.context.TIContextAttributes;
20
import org.eclipse.tptp.trace.jvmti.internal.client.context.TIContextAttributes;
Lines 33-47 Link Here
33
30
34
	protected Number getValue(Object element, ColumnDisplayInfo info) {
31
	protected Number getValue(Object element, ColumnDisplayInfo info) {
35
		if (element instanceof TRCPackage) {
32
		if (element instanceof TRCPackage) {
36
			// TODO stub
33
			return null;
37
			//TRCPackageImpl.TRCPackageSnapshot ps = (TRCPackageImpl.TRCPackageSnapshot)((TRCPackage) element).retrieveSnapshot();		
38
			//return new Integer(getAverageAge());
39
			return new Integer(0);
40
		}
34
		}
41
		if (element instanceof TRCClass) {
35
		if (element instanceof TRCClass) {
42
			// TODO stub
43
			//TRCClassImpl.TRCClassSnapshot cs = (TRCClassImpl.TRCClassSnapshot)((TRCClass) element).retrieveSnapshot();		
44
			//return new Integer(getAverageAge());
45
			AgeInfo age = (AgeInfo) _ageMap.get(element);
36
			AgeInfo age = (AgeInfo) _ageMap.get(element);
46
			double sum = age != null ? age.sumAges : 0;
37
			double sum = age != null ? age.sumAges : 0;
47
			int count = age != null ? age.objCount : 0;
38
			int count = age != null ? age.objCount : 0;
Lines 55-76 Link Here
55
	}
46
	}
56
47
57
	protected Number getDelta(Object element, ColumnDisplayInfo info) {
48
	protected Number getDelta(Object element, ColumnDisplayInfo info) {
58
		if (element instanceof TRCPackage) {
59
			// TODO stub
60
			TRCPackageSnapshot delta = packageSnapshot();
61
			((TRCPackage)element).computeDelta(delta,TracePackage.TRC_PACKAGE__TOTAL_INSTANCES);
62
			((TRCPackage)element).computeDelta(delta,TracePackage.TRC_PACKAGE__COLLECTED_INSTANCES);						
63
			//return new Integer(delta.getTotalInstances() - delta.getCollectedInstances());
64
			return new Integer(0);
65
		}
66
		if (element instanceof TRCClass) {
67
			// TODO stub
68
			TRCClassSnapshot delta = classSnapshot();			
69
			((TRCClass)element).computeDelta(delta,TracePackage.TRC_CLASS__TOTAL_INSTANCES);
70
			((TRCClass)element).computeDelta(delta,TracePackage.TRC_CLASS__COLLECTED_INSTANCES);						
71
			//return new Integer(delta.getTotalInstances() - delta.getCollectedInstances());
72
			return new Integer(0);
73
		}		
74
		return null;
49
		return null;
75
	}
50
	}
76
	
51
	
(-)src/org/eclipse/tptp/trace/jvmti/internal/client/context/AverageAgeLP.java (-3 / +18 lines)
Lines 20-35 Link Here
20
import org.eclipse.hyades.ui.provisional.context.IContextLabelFormatProvider;
20
import org.eclipse.hyades.ui.provisional.context.IContextLabelFormatProvider;
21
import org.eclipse.tptp.trace.jvmti.internal.client.views.UIMessages;
21
import org.eclipse.tptp.trace.jvmti.internal.client.views.UIMessages;
22
22
23
import com.ibm.icu.text.NumberFormat;
24
23
public class AverageAgeLP extends AttrLPAdapter {
25
public class AverageAgeLP extends AttrLPAdapter {
24
26
25
	public String getDisplayStringFromElement(Object value, Object element, int mode) {
27
	static NumberFormat _decimalFormat = null;
28
29
	public static String formatValue(double d) {
30
		if (_decimalFormat == null) {
31
			_decimalFormat = NumberFormat.getNumberInstance();
32
			_decimalFormat.setMaximumFractionDigits(2);
33
			_decimalFormat.setMinimumFractionDigits(0);
34
		}
35
		return _decimalFormat.format(d);
36
	}
37
38
	public String getDisplayStringFromElement(Object value, Object element,
39
			int mode) {
26
		if (mode == IContextLabelFormatProvider.MODE_COLUMN_HEADER)
40
		if (mode == IContextLabelFormatProvider.MODE_COLUMN_HEADER)
27
			return UIMessages._AVG_AGE;
41
			return UIMessages._AVG_AGE;
28
		else if (mode == IContextLabelFormatProvider.MODE_COLUMN_CONTENT) {
42
		else if (mode == IContextLabelFormatProvider.MODE_COLUMN_CONTENT) {
29
			if (value != null && value instanceof Integer)
43
			if (value != null && value instanceof Integer)
30
				return value.toString();
44
				return value.toString();
31
			if (value != null && value instanceof Double)
45
			if (value != null && value instanceof Double) {
32
				return value.toString();
46
				return formatValue(((Double) value).doubleValue());
47
			}
33
		}
48
		}
34
		return "";
49
		return "";
35
	}
50
	}

Return to bug 167609