Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 60096 Details for
Bug 167609
Enhance Thread Statistics View
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read
this important communication.
[patch]
3 Mar patch - latest changes
org.eclipse.tptp.trace.jvmti.client_200703010000-patch (text/plain), 30.00 KB, created by
Ruslan Scherbakov
on 2007-03-01 12:44:14 EST
(
hide
)
Description:
3 Mar patch - latest changes
Filename:
MIME Type:
Creator:
Ruslan Scherbakov
Created:
2007-03-01 12:44:14 EST
Size:
30.00 KB
patch
obsolete
>Index: src/org/eclipse/tptp/trace/jvmti/internal/client/views/MemoryAnalysisPage.java >=================================================================== >RCS file: /cvsroot/tptp/trace/org.eclipse.tptp.trace.jvmti.client/src/org/eclipse/tptp/trace/jvmti/internal/client/views/MemoryAnalysisPage.java,v >retrieving revision 1.1 >diff -u -r1.1 MemoryAnalysisPage.java >--- src/org/eclipse/tptp/trace/jvmti/internal/client/views/MemoryAnalysisPage.java 27 Feb 2007 18:37:33 -0000 1.1 >+++ src/org/eclipse/tptp/trace/jvmti/internal/client/views/MemoryAnalysisPage.java 1 Mar 2007 17:35:34 -0000 >@@ -82,14 +82,18 @@ > > tabItem = new CTabItem(_tabFolder, SWT.NONE); > tabItem.setText("Memory Statistic"); >- _views[0] = new BaseMemoryStatisticView(_tabFolder, this); >+ BaseMemoryStatisticView memView = new BaseMemoryStatisticView(_tabFolder, this); >+ _views[0] = memView; > tabItem.setControl(_views[0].getControl()); > > tabItem = new CTabItem(_tabFolder, SWT.NONE); > tabItem.setText("Allocation Details"); >- _views[1] = new AllocationDetailsView(_tabFolder, this); >+ AllocationDetailsView allocView = new AllocationDetailsView(_tabFolder, this, memView); >+ _views[1] = allocView; > tabItem.setControl(_views[1].getControl()); >- >+ >+ memView._viewDetails = allocView; >+ > _tabFolder.setSelection(0); > } > >Index: src/org/eclipse/tptp/trace/jvmti/internal/client/views/UIMessages.java >=================================================================== >RCS file: /cvsroot/tptp/trace/org.eclipse.tptp.trace.jvmti.client/src/org/eclipse/tptp/trace/jvmti/internal/client/views/UIMessages.java,v >retrieving revision 1.5 >diff -u -r1.5 UIMessages.java >--- src/org/eclipse/tptp/trace/jvmti/internal/client/views/UIMessages.java 27 Feb 2007 18:37:33 -0000 1.5 >+++ src/org/eclipse/tptp/trace/jvmti/internal/client/views/UIMessages.java 1 Mar 2007 17:35:34 -0000 >@@ -62,8 +62,10 @@ > > public static String _THREAD_NAME; > public static String _THREAD_CLASS_NAME; >+ public static String _THREAD_GROUP_NAME; > public static String _THREAD_START_TIME; > public static String _THREAD_STOP_TIME; >+ public static String _DURATION; > public static String _THREAD_STATE; > public static String _THREAD_RUNNING_TIME; > public static String _THREAD_SLEEPING_TIME; >@@ -72,6 +74,11 @@ > public static String _THREAD_DEADLOCKED_TIME; > public static String _THREAD_BLOCK_COUNT; > public static String _THREAD_DEADLOCK_COUNT; >+ >+ public static String _THREAD_MONITOR; >+ public static String _MONITOR_OWNER; >+ public static String _TIMEOUT; >+ public static String _OBJECT_WAITING_FOR; > > private UIMessages() { > // Do not instantiate >Index: src/org/eclipse/tptp/trace/jvmti/internal/client/views/BaseMemoryStatisticView.java >=================================================================== >RCS file: /cvsroot/tptp/trace/org.eclipse.tptp.trace.jvmti.client/src/org/eclipse/tptp/trace/jvmti/internal/client/views/BaseMemoryStatisticView.java,v >retrieving revision 1.1 >diff -u -r1.1 BaseMemoryStatisticView.java >--- src/org/eclipse/tptp/trace/jvmti/internal/client/views/BaseMemoryStatisticView.java 27 Feb 2007 18:37:33 -0000 1.1 >+++ src/org/eclipse/tptp/trace/jvmti/internal/client/views/BaseMemoryStatisticView.java 1 Mar 2007 17:35:34 -0000 >@@ -15,7 +15,6 @@ > package org.eclipse.tptp.trace.jvmti.internal.client.views; > > import java.util.Hashtable; >-import java.util.Iterator; > import java.util.Map; > > import org.eclipse.emf.common.util.EList; >@@ -76,6 +75,7 @@ > > protected int _totalAge; > protected int _totalGenerations; >+ protected AllocationDetailsView _viewDetails; > > static private int V = ColumnData.IS_VISIBLE; > static private int D = ColumnData.SUPPORTS_DELTA; >@@ -238,7 +238,7 @@ > + IContextAttributes.CLASS_ACTIVE_SIZE + ":" + CM_COL_LIVE_SIZE + ":" + String.valueOf(V | D) + ":right:80," > + IContextAttributes.CLASS_TOTAL_INST + ":" + CM_COL_TOTAL_INST + ":" + String.valueOf(V | D) + ":right:80," > + IContextAttributes.CLASS_TOTAL_SIZE + ":" + CM_COL_TOTAL_SIZE + ":" + String.valueOf(V | D) + ":right:80," >- + TIContextAttributes.CLASS_AVG_AGE + ":" + CM_COL_AVG_AGE + ":" + String.valueOf(V | D) + ":right:80" >+ + TIContextAttributes.CLASS_AVG_AGE + ":" + CM_COL_AVG_AGE + ":" + String.valueOf(V) + ":right:80" > //+ TIContextAttributes.CLASS_GENERATIONS + ":" + CM_COL_GENERATIONS + ":" + String.valueOf(V | D) + ":right:80" > ; > } >@@ -250,7 +250,7 @@ > + IContextAttributes.PACKAGE_ACTIVE_SIZE + ":" + PM_COL_LIVE_SIZE + ":" + String.valueOf(V | D) + ":right:80," > + IContextAttributes.PACKAGE_TOTAL_INST + ":" + PM_COL_TOTAL_INST + ":" + String.valueOf(V | D) + ":right:80," > + IContextAttributes.PACKAGE_TOTAL_SIZE + ":" + PM_COL_TOTAL_SIZE + ":" + String.valueOf(V | D) + ":right:80," >- + TIContextAttributes.PACKAGE_AVG_AGE + ":" + PM_COL_AVG_AGE + ":" + String.valueOf(V | D) + ":right:80" >+ + TIContextAttributes.PACKAGE_AVG_AGE + ":" + PM_COL_AVG_AGE + ":" + String.valueOf(V) + ":right:80" > //+ TIContextAttributes.PACKAGE_GENERATIONS + ":" + PM_COL_GENERATIONS + ":" + String.valueOf(V | D) + ":right:80" > ; > } >@@ -292,15 +292,17 @@ > int age = 0; > double t0 = obj.getCreateTime(); > double t1 = obj.getCollectTime(); >- Iterator it = listGC.iterator(); >- while (it.hasNext()) { >- TRCGCEvent gcEvent = (TRCGCEvent) it.next(); >- double time = gcEvent.getTime(); >- if (time <= t0) >- continue; >- if (t1 > 0 && time >= t1) >- break; >- age++; >+ int len = listGC.size(); >+ for (int j = 0; j < len; j++) { >+ TRCGCEvent gcEvent = (TRCGCEvent) listGC.get(j); >+ if (gcEvent.getType().equals("finish")) { >+ double time = gcEvent.getTime(); >+ if (time <= t0) >+ continue; >+ if (t1 > 0 && time >= t1) >+ break; >+ age++; >+ } > } > return age; > } >@@ -333,4 +335,10 @@ > public int sumAges; > public int objCount; > } >+ >+ protected void select(Object obj) { >+ if (null == _viewDetails || _viewDetails.getControl().isDisposed()) >+ return; >+ _viewDetails.populateData(obj); >+ } > } >Index: src/org/eclipse/tptp/trace/jvmti/internal/client/views/BaseStatisticView.java >=================================================================== >RCS file: /cvsroot/tptp/trace/org.eclipse.tptp.trace.jvmti.client/src/org/eclipse/tptp/trace/jvmti/internal/client/views/BaseStatisticView.java,v >retrieving revision 1.1 >diff -u -r1.1 BaseStatisticView.java >--- src/org/eclipse/tptp/trace/jvmti/internal/client/views/BaseStatisticView.java 27 Feb 2007 18:37:33 -0000 1.1 >+++ src/org/eclipse/tptp/trace/jvmti/internal/client/views/BaseStatisticView.java 1 Mar 2007 17:35:34 -0000 >@@ -130,13 +130,16 @@ > if (model.size() > 0) { > Object sel = model.getFirstElement(); > if (sel != null) { >- //select(sel); >+ select(sel); > if (sel instanceof EObject) > updateStatusContext(ContextManager.getContextLanguage(ContextUpdaterHelper.getContext((EObject)sel))); > } > } > } > >+ protected void select(Object obj) { >+ } >+ > public void updateModelSelection() { > ISelection selection = getTreeViewer().getSelection(); > if (selection != null && !selection.isEmpty()) { >Index: src/org/eclipse/tptp/trace/jvmti/internal/client/views/CallStackViewer.java >=================================================================== >RCS file: /cvsroot/tptp/trace/org.eclipse.tptp.trace.jvmti.client/src/org/eclipse/tptp/trace/jvmti/internal/client/views/CallStackViewer.java,v >retrieving revision 1.2 >diff -u -r1.2 CallStackViewer.java >--- src/org/eclipse/tptp/trace/jvmti/internal/client/views/CallStackViewer.java 27 Feb 2007 18:37:33 -0000 1.2 >+++ src/org/eclipse/tptp/trace/jvmti/internal/client/views/CallStackViewer.java 1 Mar 2007 17:35:34 -0000 >@@ -23,7 +23,6 @@ > import org.eclipse.hyades.trace.ui.IViewSelectionChangedListener; > import org.eclipse.hyades.trace.ui.UIPlugin; > import org.eclipse.hyades.trace.ui.ViewSelectionChangedEvent; >-import org.eclipse.hyades.trace.views.util.internal.OpenSource; > import org.eclipse.jface.viewers.DoubleClickEvent; > import org.eclipse.jface.viewers.IDoubleClickListener; > import org.eclipse.jface.viewers.IStructuredSelection; >@@ -61,9 +60,12 @@ > Object element = trsel.getFirstElement(); > if (null == element) > return; >- if (element instanceof TRCMethodInvocation || >- element instanceof TRCMethodInvocation) { >- OpenSource.openSource(element); >+ if (element instanceof TRCMethodInvocation) { >+ Utils.openSource(element); >+ } else if (element instanceof MethodDetails) { >+ MethodDetails md = (MethodDetails) element; >+ String pattern = md.name + Utils.fixMethodSignature(md.signature); >+ Utils.openSource(pattern); > } else if (_calStackCtrl.isExpandable(element)) { > _calStackCtrl.expandToLevel(element, 1); > } >Index: src/org/eclipse/tptp/trace/jvmti/internal/client/views/messages.properties >=================================================================== >RCS file: /cvsroot/tptp/trace/org.eclipse.tptp.trace.jvmti.client/src/org/eclipse/tptp/trace/jvmti/internal/client/views/messages.properties,v >retrieving revision 1.5 >diff -u -r1.5 messages.properties >--- src/org/eclipse/tptp/trace/jvmti/internal/client/views/messages.properties 27 Feb 2007 18:41:19 -0000 1.5 >+++ src/org/eclipse/tptp/trace/jvmti/internal/client/views/messages.properties 1 Mar 2007 17:35:34 -0000 >@@ -55,9 +55,11 @@ > _GENERATIONS = Generations > _LINE_NUMBER = Line No. > _THREAD_NAME = Thread Name >-_THREAD_CLASS_NAME = Class >+_THREAD_CLASS_NAME = Class Name >+_THREAD_GROUP_NAME = Group Name > _THREAD_START_TIME = Start Time > _THREAD_STOP_TIME = Stop Time >+_DURATION = Duration > _THREAD_STATE = State > _THREAD_RUNNING_TIME = Running Time > _THREAD_SLEEPING_TIME = Sleeping Time >@@ -65,4 +67,9 @@ > _THREAD_BLOCKED_TIME = Blocked Time > _THREAD_DEADLOCKED_TIME = Deadlocked Time > _THREAD_BLOCK_COUNT = Block Count >-_THREAD_DEADLOCK_COUNT = Deadlock Count >\ No newline at end of file >+_THREAD_DEADLOCK_COUNT = Deadlock Count >+ >+_THREAD_MONITOR = Monitor >+_MONITOR_OWNER = Monitor Owner >+_TIMEOUT = Timeout >+_OBJECT_WAITING_FOR = Object Waiting For >Index: src/org/eclipse/tptp/trace/jvmti/internal/client/views/AllocationDetailsView.java >=================================================================== >RCS file: /cvsroot/tptp/trace/org.eclipse.tptp.trace.jvmti.client/src/org/eclipse/tptp/trace/jvmti/internal/client/views/AllocationDetailsView.java,v >retrieving revision 1.1 >diff -u -r1.1 AllocationDetailsView.java >--- src/org/eclipse/tptp/trace/jvmti/internal/client/views/AllocationDetailsView.java 27 Feb 2007 18:37:33 -0000 1.1 >+++ src/org/eclipse/tptp/trace/jvmti/internal/client/views/AllocationDetailsView.java 1 Mar 2007 17:35:34 -0000 >@@ -14,10 +14,18 @@ > > package org.eclipse.tptp.trace.jvmti.internal.client.views; > >+import org.eclipse.emf.common.util.EList; >+import org.eclipse.emf.ecore.EObject; > import org.eclipse.hyades.models.trace.TRCClass; >+import org.eclipse.hyades.models.trace.TRCObjectAllocationAnnotation; >+import org.eclipse.hyades.trace.ui.ITraceSelection; > import org.eclipse.hyades.trace.ui.TraceViewerPage; >+import org.eclipse.hyades.trace.ui.UIPlugin; >+import org.eclipse.hyades.trace.ui.ViewSelectionChangedEvent; >+import org.eclipse.hyades.trace.views.internal.view.columnlabels.ContextUpdaterHelper; > import org.eclipse.hyades.trace.views.util.internal.ColumnData; > import org.eclipse.hyades.trace.views.util.internal.StatisticTableColumnInfo; >+import org.eclipse.hyades.ui.provisional.context.ContextManager; > import org.eclipse.jface.viewers.Viewer; > import org.eclipse.swt.graphics.Image; > import org.eclipse.swt.widgets.Composite; >@@ -25,12 +33,18 @@ > > public class AllocationDetailsView extends BaseStatisticView { > >- protected AllocationDetailsView(Composite parent, TraceViewerPage page) { >+ TRCClass _class; >+ BaseMemoryStatisticView _memView; >+ static final Object _emptyArr[] = new Object[0]; >+ >+ protected AllocationDetailsView(Composite parent, TraceViewerPage page, >+ BaseMemoryStatisticView memView) { > super(parent, page); >+ _memView = memView; > } > > protected String getColumnsPreferencesKey() { >- return "org.eclipse.hyades.trace.views.statistic.allocdetails02"; >+ return "org.eclipse.hyades.trace.views.statistic.allocdetails03"; > } > > protected String getViewTypeStr() { >@@ -41,7 +55,7 @@ > return "" > + TIContextAttributes.METHOD_NAME + ":" + 0 + ":" + String.valueOf(ColumnData.NONDELETABLE | ColumnData.IS_VISIBLE | ColumnData.NONMOVABLE) + ":left:150," > + TIContextAttributes.METHOD_LINE_NUMBER + ":" + 1 + ":" + String.valueOf(ColumnData.IS_VISIBLE) + ":left:120," >- + TIContextAttributes.THREAD_CLASS_NAME + ":" + 2 + ":" + String.valueOf(ColumnData.IS_VISIBLE) + ":left:150," >+ + TIContextAttributes.CLASS_NAME + ":" + 2 + ":" + String.valueOf(ColumnData.IS_VISIBLE) + ":left:150," > + TIContextAttributes.PACKAGE_NAME + ":" + 3 + ":" + String.valueOf(ColumnData.IS_VISIBLE) + ":left:120," > + TIContextAttributes.CLASS_LIVE_INST + ":" + 4 + ":" + String.valueOf(ColumnData.IS_VISIBLE) + ":right:80," > + TIContextAttributes.CLASS_ACTIVE_SIZE + ":" + 5 + ":" + String.valueOf(ColumnData.IS_VISIBLE) + ":right:80," >@@ -55,21 +69,15 @@ > public String getColumnText(Object element, int columnIndex) { > StatisticTableColumnInfo info = StatisticTableColumnInfo.getStatisticTableColumnInfo(getTree().getColumn(columnIndex)); > int pos = info.getColumnData().getInitalPos(); >- String label = "placeholder-" + pos; >- TRCClass cls = null; >- if (true) >+ String label = ""; >+ if (!(element instanceof TRCObjectAllocationAnnotation)) > return label; > switch (pos) { > case 0: label = "method name"; break; > case 1: label = "line number"; break; >- case 2: label = cls.getName(); break; >- case 3: label = cls.getPackage().getName(); break; >- case 4: label = "" + (cls.getTotalInstances() - cls.getCollectedInstances()); break; >- case 5: label = "" + (cls.getTotalSize() - cls.getCollectedSize()); break; >- case 6: label = "" + cls.getTotalInstances(); break; >- case 7: label = "" + cls.getTotalSize(); break; >- //case 8: label = "" + cls.getAvarageAge(); break; >- //case 9: label = "" + cls.getGenerations(); break; >+ case 2: break; >+ case 3: break; >+ case 4: break; > } > return label; > } >@@ -78,8 +86,27 @@ > return null; > } > >+ TRCClass getSelectedClass() { >+ return _class; >+ /*if (null == _memView || _memView.getControl().isDisposed()) >+ return null; >+ IStructuredSelection selection = (IStructuredSelection) _memView.getTreeViewer().getSelection(); >+ if (null == selection || selection.isEmpty()) >+ return null; >+ Object element = selection.getFirstElement(); >+ if (!(element instanceof TRCClass)) >+ return null; >+ return (TRCClass) element;*/ >+ } >+ > public Object[] getElements(Object inputElement) { >- return new Object[] {""}; >+ TRCClass cls = getSelectedClass(); >+ if (null == cls) >+ return _emptyArr; >+ EList list = cls.getAnnotations(); >+ if (null == list) >+ return _emptyArr; >+ return list.toArray(); > } > > public int compare(Viewer viewer, Object e1, Object e2, int pos) { >@@ -96,7 +123,26 @@ > > protected StatisticSorter getViewerSorterInstance() { > return new StatisticSorter() { >- > }; > } >+ >+ protected void populateData(Object obj) { >+ if (obj instanceof TRCClass) { >+ _class = (TRCClass) obj; >+ refresh(); >+ } >+ } >+ >+ public void handleViewSelectionChangedEvent(ViewSelectionChangedEvent event) { >+ Object source = event.getSource(); >+ if (source != this) { >+ ITraceSelection model = UIPlugin.getDefault().getSelectionModel(_page.getMOFObject()); >+ if (model.size() > 0) { >+ Object sel = model.getFirstElement(); >+ if (sel != null) { >+ populateData(sel); >+ } >+ } >+ } >+ } > } >Index: src/org/eclipse/tptp/trace/jvmti/internal/client/widgets/ThreadsTipHandler.java >=================================================================== >RCS file: /cvsroot/tptp/trace/org.eclipse.tptp.trace.jvmti.client/src/org/eclipse/tptp/trace/jvmti/internal/client/widgets/ThreadsTipHandler.java,v >retrieving revision 1.1 >diff -u -r1.1 ThreadsTipHandler.java >--- src/org/eclipse/tptp/trace/jvmti/internal/client/widgets/ThreadsTipHandler.java 27 Feb 2007 18:37:36 -0000 1.1 >+++ src/org/eclipse/tptp/trace/jvmti/internal/client/widgets/ThreadsTipHandler.java 1 Mar 2007 17:35:34 -0000 >@@ -13,12 +13,12 @@ > *****************************************************************************/ > package org.eclipse.tptp.trace.jvmti.internal.client.widgets; > >+import org.eclipse.hyades.models.trace.TRCClass; > import org.eclipse.hyades.models.trace.TRCObject; > import org.eclipse.hyades.models.trace.TRCThread; > import org.eclipse.hyades.models.trace.TRCThreadEvent; > import org.eclipse.hyades.models.trace.TRCThreadWaitingForLockEvent; > import org.eclipse.hyades.models.trace.TRCThreadWaitingForObjectEvent; >-import org.eclipse.hyades.trace.views.internal.TraceUIMessages; > import org.eclipse.swt.SWT; > import org.eclipse.swt.events.MouseAdapter; > import org.eclipse.swt.events.MouseEvent; >@@ -34,6 +34,7 @@ > import org.eclipse.swt.widgets.TableColumn; > import org.eclipse.swt.widgets.TableItem; > import org.eclipse.swt.widgets.Widget; >+import org.eclipse.tptp.trace.jvmti.internal.client.views.UIMessages; > > public class ThreadsTipHandler { > >@@ -97,29 +98,38 @@ > TRCThreadEvent nextEvent = Utils.findEvent(thrd, > threadStates.hitTimeTest(pt.x, pt.y), 1); > // thread name >- addItem(TraceUIMessages._203, thrd.getName()); >+ addItem(UIMessages._THREAD_NAME, thrd.getName()); > // class name >- addItem(TraceUIMessages._198, Utils.getThreadClassName(thrd)); >+ addItem(UIMessages._THREAD_CLASS_NAME, Utils.getThreadClassName(thrd)); > // thread state >- addItem(TraceUIMessages._255, Utils.getEventName(threadEvent)); >+ addItem(UIMessages._THREAD_STATE, Utils.getEventName(threadEvent)); > > TRCObject obj; > if (threadEvent instanceof TRCThreadWaitingForObjectEvent) { > TRCThreadWaitingForObjectEvent event = (TRCThreadWaitingForObjectEvent) threadEvent; > obj = event.getObjectWaitingFor(); >- addItem("object for which the thread wait", >+ addItem(UIMessages._OBJECT_WAITING_FOR, > obj != null ? obj.getIsA().getName() : "null"); >- addItem("timeout", "" + event.getTimeout()); >+ addItem(UIMessages._TIMEOUT, "" + event.getTimeout()); > > } else if (threadEvent instanceof TRCThreadWaitingForLockEvent) { > TRCThreadWaitingForLockEvent event = (TRCThreadWaitingForLockEvent) threadEvent; >+ obj = event.getLockedObject(); >+ String monitor = "null"; >+ if (obj != null) { >+ TRCClass cls = obj.getIsA(); >+ if (cls != null) { >+ monitor = ""; >+ if (cls.getPackage() != null && cls.getPackage().getName().length() > 0) >+ monitor+= cls.getPackage().getName() + "."; >+ monitor+= cls.getName(); >+ } >+ } >+ addItem(UIMessages._THREAD_MONITOR, monitor); > TRCThread thread = event.getLockingThread(); > if (thread != null) >- addItem("locking thread", thread.getName() >+ addItem(UIMessages._MONITOR_OWNER, thread.getName() > + "[" + Utils.getThreadClassName(thread) + "]"); >- obj = event.getLockedObject(); >- addItem("locked object", obj != null ? obj >- .toString() : "null"); > > } > >@@ -129,11 +139,11 @@ > double stopTime = (nextEvent == null ? thrd.getStopTime() > : nextEvent.getTime()); > double duration = stopTime - startTime; >- addItem(TraceUIMessages._253, Utils.formatTime(startTime)); >- addItem("Duration", duration > 0 ? Utils.formatTime(duration) : "?"); >+ addItem(UIMessages._THREAD_START_TIME, Utils.formatTime(startTime)); >+ addItem(UIMessages._DURATION, duration > 0 ? Utils.formatTime(duration) : "?"); > > } else if (item instanceof GroupItem) { >- addItem("Group name", item.toString()); >+ addItem(UIMessages._THREAD_GROUP_NAME, item.toString()); > addItem("Number of threads", "" > + ((GroupItem) item)._threads.size()); > } >Index: src/org/eclipse/tptp/trace/jvmti/internal/client/widgets/Utils.java >=================================================================== >RCS file: /cvsroot/tptp/trace/org.eclipse.tptp.trace.jvmti.client/src/org/eclipse/tptp/trace/jvmti/internal/client/widgets/Utils.java,v >retrieving revision 1.3 >diff -u -r1.3 Utils.java >--- src/org/eclipse/tptp/trace/jvmti/internal/client/widgets/Utils.java 27 Feb 2007 18:37:36 -0000 1.3 >+++ src/org/eclipse/tptp/trace/jvmti/internal/client/widgets/Utils.java 1 Mar 2007 17:35:35 -0000 >@@ -33,12 +33,21 @@ > import org.eclipse.hyades.models.trace.TRCThreadWaitingForObjectEvent; > import org.eclipse.hyades.trace.ui.ITraceSelection; > import org.eclipse.hyades.trace.ui.UIPlugin; >+import org.eclipse.hyades.trace.ui.internal.util.TraceMessages; >+import org.eclipse.hyades.trace.views.internal.TraceUIMessages; > import org.eclipse.hyades.trace.views.internal.TraceUIPlugin; >+import org.eclipse.hyades.trace.views.util.internal.OpenSource; >+import org.eclipse.hyades.ui.internal.util.OpenJavaSource; > import org.eclipse.hyades.ui.provisional.context.ContextManager; > import org.eclipse.hyades.ui.provisional.context.IContextLabelFormatProvider; >+import org.eclipse.jdt.core.search.IJavaSearchConstants; >+import org.eclipse.jdt.core.search.SearchEngine; > import org.eclipse.jface.action.Action; >+import org.eclipse.jface.dialogs.MessageDialog; > import org.eclipse.jface.resource.ImageDescriptor; >+import org.eclipse.osgi.util.NLS; > import org.eclipse.swt.SWT; >+import org.eclipse.swt.custom.BusyIndicator; > import org.eclipse.swt.graphics.Color; > import org.eclipse.swt.graphics.Device; > import org.eclipse.swt.graphics.GC; >@@ -323,8 +332,11 @@ > String name = ""; > if (method.name != null) > name += method.name; >- if (method.signature != null) >- name += method.signature; >+ if (method.signature != null) { >+ int pos = method.signature.indexOf('('); >+ if (pos >= 0) >+ name += method.signature.substring(pos); >+ } > if (method.line >= 0) > name += " line: " + method.line; > return name; >@@ -395,7 +407,7 @@ > for (int i = 0; i < list.size(); i++) { > String name = list.get(i).toString(); > String sig = null; >- int pos = name.indexOf('('); >+ int pos = name.indexOf(' '); > if (pos >= 0) { > sig = name.substring(pos + 1); > name = name.substring(0, pos); >@@ -527,4 +539,92 @@ > return ((TRCClass) element).getPackage(); > return null; > } >+ >+ public static String fixMethodSignature(String sig) { >+ int pos = sig.indexOf('('); >+ if (pos >= 0) { >+ String ret = sig.substring(0, pos); >+ sig = sig.substring(pos); >+ sig = sig + " " + ret; >+ } >+ return sig; >+ } >+ >+ public static String restoreMethodSignature(String sig) { >+ String ret = ""; >+ int pos = sig.indexOf('('); >+ if (pos >= 0) { >+ ret = sig.substring(0, pos); >+ sig = sig.substring(pos + 1); >+ } >+ pos = sig.indexOf(')'); >+ if (pos >= 0) { >+ sig = sig.substring(0, pos); >+ } >+ String args[] = sig.split(","); >+ sig = "("; >+ for (int i = 0; i < args.length; i++) { >+ String arg = args[i].trim(); >+ if (arg.length() == 0 && args.length == 1) >+ break; >+ sig += getTypeSignature(arg); >+ } >+ sig += ")" + getTypeSignature(ret); >+ return sig; >+ } >+ >+ static public String getTypeSignature(String type) { >+ int dim = 0; >+ for (int j = 0; j < type.length(); j++) { >+ if (type.charAt(j) == '[') >+ dim++; >+ } >+ int pos = type.indexOf('['); >+ if (pos >= 0) >+ type = type.substring(0, pos); >+ String sig = ""; >+ for (int j = 0; j < dim; j++) >+ sig += "["; >+ if (type.equals("boolean")) >+ sig+= "Z"; >+ else if (type.equals("byte")) >+ sig+= "B"; >+ else if (type.equals("char")) >+ sig+= "C"; >+ else if (type.equals("short")) >+ sig+= "S"; >+ else if (type.equals("int")) >+ sig+= "I"; >+ else if (type.equals("long")) >+ sig+= "J"; >+ else if (type.equals("float")) >+ sig+= "F"; >+ else if (type.equals("double")) >+ sig+= "D"; >+ else if (type.equals("void")) >+ sig+= "V"; >+ else >+ sig+= "L" + type.replace('.', '/') + ";"; >+ return sig; >+ } >+ >+ public static boolean openSource(Object element) { >+ if (element instanceof String) { >+ final String pattern = (String) element; >+ final int javaType = IJavaSearchConstants.METHOD; >+ BusyIndicator.showWhile(Display.getDefault(), new Runnable() { >+ public void run() { >+ if (!OpenJavaSource.openSource(pattern, javaType, >+ SearchEngine.createWorkspaceScope(), true)) { >+ MessageDialog.openInformation(UIPlugin.getDefault() >+ .getWorkbench().getActiveWorkbenchWindow() >+ .getShell(), TraceMessages.TRC_MSGT, NLS.bind( >+ TraceUIMessages._68, pattern)); >+ } >+ } >+ }); >+ } >+ OpenSource.openSource(element); >+ return true; >+ } > } >Index: META-INF/MANIFEST.MF >=================================================================== >RCS file: /cvsroot/tptp/trace/org.eclipse.tptp.trace.jvmti.client/META-INF/MANIFEST.MF,v >retrieving revision 1.5 >diff -u -r1.5 MANIFEST.MF >--- META-INF/MANIFEST.MF 6 Feb 2007 19:03:21 -0000 1.5 >+++ META-INF/MANIFEST.MF 1 Mar 2007 17:35:34 -0000 >@@ -10,7 +10,8 @@ > org.eclipse.hyades.trace.views;bundle-version="[4.1.0,5.0.0)", > org.eclipse.tptp.platform.models, > org.eclipse.hyades.trace.ui, >- org.eclipse.ui.forms >+ org.eclipse.ui.forms, >+ org.eclipse.jdt.core > Eclipse-LazyStart: true > Bundle-Vendor: %providerName > Bundle-RequiredExecutionEnvironment: J2SE-1.4 >Index: src/org/eclipse/tptp/trace/jvmti/internal/client/views/columnlabels/AvgAgeLabelAdapter.java >=================================================================== >RCS file: /cvsroot/tptp/trace/org.eclipse.tptp.trace.jvmti.client/src/org/eclipse/tptp/trace/jvmti/internal/client/views/columnlabels/AvgAgeLabelAdapter.java,v >retrieving revision 1.1 >diff -u -r1.1 AvgAgeLabelAdapter.java >--- src/org/eclipse/tptp/trace/jvmti/internal/client/views/columnlabels/AvgAgeLabelAdapter.java 27 Feb 2007 18:37:32 -0000 1.1 >+++ src/org/eclipse/tptp/trace/jvmti/internal/client/views/columnlabels/AvgAgeLabelAdapter.java 1 Mar 2007 17:35:34 -0000 >@@ -15,9 +15,6 @@ > import org.eclipse.emf.ecore.EObject; > import org.eclipse.hyades.models.trace.TRCClass; > import org.eclipse.hyades.models.trace.TRCPackage; >-import org.eclipse.hyades.models.trace.TracePackage; >-import org.eclipse.hyades.models.trace.impl.TRCClassImpl.TRCClassSnapshot; >-import org.eclipse.hyades.models.trace.impl.TRCPackageImpl.TRCPackageSnapshot; > import org.eclipse.hyades.trace.views.internal.view.columnlabels.ColumnDisplayInfo; > import org.eclipse.hyades.trace.views.internal.view.columnlabels.ContextUpdaterHelper; > import org.eclipse.tptp.trace.jvmti.internal.client.context.TIContextAttributes; >@@ -33,15 +30,9 @@ > > protected Number getValue(Object element, ColumnDisplayInfo info) { > if (element instanceof TRCPackage) { >- // TODO stub >- //TRCPackageImpl.TRCPackageSnapshot ps = (TRCPackageImpl.TRCPackageSnapshot)((TRCPackage) element).retrieveSnapshot(); >- //return new Integer(getAverageAge()); >- return new Integer(0); >+ return null; > } > if (element instanceof TRCClass) { >- // TODO stub >- //TRCClassImpl.TRCClassSnapshot cs = (TRCClassImpl.TRCClassSnapshot)((TRCClass) element).retrieveSnapshot(); >- //return new Integer(getAverageAge()); > AgeInfo age = (AgeInfo) _ageMap.get(element); > double sum = age != null ? age.sumAges : 0; > int count = age != null ? age.objCount : 0; >@@ -55,22 +46,6 @@ > } > > protected Number getDelta(Object element, ColumnDisplayInfo info) { >- if (element instanceof TRCPackage) { >- // TODO stub >- TRCPackageSnapshot delta = packageSnapshot(); >- ((TRCPackage)element).computeDelta(delta,TracePackage.TRC_PACKAGE__TOTAL_INSTANCES); >- ((TRCPackage)element).computeDelta(delta,TracePackage.TRC_PACKAGE__COLLECTED_INSTANCES); >- //return new Integer(delta.getTotalInstances() - delta.getCollectedInstances()); >- return new Integer(0); >- } >- if (element instanceof TRCClass) { >- // TODO stub >- TRCClassSnapshot delta = classSnapshot(); >- ((TRCClass)element).computeDelta(delta,TracePackage.TRC_CLASS__TOTAL_INSTANCES); >- ((TRCClass)element).computeDelta(delta,TracePackage.TRC_CLASS__COLLECTED_INSTANCES); >- //return new Integer(delta.getTotalInstances() - delta.getCollectedInstances()); >- return new Integer(0); >- } > return null; > } > >Index: src/org/eclipse/tptp/trace/jvmti/internal/client/context/AverageAgeLP.java >=================================================================== >RCS file: /cvsroot/tptp/trace/org.eclipse.tptp.trace.jvmti.client/src/org/eclipse/tptp/trace/jvmti/internal/client/context/AverageAgeLP.java,v >retrieving revision 1.1 >diff -u -r1.1 AverageAgeLP.java >--- src/org/eclipse/tptp/trace/jvmti/internal/client/context/AverageAgeLP.java 27 Feb 2007 18:37:34 -0000 1.1 >+++ src/org/eclipse/tptp/trace/jvmti/internal/client/context/AverageAgeLP.java 1 Mar 2007 17:35:34 -0000 >@@ -20,16 +20,31 @@ > import org.eclipse.hyades.ui.provisional.context.IContextLabelFormatProvider; > import org.eclipse.tptp.trace.jvmti.internal.client.views.UIMessages; > >+import com.ibm.icu.text.NumberFormat; >+ > public class AverageAgeLP extends AttrLPAdapter { > >- public String getDisplayStringFromElement(Object value, Object element, int mode) { >+ static NumberFormat _decimalFormat = null; >+ >+ public static String formatValue(double d) { >+ if (_decimalFormat == null) { >+ _decimalFormat = NumberFormat.getNumberInstance(); >+ _decimalFormat.setMaximumFractionDigits(2); >+ _decimalFormat.setMinimumFractionDigits(0); >+ } >+ return _decimalFormat.format(d); >+ } >+ >+ public String getDisplayStringFromElement(Object value, Object element, >+ int mode) { > if (mode == IContextLabelFormatProvider.MODE_COLUMN_HEADER) > return UIMessages._AVG_AGE; > else if (mode == IContextLabelFormatProvider.MODE_COLUMN_CONTENT) { > if (value != null && value instanceof Integer) > return value.toString(); >- if (value != null && value instanceof Double) >- return value.toString(); >+ if (value != null && value instanceof Double) { >+ return formatValue(((Double) value).doubleValue()); >+ } > } > return ""; > }
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 167609
:
57785
|
57787
|
58675
|
58754
|
58831
|
58964
|
58965
|
58966
|
59900
|
59901
| 60096