xml: bug 527644 Fix tooltip for XY viewer
This assigns a unique name to each series, so the name can be shown and
recognized in the tooltip.
Change-Id: I8c37dd71a85cbb530bd5dcab92950e241bc12197
Signed-off-by: Geneviève Bastien <gbastien+lttng@versatic.net>
Reviewed-on: https://git.eclipse.org/r/112127
Reviewed-by: Jean-Christian Kouame <jean-christian.kouame@ericsson.com>
Tested-by: Jean-Christian Kouame <jean-christian.kouame@ericsson.com>
Reviewed-by: Hudson CI
(cherry picked from commit 75ebfbbc3d00bdea968fbab6ce87209bc50b3efd)
Reviewed-on: https://git.eclipse.org/r/112921
diff --git a/tmf/org.eclipse.tracecompass.tmf.analysis.xml.core/src/org/eclipse/tracecompass/tmf/analysis/xml/core/module/XmlXYDataProvider.java b/tmf/org.eclipse.tracecompass.tmf.analysis.xml.core/src/org/eclipse/tracecompass/tmf/analysis/xml/core/module/XmlXYDataProvider.java
index 9842df6..ac2352a 100644
--- a/tmf/org.eclipse.tracecompass.tmf.analysis.xml.core/src/org/eclipse/tracecompass/tmf/analysis/xml/core/module/XmlXYDataProvider.java
+++ b/tmf/org.eclipse.tracecompass.tmf.analysis.xml.core/src/org/eclipse/tracecompass/tmf/analysis/xml/core/module/XmlXYDataProvider.java
@@ -85,6 +85,7 @@
* reused per every quark, and finds the quarks to query for the XY models.
*/
private final BiMap<Long, Integer> fIdToQuark = HashBiMap.create();
+ private final BiMap<Integer, String> fQuarkToString = HashBiMap.create();
private final long fTraceId = ENTRY_IDS.getAndIncrement();
private @Nullable TmfModelResponse<List<TmfTreeDataModel>> fCached;
@@ -257,7 +258,7 @@
ImmutableMap.Builder<String, IYModel> ySeries = ImmutableMap.builder();
for (Entry<Integer, double[]> tempEntry : map.entrySet()) {
- String name = String.valueOf(fIdToQuark.inverse().get(tempEntry.getKey()));
+ String name = String.valueOf(fQuarkToString.get(tempEntry.getKey()));
ySeries.put(name, new YModel(name, tempEntry.getValue()));
}
@@ -361,13 +362,11 @@
}
}
if (!seriesName.isEmpty()) {
+ String tempSeriesName = seriesName;
+ String uniqueName = fQuarkToString.computeIfAbsent(quark, q -> getUniqueNameFor(tempSeriesName));
// Check if an ID has already been created for this quark.
- Long id = fIdToQuark.inverse().get(quark);
- if (id == null) {
- id = ENTRY_IDS.getAndIncrement();
- fIdToQuark.put(id, quark);
- }
- builder.add(new TmfTreeDataModel(id, fTraceId, seriesName));
+ Long id = fIdToQuark.inverse().computeIfAbsent(quark, q -> ENTRY_IDS.getAndIncrement());
+ builder.add(new TmfTreeDataModel(id, fTraceId, uniqueName));
}
}
@@ -380,6 +379,18 @@
return new TmfModelResponse<>(list, ITmfResponse.Status.RUNNING, CommonStatusMessage.RUNNING);
}
+ private String getUniqueNameFor(String seriesName) {
+ Integer quark = fQuarkToString.inverse().get(seriesName);
+ int index = 1;
+ String newName = seriesName;
+ while (quark != null) {
+ newName = seriesName + '(' + index + ')';
+ quark = fQuarkToString.inverse().get(newName);
+ index++;
+ }
+ return newName;
+ }
+
/**
* @since 2.4
*/
diff --git a/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/src/org/eclipse/tracecompass/internal/tmf/analysis/xml/ui/views/xychart/XmlTreeViewer.java b/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/src/org/eclipse/tracecompass/internal/tmf/analysis/xml/ui/views/xychart/XmlTreeViewer.java
index 0e3aa0f..5ea053c 100644
--- a/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/src/org/eclipse/tracecompass/internal/tmf/analysis/xml/ui/views/xychart/XmlTreeViewer.java
+++ b/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/src/org/eclipse/tracecompass/internal/tmf/analysis/xml/ui/views/xychart/XmlTreeViewer.java
@@ -46,7 +46,7 @@
// do not show the legend for the trace entries.
return null;
}
- return getLegendImage(Long.toString(genericEntry.getModel().getId()));
+ return getLegendImage(String.valueOf(genericEntry.getModel().getName()));
}
return null;
}