import static org.eclipse.tracecompass.common.core.NonNullUtils.checkNotNull;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-
+import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
import org.eclipse.swt.widgets.Composite;
-import org.eclipse.tracecompass.analysis.timing.core.segmentstore.statistics.SegmentStoreStatistics;
import org.eclipse.tracecompass.analysis.timing.ui.views.segmentstore.statistics.AbstractSegmentStoreStatisticsViewer;
import org.eclipse.tracecompass.internal.analysis.os.linux.core.latency.statistics.SystemCallLatencyStatisticsAnalysisModule;
import org.eclipse.tracecompass.tmf.core.analysis.TmfAbstractAnalysisModule;
-import org.eclipse.tracecompass.tmf.ui.viewers.tree.ITmfTreeViewerEntry;
-import org.eclipse.tracecompass.tmf.ui.viewers.tree.TmfTreeViewerEntry;
/**
* A tree viewer implementation for displaying latency statistics
}
@Override
- protected @Nullable ITmfTreeViewerEntry updateElements(long start, long end, boolean isSelection) {
- if (isSelection || (start == end)) {
- return null;
- }
-
- TmfAbstractAnalysisModule analysisModule = getStatisticsAnalysisModule();
-
- if (getTrace() == null || !(analysisModule instanceof SystemCallLatencyStatisticsAnalysisModule)) {
- return null;
- }
-
- SystemCallLatencyStatisticsAnalysisModule module = (SystemCallLatencyStatisticsAnalysisModule) analysisModule;
-
- module.waitForCompletion();
-
- TmfTreeViewerEntry root = new TmfTreeViewerEntry(""); //$NON-NLS-1$
- final SegmentStoreStatistics entry = module.getTotalStats();
- if (entry != null) {
+ protected @NonNull final String getTotalLabel() {
+ return checkNotNull(Messages.LatencyStatistics_TotalLabel);
+ }
- List<ITmfTreeViewerEntry> entryList = root.getChildren();
+ @Override
+ protected @NonNull final String getTypeLabel() {
+ return SYSCALL_LEVEL;
+ }
- TmfTreeViewerEntry child = new SegmentStoreStatisticsEntry(checkNotNull(Messages.LatencyStatistics_TotalLabel), entry);
- entryList.add(child);
- HiddenTreeViewerEntry syscalls = new HiddenTreeViewerEntry(SYSCALL_LEVEL);
- child.addChild(syscalls);
- Map<String, SegmentStoreStatistics> perSyscallStats = module.getPerSegmentTypeStats();
- if (perSyscallStats != null) {
- for (Entry<String, SegmentStoreStatistics> statsEntry : perSyscallStats.entrySet()) {
- syscalls.addChild(new SegmentStoreStatisticsEntry(statsEntry.getKey(), statsEntry.getValue()));
- }
- }
- }
- return root;
- }
}
import java.text.Format;
import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
import org.eclipse.jdt.annotation.Nullable;
import org.eclipse.jface.action.Action;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Menu;
+import org.eclipse.tracecompass.analysis.timing.core.segmentstore.statistics.AbstractSegmentStatisticsAnalysis;
import org.eclipse.tracecompass.analysis.timing.core.segmentstore.statistics.SegmentStoreStatistics;
import org.eclipse.tracecompass.analysis.timing.ui.views.segmentstore.SubSecondTimeWithUnitFormat;
import org.eclipse.tracecompass.internal.analysis.timing.ui.Activator;
import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
import org.eclipse.tracecompass.tmf.ui.viewers.tree.AbstractTmfTreeViewer;
import org.eclipse.tracecompass.tmf.ui.viewers.tree.ITmfTreeColumnDataProvider;
+import org.eclipse.tracecompass.tmf.ui.viewers.tree.ITmfTreeViewerEntry;
import org.eclipse.tracecompass.tmf.ui.viewers.tree.TmfTreeColumnData;
import org.eclipse.tracecompass.tmf.ui.viewers.tree.TmfTreeViewerEntry;
/**
* Method to add commands to the context sensitive menu.
+ *
* @param manager
- * the menu manager
+ * the menu manager
* @param sel
- * the current selection
+ * the current selection
*/
protected void appendToTablePopupMenu(IMenuManager manager, IStructuredSelection sel) {
- Object element = sel.getFirstElement();
+ Object element = sel.getFirstElement();
if ((element instanceof SegmentStoreStatisticsEntry) && !(element instanceof HiddenTreeViewerEntry)) {
final SegmentStoreStatisticsEntry segment = (SegmentStoreStatisticsEntry) element;
IAction gotoStartTime = new Action(Messages.SegmentStoreStatisticsViewer_GotoMinAction) {
}
+ @Override
+ protected @Nullable ITmfTreeViewerEntry updateElements(long start, long end, boolean isSelection) {
+ if (isSelection || (start == end)) {
+ return null;
+ }
+
+ TmfAbstractAnalysisModule analysisModule = getStatisticsAnalysisModule();
+
+ if (getTrace() == null || !(analysisModule instanceof AbstractSegmentStatisticsAnalysis)) {
+ return null;
+ }
+
+ AbstractSegmentStatisticsAnalysis module = (AbstractSegmentStatisticsAnalysis) analysisModule;
+
+ module.waitForCompletion();
+
+ TmfTreeViewerEntry root = new TmfTreeViewerEntry(""); //$NON-NLS-1$
+ final SegmentStoreStatistics entry = module.getTotalStats();
+ if (entry != null) {
+
+ List<ITmfTreeViewerEntry> entryList = root.getChildren();
+
+ TmfTreeViewerEntry aggregateEntry = new SegmentStoreStatisticsEntry(getTotalLabel(), entry);
+ entryList.add(aggregateEntry);
+ HiddenTreeViewerEntry category = new HiddenTreeViewerEntry(getTypeLabel());
+ aggregateEntry.addChild(category);
+
+ Map<String, SegmentStoreStatistics> perSegmentStats = module.getPerSegmentTypeStats();
+ if (perSegmentStats != null) {
+ for (Entry<String, SegmentStoreStatistics> statsEntry : perSegmentStats.entrySet()) {
+ category.addChild(new SegmentStoreStatisticsEntry(statsEntry.getKey(), statsEntry.getValue()));
+ }
+ }
+ }
+ return root;
+ }
+
+ /**
+ * Get the type label
+ *
+ * @return the label
+ * @since 1.1
+ */
+ protected String getTypeLabel() {
+ return checkNotNull(Messages.AbstractSegmentStoreStatisticsViewer_types);
+ }
+
+ /**
+ * Get the total column label
+ *
+ * @return the totals column label
+ * @since 1.1
+ */
+ protected String getTotalLabel() {
+ return checkNotNull(Messages.AbstractSegmentStoreStatisticsViewer_total);
+ }
+
/**
* Class to define a level in the tree that doesn't have any values.
*/
private static final String BUNDLE_NAME = "org.eclipse.tracecompass.internal.analysis.timing.ui.views.segmentstore.statistics.messages"; //$NON-NLS-1$
+ /** Default "total" label in statistics viewer */
+ public static String AbstractSegmentStoreStatisticsViewer_total;
+ /** Default "category" label in statistics viewer */
+ public static String AbstractSegmentStoreStatisticsViewer_types;
+
/** Name of level column */
public static String SegmentStoreStatistics_LevelLabel;
/** Name of the minimum column */
# Contributors:
# Bernd Hufmann - Initial API and implementation
###############################################################################
+AbstractSegmentStoreStatisticsViewer_total=Total
+AbstractSegmentStoreStatisticsViewer_types=Types
SegmentStoreStatistics_LevelLabel=Level
SegmentStoreStatistics_Statistics_MinLabel=Minimum
SegmentStoreStatistics_MaxLabel=Maximum
*******************************************************************************/
package org.eclipse.tracecompass.internal.tmf.analysis.xml.ui.views.latency;
-import static org.eclipse.tracecompass.common.core.NonNullUtils.checkNotNull;
-
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
import org.eclipse.swt.widgets.Composite;
-import org.eclipse.tracecompass.analysis.timing.core.segmentstore.statistics.SegmentStoreStatistics;
import org.eclipse.tracecompass.analysis.timing.ui.views.segmentstore.statistics.AbstractSegmentStoreStatisticsViewer;
import org.eclipse.tracecompass.internal.tmf.analysis.xml.core.pattern.stateprovider.XmlPatternLatencyStatisticsAnalysis;
import org.eclipse.tracecompass.tmf.core.analysis.TmfAbstractAnalysisModule;
-import org.eclipse.tracecompass.tmf.ui.viewers.tree.ITmfTreeViewerEntry;
-import org.eclipse.tracecompass.tmf.ui.viewers.tree.TmfTreeViewerEntry;
/**
* A tree viewer implementation for displaying pattern latency statistics
}
@Override
- protected ITmfTreeViewerEntry updateElements(long start, long end, boolean isSelection) {
- if (isSelection || (start == end)) {
- return null;
- }
-
- TmfAbstractAnalysisModule analysisModule = getStatisticsAnalysisModule();
-
- if (getTrace() == null || !(analysisModule instanceof XmlPatternLatencyStatisticsAnalysis)) {
- return null;
- }
-
- XmlPatternLatencyStatisticsAnalysis module = (XmlPatternLatencyStatisticsAnalysis) analysisModule;
-
- module.waitForCompletion();
-
- TmfTreeViewerEntry root = new TmfTreeViewerEntry(""); //$NON-NLS-1$
- final SegmentStoreStatistics entry = module.getTotalStats();
- if (entry != null) {
-
- List<ITmfTreeViewerEntry> entryList = root.getChildren();
-
- TmfTreeViewerEntry child = new SegmentStoreStatisticsEntry(checkNotNull("Total"), entry); //$NON-NLS-1$
- entryList.add(child);
- HiddenTreeViewerEntry segments = new HiddenTreeViewerEntry(PATTERN_SEGMENTS_LEVEL);
- child.addChild(segments);
-
- final Map<@NonNull String, @NonNull SegmentStoreStatistics> perTypeStats = module.getPerSegmentTypeStats();
- if (perTypeStats != null) {
- for (Entry<@NonNull String, @NonNull SegmentStoreStatistics> statsEntry : perTypeStats.entrySet()) {
- segments.addChild(new SegmentStoreStatisticsEntry(statsEntry.getKey(), statsEntry.getValue()));
- }
- }
- }
- return root;
+ protected @NonNull String getTypeLabel() {
+ return PATTERN_SEGMENTS_LEVEL;
}
/**