Bug 572888: Remove deprecated APIs due move o.e.swtchart
Remove also dependency from org.swtchart since it's not needed anymore.
Deprecated in patch:
https://git.eclipse.org/r/157739
Change-Id: I5c9041765c58eab604df6509ef72cdda8b375dde
Signed-off-by: Bernd Hufmann <Bernd.Hufmann@ericsson.com>
Reviewed-on: https://git.eclipse.org/r/c/tracecompass/org.eclipse.tracecompass/+/179942
Tested-by: Trace Compass Bot <tracecompass-bot@eclipse.org>
Tested-by: Matthew Khouzam <matthew.khouzam@ericsson.com>
Reviewed-by: Matthew Khouzam <matthew.khouzam@ericsson.com>
diff --git a/analysis/org.eclipse.tracecompass.analysis.counters.ui.swtbot.tests/META-INF/MANIFEST.MF b/analysis/org.eclipse.tracecompass.analysis.counters.ui.swtbot.tests/META-INF/MANIFEST.MF
index 7421508..a7478ac 100644
--- a/analysis/org.eclipse.tracecompass.analysis.counters.ui.swtbot.tests/META-INF/MANIFEST.MF
+++ b/analysis/org.eclipse.tracecompass.analysis.counters.ui.swtbot.tests/META-INF/MANIFEST.MF
@@ -29,7 +29,6 @@
Import-Package: org.apache.commons.io,
org.eclipse.swt.graphics,
org.eclipse.swtchart,
- org.eclipse.tracecompass.analysis.counters.core,
- org.swtchart
+ org.eclipse.tracecompass.analysis.counters.core
Automatic-Module-Name: org.eclipse.tracecompass.analysis.counters.ui.swtbot.tests
Export-Package: org.eclipse.tracecompass.analysis.counters.ui.swtbot.tests;x-internal:=true
diff --git a/analysis/org.eclipse.tracecompass.analysis.counters.ui.swtbot.tests/src/org/eclipse/tracecompass/analysis/counters/ui/swtbot/tests/CounterViewPinAndCloneTest.java b/analysis/org.eclipse.tracecompass.analysis.counters.ui.swtbot.tests/src/org/eclipse/tracecompass/analysis/counters/ui/swtbot/tests/CounterViewPinAndCloneTest.java
deleted file mode 100644
index 0012c27..0000000
--- a/analysis/org.eclipse.tracecompass.analysis.counters.ui.swtbot.tests/src/org/eclipse/tracecompass/analysis/counters/ui/swtbot/tests/CounterViewPinAndCloneTest.java
+++ /dev/null
@@ -1,304 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2018, 2019 Ericsson
- *
- * All rights reserved. This program and the accompanying materials are
- * made available under the terms of the Eclipse Public License 2.0 which
- * accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-
-package org.eclipse.tracecompass.analysis.counters.ui.swtbot.tests;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.swt.widgets.Widget;
-import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotEditor;
-import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotView;
-import org.eclipse.swtbot.swt.finder.exceptions.WidgetNotFoundException;
-import org.eclipse.swtbot.swt.finder.waits.DefaultCondition;
-import org.eclipse.swtbot.swt.finder.widgets.SWTBotMenu;
-import org.eclipse.swtbot.swt.finder.widgets.SWTBotToolbarDropDownButton;
-import org.eclipse.tracecompass.testtraces.ctf.CtfTestTrace;
-import org.eclipse.tracecompass.tmf.core.signal.TmfSignalManager;
-import org.eclipse.tracecompass.tmf.core.signal.TmfWindowRangeUpdatedSignal;
-import org.eclipse.tracecompass.tmf.core.timestamp.TmfTimeRange;
-import org.eclipse.tracecompass.tmf.core.timestamp.TmfTimestamp;
-import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
-import org.eclipse.tracecompass.tmf.core.trace.TmfTraceManager;
-import org.eclipse.tracecompass.tmf.ctf.core.tests.shared.CtfTmfTestTraceUtils;
-import org.eclipse.tracecompass.tmf.ui.swtbot.tests.XYDataProviderBaseTest;
-import org.eclipse.tracecompass.tmf.ui.swtbot.tests.shared.ConditionHelpers;
-import org.eclipse.tracecompass.tmf.ui.swtbot.tests.shared.SWTBotUtils;
-import org.eclipse.tracecompass.tmf.ui.tests.shared.WaitUtils;
-import org.eclipse.tracecompass.tmf.ui.viewers.xycharts.linecharts.TmfCommonXAxisChartViewer;
-import org.eclipse.tracecompass.tmf.ui.views.TmfChartView;
-import org.eclipse.ui.IViewPart;
-import org.junit.Test;
-
-/**
- * SWTBot tests for pin & clone for xy-charts using Counters view example.
- *
- * @author Bernd Hufmann
- * @deprecated replaced by {@link NewCounterViewPinAndCloneTest}
- */
-@Deprecated
-public class CounterViewPinAndCloneTest extends XYDataProviderBaseTest {
-
- private static final String TRACETYPE_ID = "org.eclipse.linuxtools.lttng2.kernel.tracetype";
- private static final String TRACE_NAME = "kernel_vm";
- private static final @NonNull String COUNTERS_VIEW_TITLE = "Counters (Legacy)";
- private static final @NonNull String MAIN_SERIES_NAME = "kernel_vm/Ungrouped/minor_faults";
- private static final @NonNull String COUNTERS_VIEW_ID = "org.eclipse.tracecompass.analysis.counters.ui.view.counters";
- private static final String PINNED_TO_TRACE_COUNTERS_VIEW_TITLE = COUNTERS_VIEW_TITLE + " <" + TRACE_NAME + ">";
- private static final String PINNED_TO_CTX_SWITCH_VIEW_TITLE = COUNTERS_VIEW_TITLE + " <context-switches-kernel>";
-
- private static final String PIN_VIEW_BUTTON_NAME = "Pin View";
- private static final String UNPIN_VIEW_BUTTON_NAME = "Unpin View";
- private static final String PIN_TO_PREFIX = "Pin to ";
- private static final String NEW_COUNTER_STACK_MENU = "New " + COUNTERS_VIEW_TITLE + " view";
- private static final String PINNED_TO_PREFIX = "pinned to ";
- private static final String CLONED_TRACE_SUFFIX = " | 2";
- private static final String CLONED_VIEW_TITLE_NAME = COUNTERS_VIEW_TITLE + " <" + TRACE_NAME + " | 2>";
-
- private static final int SECOND = 1000000000;
- private static final long KERNEL_START = 1363700740555978750L;
- private static final long KERNEL_TEST_START = KERNEL_START + SECOND;
- private static final long KERNEL_TEST_END = KERNEL_START + 2 * SECOND;
- private static final long KERNEL_TEST_INITIAL_END = KERNEL_START + 100000000L;
-
- private static final long KERNEL_INITIAL_END = KERNEL_START + 100000000L;
-
- private static final @NonNull TmfTimeRange RANGE = new TmfTimeRange(TmfTimestamp.fromNanos(KERNEL_TEST_START), TmfTimestamp.fromNanos(KERNEL_TEST_END));
-
- /**
- * Ensure the data displayed in the chart viewer reflects the tree viewer's
- * selected entries.
- */
- @Test
- public void testPinSingleTrace() {
- SWTBotView originalViewBot = getSWTBotView();
-
- // ensure that the view name is correct before
- assertEquals(COUNTERS_VIEW_TITLE, originalViewBot.getTitle());
-
- // ensure that the pin drop down is present, pin the view.
- fBot.waitUntil(new DefaultCondition() {
- WidgetNotFoundException fException;
-
- @Override
- public boolean test() throws Exception {
- try {
- SWTBotToolbarDropDownButton toolbarDropDownButton = originalViewBot.toolbarDropDownButton(PIN_VIEW_BUTTON_NAME);
- toolbarDropDownButton.menuItem(PIN_TO_PREFIX + getTestTrace().getName()).click();
- return true;
- } catch (WidgetNotFoundException e) {
- fException = e;
- return false;
- }
- }
-
- @Override
- public String getFailureMessage() {
- return "Traces not available in toolbar drop down menu: " + fException;
- }
- });
-
- // Ensure that the view has been renamed. Get the view by title and ensure i private static final int SECOND = 1000000000;
- // has the same widget as there is a renaming bug.
- assertOriginalViewTitle(PINNED_TO_TRACE_COUNTERS_VIEW_TITLE);
-
- originalViewBot.toolbarButton(UNPIN_VIEW_BUTTON_NAME).click();
-
- // Ensure that the view has been renamed. Get the view by title and ensure it
- // has the same widget as there is a renaming bug.
- assertOriginalViewTitle(COUNTERS_VIEW_TITLE);
-
- // Ensure that the pin button is present, pin the view.
- originalViewBot.toolbarButton(PIN_VIEW_BUTTON_NAME).click();
-
- // Ensure that the view has been renamed. Get the view by title and ensure it
- // has the same widget as there is a renaming bug.
- assertOriginalViewTitle(PINNED_TO_TRACE_COUNTERS_VIEW_TITLE);
-
- // Ensure that the pin button is present, unpin the view.
- originalViewBot.toolbarButton(UNPIN_VIEW_BUTTON_NAME).click();
- assertOriginalViewTitle(COUNTERS_VIEW_TITLE);
- }
-
- /**
- * Test the behavior with two traces.
- */
- @Test
- public void testPinTwoTraces() {
- SWTBotView originalViewBot = getSWTBotView();
-
- ITmfTrace activeTrace = TmfTraceManager.getInstance().getActiveTrace();
- assertNotNull(activeTrace);
- ITmfTrace kernelTestTrace = CtfTmfTestTraceUtils.getTrace(CtfTestTrace.CONTEXT_SWITCHES_KERNEL);
- SWTBotUtils.openTrace(TRACE_PROJECT_NAME, kernelTestTrace.getPath(), TRACETYPE_ID);
-
- /// Finish waiting for the trace to index
- WaitUtils.waitForJobs();
- // wait for the editor to be ready.
- fBot.editorByTitle(kernelTestTrace.getName());
-
- // Assert that the pin to drop down menuItems are present for both traces.
- fBot.waitUntil(new DefaultCondition() {
- WidgetNotFoundException fException;
-
- @Override
- public boolean test() throws Exception {
- try {
- SWTBotToolbarDropDownButton toolbarDropDownButton = originalViewBot.toolbarDropDownButton(PIN_VIEW_BUTTON_NAME);
- toolbarDropDownButton.menuItem(PIN_TO_PREFIX + kernelTestTrace.getName());
- toolbarDropDownButton.menuItem(PIN_TO_PREFIX + getTestTrace().getName()).click();
- return true;
- } catch (WidgetNotFoundException e) {
- fException = e;
- return false;
- }
- }
-
- @Override
- public String getFailureMessage() {
- return "Traces not available in toolbar drop down menu: " + fException;
- }
- });
-
- /*
- * Assert that the pinned view is the kernel_vm trace despite the active trace being
- * the context-switch trace.
- */
- assertOriginalViewTitle(PINNED_TO_TRACE_COUNTERS_VIEW_TITLE);
- activeTrace = TmfTraceManager.getInstance().getActiveTrace();
- assertNotNull("There should be an active trace", activeTrace);
- assertEquals("context-switches-kernel should be the active trace", kernelTestTrace.getName(), activeTrace.getName());
-
- // Get the window range of the kernel trace
- TmfTraceManager traceManager = TmfTraceManager.getInstance();
- ITmfTrace kernelTrace = traceManager.getActiveTrace();
- assertNotNull(kernelTrace);
-
- // Switch back and forth
- SWTBotUtils.activateEditor(fBot, getTestTrace().getName());
- assertOriginalViewTitle(PINNED_TO_TRACE_COUNTERS_VIEW_TITLE);
-
- SWTBotUtils.activateEditor(fBot, kernelTestTrace.getName());
- assertOriginalViewTitle(PINNED_TO_TRACE_COUNTERS_VIEW_TITLE);
-
- IViewPart viewPart = originalViewBot.getViewReference().getView(false);
- assertTrue(viewPart instanceof TmfChartView);
- final TmfCommonXAxisChartViewer chartViewer = (TmfCommonXAxisChartViewer) getChartViewer(viewPart);
- assertNotNull(chartViewer);
- TmfSignalManager.dispatchSignal(new TmfWindowRangeUpdatedSignal(this, RANGE, kernelTrace));
-
- // Assert that the original views trace's window range did not change
- SWTBotUtils.activateEditor(fBot, getTestTrace().getName());
- SWTBotUtils.waitUntil(v -> (v.getWindowStartTime() == KERNEL_START && v.getWindowEndTime() == KERNEL_TEST_INITIAL_END), chartViewer, "Range of cloned view changed");
-
- // Unpin from active trace
- SWTBotUtils.activateEditor(fBot, kernelTrace.getName());
- originalViewBot.toolbarButton(UNPIN_VIEW_BUTTON_NAME).click();
- assertOriginalViewTitle(COUNTERS_VIEW_TITLE);
-
- originalViewBot.toolbarButton(PIN_VIEW_BUTTON_NAME).click();
-
- assertOriginalViewTitle(PINNED_TO_CTX_SWITCH_VIEW_TITLE);
-
- // Close the pinned trace
- SWTBotEditor kernelTable = fBot.editorByTitle(kernelTestTrace.getName());
- kernelTable.close();
-
- // Verify that view title is reset
- SWTBotUtils.waitUntil(v -> v.getReference().getPartName().equals(COUNTERS_VIEW_TITLE), originalViewBot, "View name didn't change");
- kernelTestTrace.dispose();
- }
-
- /**
- * Test the cloning feature.
- */
- @Test
- public void testCloneSingleTrace() {
- SWTBotView originalViewBot = getSWTBotView();
- SWTBotMenu cloneMenu = originalViewBot.viewMenu().menu(NEW_COUNTER_STACK_MENU);
-
- /*
- * Assert that the original editor was not renamed and that the cloned one
- * exists and is pinned to the kernel_vm trace.
- */
- cloneMenu.menu(PINNED_TO_PREFIX + getTestTrace().getName()).click();
- assertOriginalViewTitle(COUNTERS_VIEW_TITLE);
- SWTBotView clonedView = fBot.viewByTitle(PINNED_TO_TRACE_COUNTERS_VIEW_TITLE);
- assertEquals("Should not have created a new instance", 1, fBot.editors().size());
- clonedView.close();
-
- // Assert that a new instance is created.
- cloneMenu.menu(PINNED_TO_PREFIX + getTestTrace().getName() + " | new instance").click();
- assertOriginalViewTitle(COUNTERS_VIEW_TITLE);
- clonedView = fBot.viewByTitle(CLONED_VIEW_TITLE_NAME);
- assertEquals("Should have created a new instance", 2, fBot.editors().size());
- SWTBotEditor cloneEditor = fBot.editorByTitle(getTestTrace().getName() + CLONED_TRACE_SUFFIX);
-
- // Get the window range of the cloned trace
- TmfTraceManager traceManager = TmfTraceManager.getInstance();
- ITmfTrace cloneTrace = traceManager.getActiveTrace();
- assertNotNull(cloneTrace);
-
- // Go back to original trace, pin it
- SWTBotUtils.activateEditor(fBot, getTestTrace().getName());
- originalViewBot.toolbarButton(PIN_VIEW_BUTTON_NAME).click();
-
- // Assert that the cloned trace's window range did not change
- SWTBotUtils.activateEditor(fBot, cloneTrace.getName() + CLONED_TRACE_SUFFIX);
- IViewPart viewPart = clonedView.getViewReference().getView(false);
- assertTrue(viewPart instanceof TmfChartView);
- final TmfCommonXAxisChartViewer chartViewer = (TmfCommonXAxisChartViewer) getChartViewer(viewPart);
- assertNotNull(chartViewer);
-
- fBot.waitUntil(ConditionHelpers.xyViewerIsReadyCondition(chartViewer));
- TmfSignalManager.dispatchSignal(new TmfWindowRangeUpdatedSignal(this, RANGE, getTestTrace()));
- fBot.waitUntil(ConditionHelpers.xyViewerIsReadyCondition(chartViewer));
- SWTBotUtils.waitUntil(v -> (v.getWindowStartTime() == KERNEL_START && v.getWindowEndTime() == KERNEL_INITIAL_END), chartViewer, "Range of cloned view changed");
-
- cloneEditor.close();
- }
-
- private void assertOriginalViewTitle(String newName) {
- Widget expectedWidget = getSWTBotView().getWidget();
- assertNotNull(expectedWidget);
- SWTBotView actualView = fBot.viewByTitle(newName);
- Widget actualWidget = actualView.getWidget();
- assertNotNull(actualWidget);
- assertEquals(expectedWidget, actualWidget);
- }
-
- @Override
- protected @NonNull String getMainSeriesName() {
- return MAIN_SERIES_NAME;
- }
-
- @Override
- protected @NonNull String getTitle() {
- return COUNTERS_VIEW_TITLE;
- }
-
- @Override
- protected String getViewID() {
- return COUNTERS_VIEW_ID;
- }
-
- @Override
- protected ITmfTrace getTestTrace() {
- return CtfTmfTestTraceUtils.getTrace(CtfTestTrace.KERNEL_VM);
- }
-
- @Override
- protected void disposeTestTrace() {
- CtfTmfTestTraceUtils.dispose(CtfTestTrace.KERNEL_VM);
- }
-}
diff --git a/analysis/org.eclipse.tracecompass.analysis.counters.ui.swtbot.tests/src/org/eclipse/tracecompass/analysis/counters/ui/swtbot/tests/CounterViewTest.java b/analysis/org.eclipse.tracecompass.analysis.counters.ui.swtbot.tests/src/org/eclipse/tracecompass/analysis/counters/ui/swtbot/tests/CounterViewTest.java
deleted file mode 100644
index 07587d0..0000000
--- a/analysis/org.eclipse.tracecompass.analysis.counters.ui.swtbot.tests/src/org/eclipse/tracecompass/analysis/counters/ui/swtbot/tests/CounterViewTest.java
+++ /dev/null
@@ -1,165 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017, 2019 Ericsson
- *
- * All rights reserved. This program and the accompanying materials are
- * made available under the terms of the Eclipse Public License 2.0 which
- * accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-
-package org.eclipse.tracecompass.analysis.counters.ui.swtbot.tests;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.jdt.annotation.Nullable;
-import org.eclipse.swt.graphics.RGB;
-import org.eclipse.swtbot.swt.finder.widgets.SWTBotTree;
-import org.eclipse.swtbot.swt.finder.widgets.SWTBotTreeItem;
-import org.eclipse.tracecompass.analysis.counters.ui.CounterView;
-import org.eclipse.tracecompass.testtraces.ctf.CtfTestTrace;
-import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
-import org.eclipse.tracecompass.tmf.ctf.core.tests.shared.CtfTmfTestTraceUtils;
-import org.eclipse.tracecompass.tmf.ui.swtbot.tests.XYDataProviderBaseTest;
-import org.eclipse.tracecompass.tmf.ui.swtbot.tests.shared.ConditionHelpers;
-import org.eclipse.tracecompass.tmf.ui.tests.shared.WaitUtils;
-import org.eclipse.tracecompass.tmf.ui.viewers.xycharts.linecharts.TmfCommonXAxisChartViewer;
-import org.eclipse.ui.IViewPart;
-import org.junit.Test;
-import org.swtchart.Chart;
-import org.swtchart.ISeries;
-import org.swtchart.LineStyle;
-
-/**
- * SWTBot tests for Counters view.
- *
- * @author Mikael Ferland
- * @deprecated replaced by {@link NewCounterViewTest}
- */
-@Deprecated
-public class CounterViewTest extends XYDataProviderBaseTest {
-
- private static final int NUMBER_OF_POINTS = 50;
- private static final RGB BLUE = new RGB(0, 0, 255);
- private static final @NonNull String TRACE_NAME = "kernel_vm";
- private static final @NonNull String COUNTER_NAME = "minor_faults";
- private static final @NonNull String COUNTERS_VIEW_TITLE = "Counters (Legacy)";
- private static final @NonNull String MAIN_SERIES_NAME = "kernel_vm/Ungrouped/minor_faults";
- private static final @NonNull String COUNTERS_VIEW_ID = "org.eclipse.tracecompass.analysis.counters.ui.view.counters";
-
- /**
- * Ensure the data displayed in the chart viewer reflects the tree viewer's
- * selected entries.
- */
- @Test
- public void testManipulatingTreeViewer() {
- final Chart chart = getChart();
- assertNotNull(chart);
- assertEquals(0, chart.getSeriesSet().getSeries().length);
-
- SWTBotTree treeBot = getSWTBotView().bot().tree();
- WaitUtils.waitUntil(tree -> tree.rowCount() >= 1, treeBot, "The tree viewer did not finish loading.");
- SWTBotTreeItem root = treeBot.getTreeItem(TRACE_NAME);
- assertNotNull(root);
- SWTBotTreeItem counter = retrieveTreeItem(root, COUNTER_NAME);
- assertNotNull(counter);
-
- // Check all elements of the tree
- root.check();
- WaitUtils.waitUntil(SWTBotTreeItem::isChecked, root, "Root entry was not checked");
- assertTrue(counter.isChecked());
- assertFalse(root.isGrayed());
- assertFalse(counter.isGrayed());
- WaitUtils.waitUntil(c -> c.getSeriesSet().getSeries().length >= 3, chart, "The data series did not load.");
-
- // Uncheck a leaf of the tree
- counter.uncheck();
- assertTrue(root.isChecked());
- assertTrue(root.isGrayed());
- assertFalse(counter.isChecked());
- assertFalse(counter.isGrayed());
- WaitUtils.waitUntil(c -> c.getSeriesSet().getSeries().length >= 2, chart,
- "A data series has not been removed.");
- }
-
- /**
- * Validate the Counters view data model.
- */
- @Test
- public void testDisplayingDataSeries() {
- // Setup the chart viewer
- IViewPart viewPart = getSWTBotView().getViewReference().getView(true);
- assertTrue(viewPart instanceof CounterView);
- final TmfCommonXAxisChartViewer chartViewer = (TmfCommonXAxisChartViewer) getChartViewer(viewPart);
- assertNotNull(chartViewer);
- fBot.waitUntil(ConditionHelpers.xyViewerIsReadyCondition(chartViewer));
- chartViewer.setNbPoints(NUMBER_OF_POINTS);
- fBot.waitUntil(ConditionHelpers.xyViewerIsReadyCondition(chartViewer));
-
- final Chart chart = getChart();
- assertNotNull(chart);
- assertEquals(0, chart.getSeriesSet().getSeries().length);
-
- // Check the counter entry
- SWTBotTree treeBot = getSWTBotView().bot().tree();
- WaitUtils.waitUntil(tree -> tree.rowCount() >= 1, treeBot, "The tree viewer did not finish loading.");
- SWTBotTreeItem root = treeBot.getTreeItem(TRACE_NAME);
- SWTBotTreeItem counter = retrieveTreeItem(root, COUNTER_NAME);
- assertNotNull(counter);
- counter.check();
- fBot.waitUntil(ConditionHelpers.xyViewerIsReadyCondition(chartViewer));
- WaitUtils.waitUntil(c -> c.getSeriesSet().getSeries().length >= 1, chart, "The data series did not load.");
-
- // Ensure the data series has the correct styling
- verifySeriesStyle(MAIN_SERIES_NAME, ISeries.SeriesType.LINE, BLUE, LineStyle.SOLID, false);
-
- // Ensure the data model is valid
- WaitUtils.waitUntil(json -> isChartDataValid(chart, json, MAIN_SERIES_NAME),
- "resources/minor_faults-res50.json", "The chart data is not valid.");
- }
-
- private @Nullable SWTBotTreeItem retrieveTreeItem(SWTBotTreeItem rootItem, @NonNull String id) {
- if (rootItem.getNodes().contains(id)) {
- return rootItem.getNode(id);
- }
-
- for (SWTBotTreeItem child : rootItem.getItems()) {
- SWTBotTreeItem grandChild = retrieveTreeItem(child, id);
- if (grandChild != null) {
- return grandChild;
- }
- }
-
- return null;
- }
-
- @Override
- protected @NonNull String getMainSeriesName() {
- return MAIN_SERIES_NAME;
- }
-
- @Override
- protected @NonNull String getTitle() {
- return COUNTERS_VIEW_TITLE;
- }
-
- @Override
- protected String getViewID() {
- return COUNTERS_VIEW_ID;
- }
-
- @Override
- protected ITmfTrace getTestTrace() {
- return CtfTmfTestTraceUtils.getTrace(CtfTestTrace.KERNEL_VM);
- }
-
- @Override
- protected void disposeTestTrace() {
- CtfTmfTestTraceUtils.dispose(CtfTestTrace.KERNEL_VM);
- }
-}
diff --git a/analysis/org.eclipse.tracecompass.analysis.counters.ui/META-INF/MANIFEST.MF b/analysis/org.eclipse.tracecompass.analysis.counters.ui/META-INF/MANIFEST.MF
index 669cf9a..55c6a3b 100644
--- a/analysis/org.eclipse.tracecompass.analysis.counters.ui/META-INF/MANIFEST.MF
+++ b/analysis/org.eclipse.tracecompass.analysis.counters.ui/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
Bundle-Name: %Bundle-Name
Bundle-Vendor: %Bundle-Vendor
Bundle-SymbolicName: org.eclipse.tracecompass.analysis.counters.ui;singleton:=true
-Bundle-Version: 1.0.1.qualifier
+Bundle-Version: 2.0.0.qualifier
Bundle-Localization: plugin
Bundle-Activator: org.eclipse.tracecompass.internal.analysis.counters.ui.Activator
Bundle-ActivationPolicy: lazy
@@ -19,10 +19,8 @@
Import-Package: com.google.common.base,
com.google.common.collect,
com.google.common.primitives,
- org.apache.commons.lang3,
- org.swtchart
-Export-Package: org.eclipse.tracecompass.analysis.counters.ui,
- org.eclipse.tracecompass.analysis.counters.ui.views,
+ org.apache.commons.lang3
+Export-Package: org.eclipse.tracecompass.analysis.counters.ui.views,
org.eclipse.tracecompass.internal.analysis.counters.ui;x-internal:=true
Automatic-Module-Name: org.eclipse.tracecompass.analysis.counters.ui
diff --git a/analysis/org.eclipse.tracecompass.analysis.counters.ui/src/org/eclipse/tracecompass/analysis/counters/ui/CounterChartViewer.java b/analysis/org.eclipse.tracecompass.analysis.counters.ui/src/org/eclipse/tracecompass/analysis/counters/ui/CounterChartViewer.java
deleted file mode 100644
index aae7ca9..0000000
--- a/analysis/org.eclipse.tracecompass.analysis.counters.ui/src/org/eclipse/tracecompass/analysis/counters/ui/CounterChartViewer.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017, 2018 Ericsson
- *
- * All rights reserved. This program and the accompanying materials are
- * made available under the terms of the Eclipse Public License 2.0 which
- * accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-
-package org.eclipse.tracecompass.analysis.counters.ui;
-
-import java.util.Map;
-
-import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.tracecompass.internal.analysis.counters.core.CounterDataProvider;
-import org.eclipse.tracecompass.internal.tmf.core.model.filters.FetchParametersUtils;
-import org.eclipse.tracecompass.tmf.core.model.filters.SelectionTimeQueryFilter;
-import org.eclipse.tracecompass.tmf.ui.viewers.xycharts.linecharts.TmfFilteredXYChartViewer;
-import org.eclipse.tracecompass.tmf.ui.viewers.xycharts.linecharts.TmfXYChartSettings;
-
-/**
- * XY line chart which displays the counters data.
- *
- * @author Matthew Khouzam
- * @author Mikael Ferland
- * @deprecated use {@link org.eclipse.tracecompass.analysis.counters.ui.views.CounterChartViewer}
- */
-@Deprecated
-public final class CounterChartViewer extends TmfFilteredXYChartViewer {
-
- private boolean fIsCumulative = false;
-
- /**
- * Constructor
- *
- * @param parent
- * Parent composite
- * @param settings
- * See {@link TmfXYChartSettings} to know what it contains
- */
- public CounterChartViewer(Composite parent, TmfXYChartSettings settings) {
- // Avoid displaying chart title and axis titles (to reduce wasted space)
- super(parent, settings, CounterDataProvider.ID);
- }
-
- /**
- * Display the counters data cumulatively or not.
- */
- public void toggleCumulative() {
- cancelUpdate();
- fIsCumulative ^= true;
- updateContent();
- }
-
- @Override
- protected @NonNull Map<String, Object> createQueryParameters(long start, long end, int nb) {
- Map<@NonNull String, @NonNull Object> parameters = FetchParametersUtils.selectionTimeQueryToMap(new SelectionTimeQueryFilter(start, end, nb, getSelected()));
- parameters.put(CounterDataProvider.CUMULATIVE_COUNTER_KEY, fIsCumulative);
- return parameters;
- }
-}
diff --git a/analysis/org.eclipse.tracecompass.analysis.counters.ui/src/org/eclipse/tracecompass/analysis/counters/ui/CounterTreeViewer.java b/analysis/org.eclipse.tracecompass.analysis.counters.ui/src/org/eclipse/tracecompass/analysis/counters/ui/CounterTreeViewer.java
deleted file mode 100644
index 016896a..0000000
--- a/analysis/org.eclipse.tracecompass.analysis.counters.ui/src/org/eclipse/tracecompass/analysis/counters/ui/CounterTreeViewer.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017, 2018 Ericsson
- *
- * All rights reserved. This program and the accompanying materials are
- * made available under the terms of the Eclipse Public License 2.0 which
- * accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-
-package org.eclipse.tracecompass.analysis.counters.ui;
-
-import java.util.Comparator;
-
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.tracecompass.internal.analysis.counters.core.CounterDataProvider;
-import org.eclipse.tracecompass.tmf.core.model.tree.TmfTreeDataModel;
-import org.eclipse.tracecompass.tmf.ui.viewers.tree.AbstractSelectTreeViewer;
-import org.eclipse.tracecompass.tmf.ui.viewers.tree.ITmfTreeColumnDataProvider;
-import org.eclipse.tracecompass.tmf.ui.viewers.tree.TmfGenericTreeEntry;
-import org.eclipse.tracecompass.tmf.ui.viewers.tree.TmfTreeColumnData;
-
-import com.google.common.collect.Lists;
-
-/**
- * Display the state system as a filtered checkbox tree:
- *
- * <pre>
- * {trace name}
- * +- Grouped
- * | +- {group id}
- * | | +- {group element}
- * | | +- ...
- * | +- {group id}
- * | +- ...
- * +- Ungrouped
- * +- {counter}
- * +- ...
- * </pre>
- *
- * @author Matthew Khouzam
- * @author Mikael Ferland
- * @deprecated use {@link org.eclipse.tracecompass.analysis.counters.ui.views.CounterTreeViewer}
- */
-@Deprecated
-public class CounterTreeViewer extends AbstractSelectTreeViewer {
-
- private final class CounterTreeLabelProvider extends DataProviderTreeLabelProvider {
-
- @Override
- public Image getColumnImage(Object element, int columnIndex) {
- if (columnIndex == 1 && element instanceof TmfGenericTreeEntry && isChecked(element)) {
- TmfGenericTreeEntry<TmfTreeDataModel> genericEntry = (TmfGenericTreeEntry<TmfTreeDataModel>) element;
- if (genericEntry.hasChildren()) {
- return null;
- }
- return getLegendImage(genericEntry.getModel().getId());
- }
- return null;
- }
- }
-
- /**
- * Constructor
- *
- * @param parent
- * Parent composite
- */
- public CounterTreeViewer(Composite parent) {
- super(parent, 1, CounterDataProvider.ID);
- setLabelProvider(new CounterTreeLabelProvider());
- }
-
- @Override
- protected ITmfTreeColumnDataProvider getColumnDataProvider() {
- return () -> Lists.newArrayList(createColumn("Counters", Comparator.comparing(TmfGenericTreeEntry::getName)), new TmfTreeColumnData("Legend")); //$NON-NLS-1$ //$NON-NLS-2$
- }
-
-}
diff --git a/analysis/org.eclipse.tracecompass.analysis.counters.ui/src/org/eclipse/tracecompass/analysis/counters/ui/CounterView.java b/analysis/org.eclipse.tracecompass.analysis.counters.ui/src/org/eclipse/tracecompass/analysis/counters/ui/CounterView.java
deleted file mode 100644
index 72f0a3c..0000000
--- a/analysis/org.eclipse.tracecompass.analysis.counters.ui/src/org/eclipse/tracecompass/analysis/counters/ui/CounterView.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017 Ericsson
- *
- * All rights reserved. This program and the accompanying materials are
- * made available under the terms of the Eclipse Public License 2.0 which
- * accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-
-package org.eclipse.tracecompass.analysis.counters.ui;
-
-import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.tracecompass.internal.analysis.counters.ui.Messages;
-import org.eclipse.tracecompass.tmf.ui.viewers.TmfViewer;
-import org.eclipse.tracecompass.tmf.ui.viewers.xycharts.TmfXYChartViewer;
-import org.eclipse.tracecompass.tmf.ui.viewers.xycharts.linecharts.TmfXYChartSettings;
-import org.eclipse.tracecompass.tmf.ui.views.TmfChartView;
-import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.IWorkbenchActionConstants;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-
-/**
- * Main implementation for the counters view.
- *
- * <p>
- * The view is composed of two parts:
- * <ol>
- * <li>CounterTreeViewer (left-hand side)</li>
- * <li>CounterChartViewer (right-hand side)</li>
- * </ol>
- * </p>
- *
- * @author Matthew Khouzam
- * @author Mikael Ferland
- * @deprecated use {@link org.eclipse.tracecompass.analysis.counters.ui.views.CounterView}
- */
-@Deprecated
-public class CounterView extends TmfChartView {
-
- /** View ID. */
- public static final String ID = "org.eclipse.tracecompass.analysis.counters.ui.view.counters"; //$NON-NLS-1$
-
- /**
- * Title of the chart viewer
- */
- public static final String VIEW_TITLE = "Counters (Legacy)"; //$NON-NLS-1$
-
- /**
- * Constructor
- */
- public CounterView() {
- super(VIEW_TITLE);
- }
-
- @Override
- public void createPartControl(Composite parent) {
- super.createPartControl(parent);
-
- // Add a tool bar button to display counters data cumulatively
- IActionBars bars = getViewSite().getActionBars();
- bars.getToolBarManager().appendToGroup(IWorkbenchActionConstants.MB_ADDITIONS, getCumulativeAction());
- }
-
- @Override
- protected TmfXYChartViewer createChartViewer(Composite parent) {
- return new CounterChartViewer(parent, new TmfXYChartSettings(null, null, null, 1));
- }
-
- @Override
- protected @NonNull TmfViewer createLeftChildViewer(Composite parent) {
- return new CounterTreeViewer(parent);
- }
-
- private Action getCumulativeAction() {
- Action action = new Action(Messages.CounterView_CumulativeAction_Text, IAction.AS_CHECK_BOX) {
-
- @Override
- public void run() {
- boolean isCumulative = isChecked();
- setToolTipText(isCumulative ? Messages.CounterView_CumulativeAction_DifferentialTooltipText : Messages.CounterView_CumulativeAction_CumulativeTooltipText);
- TmfXYChartViewer chart = getChartViewer();
- if (chart instanceof CounterChartViewer) {
- ((CounterChartViewer) chart).toggleCumulative();
- }
- }
- };
-
- action.setToolTipText(Messages.CounterView_CumulativeAction_CumulativeTooltipText);
- action.setImageDescriptor(AbstractUIPlugin.imageDescriptorFromPlugin("org.eclipse.tracecompass.tmf.ui", "icons/elcl16/sigma.gif")); //$NON-NLS-1$ //$NON-NLS-2$
- return action;
- }
-
-}
diff --git a/analysis/org.eclipse.tracecompass.analysis.lami.ui/META-INF/MANIFEST.MF b/analysis/org.eclipse.tracecompass.analysis.lami.ui/META-INF/MANIFEST.MF
index 9aab563b..3634dfe 100644
--- a/analysis/org.eclipse.tracecompass.analysis.lami.ui/META-INF/MANIFEST.MF
+++ b/analysis/org.eclipse.tracecompass.analysis.lami.ui/META-INF/MANIFEST.MF
@@ -23,6 +23,5 @@
org.eclipse.tracecompass.internal.provisional.analysis.lami.ui.handler;x-internal:=true,
org.eclipse.tracecompass.internal.provisional.analysis.lami.ui.viewers;x-internal:=true,
org.eclipse.tracecompass.internal.provisional.analysis.lami.ui.views;x-friends:="org.eclipse.tracecompass.analysis.lami.ui.swtbot.tests"
-Import-Package: com.google.common.collect,
- org.swtchart
+Import-Package: com.google.common.collect
Automatic-Module-Name: org.eclipse.tracecompass.analysis.lami.ui
diff --git a/analysis/org.eclipse.tracecompass.analysis.os.linux.ui.swtbot.tests/META-INF/MANIFEST.MF b/analysis/org.eclipse.tracecompass.analysis.os.linux.ui.swtbot.tests/META-INF/MANIFEST.MF
index 77435a0..e584b9e 100644
--- a/analysis/org.eclipse.tracecompass.analysis.os.linux.ui.swtbot.tests/META-INF/MANIFEST.MF
+++ b/analysis/org.eclipse.tracecompass.analysis.os.linux.ui.swtbot.tests/META-INF/MANIFEST.MF
@@ -38,6 +38,5 @@
Import-Package: com.google.common.collect,
org.apache.commons.io,
org.eclipse.swtchart,
- org.eclipse.tracecompass.testtraces.ctf,
- org.swtchart
+ org.eclipse.tracecompass.testtraces.ctf
Automatic-Module-Name: org.eclipse.tracecompass.analysis.os.linux.ui.swtbot.tests
diff --git a/analysis/org.eclipse.tracecompass.analysis.os.linux.ui/META-INF/MANIFEST.MF b/analysis/org.eclipse.tracecompass.analysis.os.linux.ui/META-INF/MANIFEST.MF
index 379c043..b2d93ce 100644
--- a/analysis/org.eclipse.tracecompass.analysis.os.linux.ui/META-INF/MANIFEST.MF
+++ b/analysis/org.eclipse.tracecompass.analysis.os.linux.ui/META-INF/MANIFEST.MF
@@ -24,8 +24,7 @@
Import-Package: com.google.common.annotations,
com.google.common.base,
com.google.common.collect,
- org.eclipse.swtchart,
- org.swtchart
+ org.eclipse.swtchart
Export-Package: org.eclipse.tracecompass.internal.analysis.os.linux.ui;x-friends:="org.eclipse.tracecompass.analysis.os.linux.ui.swtbot.tests",
org.eclipse.tracecompass.internal.analysis.os.linux.ui.actions;x-internal:=true,
org.eclipse.tracecompass.internal.analysis.os.linux.ui.perspectives;x-internal:=true,
diff --git a/analysis/org.eclipse.tracecompass.analysis.os.linux.ui/src/org/eclipse/tracecompass/internal/analysis/os/linux/ui/views/memory/MemoryUsageTreeViewer.java b/analysis/org.eclipse.tracecompass.analysis.os.linux.ui/src/org/eclipse/tracecompass/internal/analysis/os/linux/ui/views/memory/MemoryUsageTreeViewer.java
deleted file mode 100644
index 1efb2dd..0000000
--- a/analysis/org.eclipse.tracecompass.analysis.os.linux.ui/src/org/eclipse/tracecompass/internal/analysis/os/linux/ui/views/memory/MemoryUsageTreeViewer.java
+++ /dev/null
@@ -1,157 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2016, 2018 Polytechnique de Montréal
- *
- * All rights reserved. This program and the accompanying materials are
- * made available under the terms of the Eclipse Public License 2.0 which
- * accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- **********************************************************************/
-package org.eclipse.tracecompass.internal.analysis.os.linux.ui.views.memory;
-
-import java.util.Comparator;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.tracecompass.analysis.os.linux.core.memory.MemoryUsageTreeModel;
-import org.eclipse.tracecompass.internal.tmf.core.model.filters.FetchParametersUtils;
-import org.eclipse.tracecompass.tmf.core.model.filters.FilterTimeQueryFilter;
-import org.eclipse.tracecompass.tmf.core.model.tree.ITmfTreeDataModel;
-import org.eclipse.tracecompass.tmf.core.signal.TmfSignalHandler;
-import org.eclipse.tracecompass.tmf.core.signal.TmfTraceOpenedSignal;
-import org.eclipse.tracecompass.tmf.core.signal.TmfTraceSelectedSignal;
-import org.eclipse.tracecompass.tmf.ui.viewers.tree.AbstractSelectTreeViewer;
-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.TmfGenericTreeEntry;
-import org.eclipse.tracecompass.tmf.ui.viewers.tree.TmfTreeColumnData;
-
-import com.google.common.collect.ImmutableList;
-
-/**
- * Tree viewer to select which process to display in the kernel memory usage
- * chart.
- *
- * @since 2.2
- * @author Mahdi Zolnouri
- * @author Wassim Nasrallah
- * @author Najib Arbaoui
- *
- * @deprecated use {@link MemoryUsageTreeViewer2} instead
- */
-@Deprecated
-public class MemoryUsageTreeViewer extends AbstractSelectTreeViewer {
-
- /** Provides label for the Kernel memory usage tree viewer cells */
- private class MemoryLabelProvider extends DataProviderTreeLabelProvider {
-
- @Override
- public String getColumnText(Object element, int columnIndex) {
- if (!(element instanceof TmfGenericTreeEntry)) {
- return null;
- }
- TmfGenericTreeEntry<MemoryUsageTreeModel> obj = (TmfGenericTreeEntry<MemoryUsageTreeModel>) element;
- if (columnIndex == 0) {
- return obj.getName();
- } else if (columnIndex == 1) {
- int tid = obj.getModel().getTid();
- if (obj.getModel().getParentId() == -1) {
- // FIXME: Series total have different style than others. This should come from the data provider
- return Messages.MemoryUsageTree_Total;
- }
- return Integer.toString(tid);
- }
- return null;
- }
-
- @Override
- public Image getColumnImage(Object element, int columnIndex) {
- if (columnIndex != 2 || !(element instanceof TmfGenericTreeEntry)) {
- return null;
- }
- TmfGenericTreeEntry<MemoryUsageTreeModel> obj = (TmfGenericTreeEntry<MemoryUsageTreeModel>) element;
- if (isChecked(element) || obj.getModel().getParentId() == -1) {
- TmfGenericTreeEntry<MemoryUsageTreeModel> entry = (TmfGenericTreeEntry<MemoryUsageTreeModel>) element;
- return getLegendImage(entry.getModel().getId());
- }
- return null;
- }
- }
-
- // view is filtered by default
- private boolean fFiltered = true;
- private MemoryPresentationProvider fPresentationProvider;
-
- /**
- * Constructor
- *
- * @param parent
- * The parent composite that holds this viewer
- * @param id
- * The memory usage data provider ID.
- */
- public MemoryUsageTreeViewer(Composite parent, String id) {
- super(parent, 2, id);
- setLabelProvider(new MemoryLabelProvider());
- }
-
- @Override
- protected @NonNull Map<String, Object> getParameters(long start, long end, boolean isSelection) {
- return FetchParametersUtils.filteredTimeQueryToMap(new FilterTimeQueryFilter(Long.min(start, end), Long.max(start, end), 2, fFiltered));
- }
-
- @Override
- protected ITmfTreeColumnDataProvider getColumnDataProvider() {
- return () -> {
- Comparator<TmfGenericTreeEntry<MemoryUsageTreeModel>> compareTid = Comparator.comparingInt(c -> c.getModel().getTid());
- return ImmutableList.of(
- createColumn(Messages.MemoryUsageTree_ColumnProcess, Comparator.comparing(TmfGenericTreeEntry::getName)),
- createColumn(Messages.MemoryUsageTree_ColumnTID, compareTid),
- new TmfTreeColumnData(Messages.MemoryUsageTree_Legend));
- };
- }
-
- /**
- * Set the view to filter active threads or not.
- *
- * @param isFiltered
- * if we filter the active threads or not.
- */
- public void setFiltered(boolean isFiltered) {
- fFiltered = isFiltered;
- updateContent(getWindowStartTime(), getWindowEndTime(), false);
- }
-
- @Override
- @TmfSignalHandler
- public void traceSelected(TmfTraceSelectedSignal signal) {
- super.traceSelected(signal);
- fPresentationProvider = MemoryPresentationProvider.getForTrace(signal.getTrace());
- }
-
- @Override
- @TmfSignalHandler
- public void traceOpened(TmfTraceOpenedSignal signal) {
- super.traceOpened(signal);
- fPresentationProvider = MemoryPresentationProvider.getForTrace(signal.getTrace());
- }
-
- @Override
- protected ITmfTreeViewerEntry modelToTree(long start, long end, List<ITmfTreeDataModel> model) {
- // FIXME: Series total have different style than others. This should
- // come from the data provider
- for (ITmfTreeDataModel entryModel : model) {
- if (entryModel.getParentId() == -1) {
- // FIXME: Series total have different style than others. This
- // should come from the data provider
- fPresentationProvider.addTotalSeries(entryModel.getId());
- }
- }
-
- return super.modelToTree(start, end, model);
- }
-}
\ No newline at end of file
diff --git a/analysis/org.eclipse.tracecompass.analysis.os.linux.ui/src/org/eclipse/tracecompass/internal/analysis/os/linux/ui/views/memory/MemoryUsageView.java b/analysis/org.eclipse.tracecompass.analysis.os.linux.ui/src/org/eclipse/tracecompass/internal/analysis/os/linux/ui/views/memory/MemoryUsageView.java
deleted file mode 100644
index 33d978f..0000000
--- a/analysis/org.eclipse.tracecompass.analysis.os.linux.ui/src/org/eclipse/tracecompass/internal/analysis/os/linux/ui/views/memory/MemoryUsageView.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2016, 2018 École Polytechnique de Montréal and others
- *
- * All rights reserved. This program and the accompanying materials are
- * made available under the terms of the Eclipse Public License 2.0 which
- * accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- **********************************************************************/
-package org.eclipse.tracecompass.internal.analysis.os.linux.ui.views.memory;
-
-import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.tracecompass.common.core.format.DataSizeWithUnitFormat;
-import org.eclipse.tracecompass.internal.provisional.tmf.ui.viewers.xychart.BaseXYPresentationProvider;
-import org.eclipse.tracecompass.tmf.core.model.OutputElementStyle;
-import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
-import org.eclipse.tracecompass.tmf.ui.viewers.TmfViewer;
-import org.eclipse.tracecompass.tmf.ui.viewers.xycharts.TmfXYChartViewer;
-import org.eclipse.tracecompass.tmf.ui.viewers.xycharts.linecharts.TmfFilteredXYChartViewer;
-import org.eclipse.tracecompass.tmf.ui.viewers.xycharts.linecharts.TmfXYChartSettings;
-import org.eclipse.tracecompass.tmf.ui.views.TmfChartView;
-import org.eclipse.ui.IWorkbenchActionConstants;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-
-/**
- * Memory usage view
- *
- * @since 2.2
- * @author Samuel Gagnon
- * @author Mahdi Zolnouri
- * @author Wassim Nasrallah
- * @deprecated use @{link {@link MemoryUsageView2}
- */
-@Deprecated
-public class MemoryUsageView extends TmfChartView {
- private final String fProviderId;
- private final TmfXYChartSettings fSettings;
-
- /**
- * Constructor
- *
- * @param title
- * the Memory view's name.
- * @param providerId
- * the ID of the provider to use for this view.
- * @param settings
- * See {@link TmfXYChartSettings} to know what it contains
- */
- public MemoryUsageView(String title, String providerId, TmfXYChartSettings settings) {
- super(title);
- fProviderId = providerId;
- fSettings = settings;
- }
-
- @Override
- protected TmfXYChartViewer createChartViewer(Composite parent) {
- TmfFilteredXYChartViewer viewer = new TmfFilteredXYChartViewer(parent, fSettings, fProviderId) {
- @Override
- public @NonNull OutputElementStyle getSeriesStyle(Long seriesId) {
- return getPresentationProvider().getSeriesStyle(seriesId); }
-
- @Override
- protected BaseXYPresentationProvider createPresentationProvider(ITmfTrace trace) {
- return MemoryPresentationProvider.getForTrace(trace);
- }
-
- };
- viewer.getSwtChart().getAxisSet().getYAxis(0).getTick().setFormat(DataSizeWithUnitFormat.getInstance());
- return viewer;
- }
-
- @Override
- protected @NonNull TmfViewer createLeftChildViewer(Composite parent) {
- return new MemoryUsageTreeViewer(parent, fProviderId);
- }
-
- @Override
- public void createPartControl(Composite parent) {
- super.createPartControl(parent);
-
- // Add a tool bar button to filter active threads.
- getViewSite().getActionBars().getToolBarManager().appendToGroup(IWorkbenchActionConstants.MB_ADDITIONS, getFilterAction());
- }
-
- private Action getFilterAction() {
- Action action = new Action(Messages.MemoryView_FilterAction_Text, IAction.AS_CHECK_BOX) {
- // memory view is filtered by default.
- private boolean isFiltered = true;
-
- @Override
- public void run() {
- isFiltered ^= true;
- setToolTipText(isFiltered ? Messages.MemoryView_FilterAction_FilteredTooltipText : Messages.MemoryView_FilterAction_UnfilteredTooltipText);
- TmfViewer tree = getLeftChildViewer();
- if (tree instanceof MemoryUsageTreeViewer) {
- MemoryUsageTreeViewer memoryUsageTreeViewer = (MemoryUsageTreeViewer) tree;
- memoryUsageTreeViewer.setFiltered(isFiltered);
- }
- }
- };
- action.setToolTipText(Messages.MemoryView_FilterAction_FilteredTooltipText);
- action.setImageDescriptor(AbstractUIPlugin.imageDescriptorFromPlugin("org.eclipse.tracecompass.tmf.ui", "icons/elcl16/filter_items.gif")); //$NON-NLS-1$ //$NON-NLS-2$
- // filtered by default, to not change the default behavior
- action.setChecked(true);
- return action;
- }
-
-}
diff --git a/analysis/org.eclipse.tracecompass.analysis.profiling.ui.swtbot.tests/META-INF/MANIFEST.MF b/analysis/org.eclipse.tracecompass.analysis.profiling.ui.swtbot.tests/META-INF/MANIFEST.MF
index 7a3913f..08ca031 100644
--- a/analysis/org.eclipse.tracecompass.analysis.profiling.ui.swtbot.tests/META-INF/MANIFEST.MF
+++ b/analysis/org.eclipse.tracecompass.analysis.profiling.ui.swtbot.tests/META-INF/MANIFEST.MF
@@ -37,6 +37,5 @@
org.eclipse.tracecompass.analysis.profiling.ui,
org.eclipse.tracecompass.analysis.profiling.core.tests,
org.eclipse.jdt.annotation;bundle-version="[2.0.0,3.0.0)";resolution:=optional
-Import-Package: com.google.common.collect,
- org.swtchart
+Import-Package: com.google.common.collect
Automatic-Module-Name: org.eclipse.tracecompass.analysis.profiling.ui.swtbot.tests
diff --git a/analysis/org.eclipse.tracecompass.analysis.profiling.ui/META-INF/MANIFEST.MF b/analysis/org.eclipse.tracecompass.analysis.profiling.ui/META-INF/MANIFEST.MF
index 47868cf..13466e72 100644
--- a/analysis/org.eclipse.tracecompass.analysis.profiling.ui/META-INF/MANIFEST.MF
+++ b/analysis/org.eclipse.tracecompass.analysis.profiling.ui/META-INF/MANIFEST.MF
@@ -20,7 +20,6 @@
org.eclipse.tracecompass.tmf.ui,
org.eclipse.tracecompass.analysis.timing.core,
org.eclipse.tracecompass.analysis.timing.ui,
- org.swtchart,
org.eclipse.tracecompass.segmentstore.core,
org.eclipse.tracecompass.datastore.core,
org.eclipse.jdt.annotation;bundle-version="[2.0.0,3.0.0)";resolution:=optional
diff --git a/analysis/org.eclipse.tracecompass.analysis.timing.ui.swtbot.tests/META-INF/MANIFEST.MF b/analysis/org.eclipse.tracecompass.analysis.timing.ui.swtbot.tests/META-INF/MANIFEST.MF
index 3c02ded..8465aa1 100644
--- a/analysis/org.eclipse.tracecompass.analysis.timing.ui.swtbot.tests/META-INF/MANIFEST.MF
+++ b/analysis/org.eclipse.tracecompass.analysis.timing.ui.swtbot.tests/META-INF/MANIFEST.MF
@@ -32,6 +32,5 @@
org.eclipse.tracecompass.segmentstore.core,
org.eclipse.tracecompass.datastore.core,
org.eclipse.jdt.annotation;bundle-version="[2.0.0,3.0.0)";resolution:=optional
-Import-Package: com.google.common.collect,
- org.swtchart
+Import-Package: com.google.common.collect
Automatic-Module-Name: org.eclipse.tracecompass.analysis.timing.ui.swtbot.tests
diff --git a/analysis/org.eclipse.tracecompass.analysis.timing.ui/META-INF/MANIFEST.MF b/analysis/org.eclipse.tracecompass.analysis.timing.ui/META-INF/MANIFEST.MF
index d802b50..2848236 100644
--- a/analysis/org.eclipse.tracecompass.analysis.timing.ui/META-INF/MANIFEST.MF
+++ b/analysis/org.eclipse.tracecompass.analysis.timing.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: %Bundle-Name
Bundle-Vendor: %Bundle-Vendor
-Bundle-Version: 4.1.2.qualifier
+Bundle-Version: 5.0.0.qualifier
Bundle-Localization: plugin
Bundle-SymbolicName: org.eclipse.tracecompass.analysis.timing.ui;singleton:=true
Bundle-Activator: org.eclipse.tracecompass.internal.analysis.timing.ui.Activator
@@ -17,21 +17,17 @@
org.eclipse.tracecompass.segmentstore.core,
org.eclipse.tracecompass.tmf.core,
org.eclipse.tracecompass.tmf.ui,
- org.swtchart,
org.eclipse.tracecompass.analysis.timing.ui,
org.eclipse.jface,
org.eclipse.jdt.annotation;bundle-version="[2.0.0,3.0.0)";resolution:=optional,
org.eclipse.swtchart
Export-Package: org.eclipse.tracecompass.analysis.timing.ui.views.segmentstore,
- org.eclipse.tracecompass.analysis.timing.ui.views.segmentstore.density,
org.eclipse.tracecompass.analysis.timing.ui.views.segmentstore.density2,
org.eclipse.tracecompass.analysis.timing.ui.views.segmentstore.scatter,
org.eclipse.tracecompass.analysis.timing.ui.views.segmentstore.statistics,
org.eclipse.tracecompass.analysis.timing.ui.views.segmentstore.table,
org.eclipse.tracecompass.internal.analysis.timing.ui,
- org.eclipse.tracecompass.internal.analysis.timing.ui.views.segmentstore.density;x-internal:=true,
org.eclipse.tracecompass.internal.analysis.timing.ui.views.segmentstore.density2;x-internal:=true,
- org.eclipse.tracecompass.internal.analysis.timing.ui.views.segmentstore.scatter;x-internal:=true,
org.eclipse.tracecompass.internal.analysis.timing.ui.views.segmentstore.statistics;x-internal:=true,
org.eclipse.tracecompass.internal.analysis.timing.ui.views.segmentstore.table;x-internal:=true,
org.eclipse.tracecompass.internal.analysis.timing.ui.views.segmentstore.xyscatter;x-internal:=true
diff --git a/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/analysis/timing/ui/views/segmentstore/density/AbstractSegmentStoreDensityView.java b/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/analysis/timing/ui/views/segmentstore/density/AbstractSegmentStoreDensityView.java
deleted file mode 100644
index 439bb98..0000000
--- a/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/analysis/timing/ui/views/segmentstore/density/AbstractSegmentStoreDensityView.java
+++ /dev/null
@@ -1,183 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2015, 2016 Ericsson
- *
- * All rights reserved. This program and the accompanying materials are
- * made available under the terms of the Eclipse Public License 2.0 which
- * accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-
-package org.eclipse.tracecompass.analysis.timing.ui.views.segmentstore.density;
-
-import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.jdt.annotation.Nullable;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.action.IToolBarManager;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.SashForm;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.tracecompass.analysis.timing.ui.views.segmentstore.table.AbstractSegmentStoreTableViewer;
-import org.eclipse.tracecompass.segmentstore.core.ISegment;
-import org.eclipse.tracecompass.tmf.core.signal.TmfTraceSelectedSignal;
-import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
-import org.eclipse.tracecompass.tmf.core.trace.TmfTraceManager;
-import org.eclipse.tracecompass.tmf.core.util.Pair;
-import org.eclipse.tracecompass.tmf.ui.views.SaveImageUtil;
-import org.eclipse.tracecompass.tmf.ui.views.TmfView;
-
-import com.google.common.annotations.VisibleForTesting;
-
-/**
- * Displays the segment store analysis data in a density chart and a table
- * corresponding to the selected latencies.
- *
- * @author Matthew Khouzam
- * @author Marc-Andre Laperle
- * @deprecated use {@link org.eclipse.tracecompass.analysis.timing.ui.views.segmentstore.density2.AbstractSegmentStoreDensityViewer}
- */
-@Deprecated
-public abstract class AbstractSegmentStoreDensityView extends TmfView {
-
- private static final int[] DEFAULT_WEIGHTS = new int[] { 4, 6 };
-
- /**
- * Default zoom range
- * @since 4.1
- */
- public static final Pair<Double, Double> DEFAULT_RANGE = new Pair<>(Double.POSITIVE_INFINITY, Double.NEGATIVE_INFINITY);
-
- private @Nullable AbstractSegmentStoreDensityViewer fDensityViewer;
- private @Nullable AbstractSegmentStoreTableViewer fTableViewer;
-
- /**
- * Constructs a segment store density view
- *
- * @param viewName
- * the name of the view
- */
- public AbstractSegmentStoreDensityView(String viewName) {
- super(viewName);
- }
-
- /**
- * Used to keep the table in sync with the density viewer.
- */
- private final class DataChangedListener implements ISegmentStoreDensityViewerDataListener {
-
- private void updateTableModel(@Nullable Iterable<? extends ISegment> data) {
- final AbstractSegmentStoreTableViewer viewer = fTableViewer;
- if (viewer != null && data != null) {
- viewer.updateModel(data);
- }
- }
-
- @Override
- public void viewDataChanged(@NonNull Iterable<? extends @NonNull ISegment> newData) {
- updateTableModel(newData);
- }
-
- @Override
- public void selectedDataChanged(@Nullable Iterable<? extends @NonNull ISegment> newSelectionData) {
- updateTableModel(newSelectionData);
- }
-
- }
-
- @Override
- public void createPartControl(@Nullable Composite parent) {
- super.createPartControl(parent);
- final SashForm sashForm = new SashForm(parent, SWT.NONE);
-
- fTableViewer = createSegmentStoreTableViewer(sashForm);
- fDensityViewer = createSegmentStoreDensityViewer(sashForm);
- fDensityViewer.addDataListener(new DataChangedListener());
-
- sashForm.setWeights(DEFAULT_WEIGHTS);
-
- Action zoomOut = new ZoomOutAction(this);
- IToolBarManager toolBar = getViewSite().getActionBars().getToolBarManager();
- toolBar.add(zoomOut);
- ITmfTrace trace = TmfTraceManager.getInstance().getActiveTrace();
- if (trace != null) {
- TmfTraceSelectedSignal signal = new TmfTraceSelectedSignal(this, trace);
- if (fDensityViewer != null) {
- fDensityViewer.traceSelected(signal);
- }
- if (fTableViewer != null) {
- fTableViewer.traceSelected(signal);
- }
- }
- }
-
- @Override
- protected @NonNull IAction createSaveAction() {
- return SaveImageUtil.createSaveAction(getName(), this::getDensityViewer);
- }
-
- /**
- * Create a table viewer suitable for displaying the segment store content.
- *
- * @param parent
- * the parent composite
- * @return the table viewer
- */
- protected abstract AbstractSegmentStoreTableViewer createSegmentStoreTableViewer(Composite parent);
-
- /**
- * Create a density viewer suitable for displaying the segment store
- * content.
- *
- * @param parent
- * the parent composite
- * @return the density viewer
- */
- protected abstract AbstractSegmentStoreDensityViewer createSegmentStoreDensityViewer(Composite parent);
-
- @Override
- public void setFocus() {
- final AbstractSegmentStoreDensityViewer viewer = fDensityViewer;
- if (viewer != null) {
- viewer.getControl().setFocus();
- }
- }
-
- @Override
- public void dispose() {
- final AbstractSegmentStoreDensityViewer densityViewer = fDensityViewer;
- if (densityViewer != null) {
- densityViewer.dispose();
- }
-
- final AbstractSegmentStoreTableViewer tableViewer = fTableViewer;
- if (tableViewer != null) {
- tableViewer.dispose();
- }
-
- super.dispose();
- }
-
- /**
- * Get the density viewer
- *
- * @return the density viewer
- * @since 1.2
- */
- @VisibleForTesting
- public @Nullable AbstractSegmentStoreDensityViewer getDensityViewer() {
- return fDensityViewer;
- }
-
- /**
- * Get the table viewer
- *
- * @return the table viewer
- * @since 1.2
- */
- @VisibleForTesting
- public @Nullable AbstractSegmentStoreTableViewer getTableViewer() {
- return fTableViewer;
- }
-}
\ No newline at end of file
diff --git a/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/analysis/timing/ui/views/segmentstore/density/AbstractSegmentStoreDensityViewer.java b/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/analysis/timing/ui/views/segmentstore/density/AbstractSegmentStoreDensityViewer.java
deleted file mode 100644
index 2616e2f..0000000
--- a/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/analysis/timing/ui/views/segmentstore/density/AbstractSegmentStoreDensityViewer.java
+++ /dev/null
@@ -1,660 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2015, 2018 Ericsson
- *
- * All rights reserved. This program and the accompanying materials are
- * made available under the terms of the Eclipse Public License 2.0 which
- * accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-
-package org.eclipse.tracecompass.analysis.timing.ui.views.segmentstore.density;
-
-import static org.eclipse.tracecompass.common.core.NonNullUtils.nullToEmptyString;
-
-import java.text.Format;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Objects;
-import java.util.Set;
-import java.util.concurrent.CompletableFuture;
-import java.util.function.Predicate;
-
-import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.jdt.annotation.Nullable;
-import org.eclipse.jface.resource.ColorRegistry;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.RGB;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.tracecompass.analysis.timing.core.segmentstore.IAnalysisProgressListener;
-import org.eclipse.tracecompass.analysis.timing.core.segmentstore.ISegmentStoreProvider;
-import org.eclipse.tracecompass.common.core.NonNullUtils;
-import org.eclipse.tracecompass.common.core.format.SubSecondTimeWithUnitFormat;
-import org.eclipse.tracecompass.internal.analysis.timing.ui.views.segmentstore.density.MouseDragZoomProvider;
-import org.eclipse.tracecompass.internal.analysis.timing.ui.views.segmentstore.density.MouseSelectionProvider;
-import org.eclipse.tracecompass.internal.analysis.timing.ui.views.segmentstore.density.SimpleTooltipProvider;
-import org.eclipse.tracecompass.internal.analysis.timing.ui.views.segmentstore.table.SegmentStoreContentProvider.SegmentStoreWithRange;
-import org.eclipse.tracecompass.segmentstore.core.ISegment;
-import org.eclipse.tracecompass.segmentstore.core.ISegmentStore;
-import org.eclipse.tracecompass.segmentstore.core.SegmentComparators;
-import org.eclipse.tracecompass.tmf.core.analysis.IAnalysisModule;
-import org.eclipse.tracecompass.tmf.core.presentation.IYAppearance;
-import org.eclipse.tracecompass.tmf.core.presentation.IYAppearance.Type;
-import org.eclipse.tracecompass.tmf.core.presentation.RotatingPaletteProvider;
-import org.eclipse.tracecompass.tmf.core.signal.TmfSignalHandler;
-import org.eclipse.tracecompass.tmf.core.signal.TmfTraceClosedSignal;
-import org.eclipse.tracecompass.tmf.core.signal.TmfTraceOpenedSignal;
-import org.eclipse.tracecompass.tmf.core.signal.TmfTraceSelectedSignal;
-import org.eclipse.tracecompass.tmf.core.signal.TmfWindowRangeUpdatedSignal;
-import org.eclipse.tracecompass.tmf.core.timestamp.TmfTimeRange;
-import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
-import org.eclipse.tracecompass.tmf.core.trace.TmfTraceContext;
-import org.eclipse.tracecompass.tmf.core.trace.TmfTraceManager;
-import org.eclipse.tracecompass.tmf.ui.colors.RGBAUtil;
-import org.eclipse.tracecompass.tmf.ui.viewers.IImageSave;
-import org.eclipse.tracecompass.tmf.ui.viewers.TmfViewer;
-import org.eclipse.tracecompass.tmf.ui.widgets.timegraph.widgets.TimeGraphColorScheme;
-import org.swtchart.Chart;
-import org.swtchart.IAxis;
-import org.swtchart.IBarSeries;
-import org.swtchart.ILegend;
-import org.swtchart.ILineSeries;
-import org.swtchart.ILineSeries.PlotSymbolType;
-import org.swtchart.ISeries;
-import org.swtchart.ISeries.SeriesType;
-import org.swtchart.ISeriesSet;
-import org.swtchart.LineStyle;
-import org.swtchart.Range;
-
-import com.google.common.annotations.VisibleForTesting;
-
-/**
- * Displays the segment store provider data in a density chart.
- *
- * @author Matthew Khouzam
- * @author Marc-Andre Laperle
- *
- * @since 2.0
- */
-@Deprecated
-public abstract class AbstractSegmentStoreDensityViewer extends TmfViewer implements IImageSave {
-
- private static final Format DENSITY_TIME_FORMATTER = SubSecondTimeWithUnitFormat.getInstance();
- private static final RGB BAR_COLOR = new RGB(0x42, 0x85, 0xf4);
- private static final ColorRegistry COLOR_REGISTRY = new ColorRegistry();
- private static final RotatingPaletteProvider PALETTE = new RotatingPaletteProvider.Builder().setSaturation(0.73f).setBrightness(0.957f).setNbColors(60).build();
-
- /** The color scheme for the chart */
- private TimeGraphColorScheme fColorScheme = new TimeGraphColorScheme();
- private final Chart fChart;
- private final MouseDragZoomProvider fDragZoomProvider;
- private final MouseSelectionProvider fDragProvider;
- private final SimpleTooltipProvider fTooltipProvider;
-
- private @Nullable ITmfTrace fTrace;
- private Map<@NonNull String, @NonNull IAnalysisProgressListener> fProgressListeners = new HashMap<>();
- private final Map<@NonNull String, @NonNull ISegmentStoreProvider> fSegmentStoreProviders = new HashMap<>();
- private Range fCurrentDurationRange = new Range(AbstractSegmentStoreDensityView.DEFAULT_RANGE.getFirst(), AbstractSegmentStoreDensityView.DEFAULT_RANGE.getSecond());
- private TmfTimeRange fCurrentTimeRange = TmfTimeRange.NULL_RANGE;
- private final List<ISegmentStoreDensityViewerDataListener> fListeners;
- private int fOverrideNbPoints;
- private String fSeriesType;
- private final Set<@NonNull ITmfTrace> fTraces = new HashSet<>();
-
- /**
- * Constructs a new density viewer.
- *
- * @param parent
- * the parent of the viewer
- */
- public AbstractSegmentStoreDensityViewer(Composite parent) {
- super(parent);
- fListeners = new ArrayList<>();
- fChart = new Chart(parent, SWT.NONE);
- Color backgroundColor = fColorScheme.getColor(TimeGraphColorScheme.TOOL_BACKGROUND);
- fChart.setBackground(backgroundColor);
- backgroundColor = fColorScheme.getColor(TimeGraphColorScheme.BACKGROUND);
- fChart.setBackgroundInPlotArea(backgroundColor);
- parent.setBackground(backgroundColor);
- Color foregroundColor = fColorScheme.getColor(TimeGraphColorScheme.TOOL_FOREGROUND);
- fChart.setForeground(foregroundColor);
- fChart.getLegend().setVisible(false);
- fChart.getTitle().setVisible(false);
- IAxis xAxis = fChart.getAxisSet().getXAxis(0);
- IAxis yAxis = fChart.getAxisSet().getYAxis(0);
- xAxis.getTitle().setText(nullToEmptyString(Messages.AbstractSegmentStoreDensityViewer_TimeAxisLabel));
- yAxis.getTitle().setText(nullToEmptyString(Messages.AbstractSegmentStoreDensityViewer_CountAxisLabel));
- xAxis.getTitle().setForeground(foregroundColor);
- yAxis.getTitle().setForeground(foregroundColor);
- xAxis.getTick().setForeground(foregroundColor);
- yAxis.getTick().setForeground(foregroundColor);
- xAxis.getGrid().setStyle(LineStyle.DOT);
- yAxis.getGrid().setStyle(LineStyle.DOT);
- fSeriesType = IYAppearance.Type.BAR;
-
- fDragZoomProvider = new MouseDragZoomProvider(this);
- fDragZoomProvider.register();
- fDragProvider = new MouseSelectionProvider(this);
- fDragProvider.register();
- fTooltipProvider = new SimpleTooltipProvider(this);
- fTooltipProvider.register();
-
- fChart.addDisposeListener(e -> internalDispose());
- }
-
- /**
- * Returns the segment store provider
- *
- * @param trace
- * The trace to consider
- * @return the
- */
- protected abstract @Nullable ISegmentStoreProvider getSegmentStoreProvider(ITmfTrace trace);
-
- @Nullable
- private static ITmfTrace getTrace() {
- return TmfTraceManager.getInstance().getActiveTrace();
- }
-
- /**
- * Set the type of series you want
- * @param type the type, bar or area
- * @since 4.1
- */
- protected void setType(String type) {
- switch (type) {
- case Type.BAR:
- fSeriesType = Type.BAR;
- break;
- case Type.AREA:
- fSeriesType = Type.AREA;
- break;
- default:
- break;
- }
- }
-
- private synchronized void updateDisplay(String name, SegmentStoreWithRange<ISegment> data) {
- ISeries series = fSeriesType.equals(Type.BAR) ? createSeries() : createAreaSeries(name);
- int barWidth = 4;
- int preWidth = fOverrideNbPoints == 0 ? fChart.getPlotArea().getBounds().width / barWidth : fOverrideNbPoints;
- if (!fSeriesType.equals(Type.BAR)) {
- preWidth += 2;
- }
- final int width = preWidth;
- double[] xOrigSeries = new double[width];
- double[] yOrigSeries = new double[width];
- // Set a positive value that is greater than 0 and less than 1.0
- Arrays.fill(yOrigSeries, Double.MIN_VALUE);
- data.setComparator(SegmentComparators.INTERVAL_LENGTH_COMPARATOR);
- ISegment maxSegment = data.getElement(SegmentStoreWithRange.LAST);
- long maxLength = Long.MIN_VALUE;
- if (maxSegment != null) {
- maxLength = maxSegment.getLength();
- } else {
- for (ISegment segment : data) {
- maxLength = Math.max(maxLength, segment.getLength());
- }
- if (maxLength == Long.MIN_VALUE) {
- maxLength = 1;
- }
- }
- double maxFactor = 1.0 / (maxLength + 1.0);
- long minX = Long.MAX_VALUE;
- for (ISegment segment : data) {
- double xBox = segment.getLength() * maxFactor * width;
- if (yOrigSeries[(int) xBox] < 1) {
- yOrigSeries[(int) xBox] = 1;
- } else {
- yOrigSeries[(int) xBox]++;
- }
- minX = Math.min(minX, segment.getLength());
- }
- double timeWidth = (double) maxLength / (double) width;
- for (int i = 0; i < width; i++) {
- xOrigSeries[i] = i * timeWidth;
- if (!fSeriesType.equals(Type.BAR)) {
- xOrigSeries[i] += timeWidth / 2;
- }
- }
- double maxY = Double.NEGATIVE_INFINITY;
- for (int i = 0; i < width; i++) {
- maxY = Math.max(maxY, yOrigSeries[i]);
- }
- if (minX == maxLength) {
- maxLength++;
- minX--;
- }
- series.setYSeries(yOrigSeries);
- series.setXSeries(xOrigSeries);
- final IAxis xAxis = fChart.getAxisSet().getXAxis(0);
- /*
- * adjustrange appears to bring origin back since we pad the series with
- * 0s, not interesting.
- */
- Range currentDurationRange = fCurrentDurationRange;
- if (Double.isFinite(currentDurationRange.lower) && Double.isFinite(currentDurationRange.upper)) {
- xAxis.setRange(currentDurationRange);
- } else {
- xAxis.adjustRange();
- }
-
- xAxis.getTick().setFormat(DENSITY_TIME_FORMATTER);
- ILegend legend = fChart.getLegend();
- legend.setVisible(fSegmentStoreProviders.size() > 1);
- legend.setPosition(SWT.BOTTOM);
- /*
- * Clamp range lower to 0.9 to make it log, 0.1 would be scientifically
- * accurate, but we cannot have partial counts.
- */
- for (ISeries internalSeries : fChart.getSeriesSet().getSeries()) {
- double[] ySeries = internalSeries.getYSeries();
- for (int i = 0; i < ySeries.length; i++) {
- maxY = Math.max(maxY, ySeries[i]);
- }
- }
- fChart.getAxisSet().getYAxis(0).setRange(new Range(0.9, Math.max(1.0, maxY)));
- fChart.getAxisSet().getYAxis(0).enableLogScale(true);
- fChart.redraw();
- new Thread(() -> {
- for (ISegmentStoreDensityViewerDataListener l : fListeners) {
- l.chartUpdated();
- }
- }).start();
-
- }
-
- private ISeries createSeries() {
- IBarSeries series = (IBarSeries) fChart.getSeriesSet().createSeries(SeriesType.BAR, Messages.AbstractSegmentStoreDensityViewer_SeriesLabel);
- series.setVisible(true);
- series.setBarPadding(0);
- series.setBarColor(getColorForRGB(BAR_COLOR));
- return series;
- }
-
- private ISeries createAreaSeries(String name) {
- ILineSeries series = (ILineSeries) fChart.getSeriesSet().createSeries(SeriesType.LINE, name);
- series.setVisible(true);
- series.enableStep(true);
- series.enableArea(true);
- series.setSymbolType(PlotSymbolType.NONE);
- RGB rgb = getColorForItem(name);
- Color color = getColorForRGB(rgb);
- series.setLineColor(color);
- return series;
- }
-
- private static Color getColorForRGB(RGB rgb) {
- String rgbString = rgb.toString();
- Color color = COLOR_REGISTRY.get(rgbString);
- if (color == null) {
- COLOR_REGISTRY.put(rgbString, rgb);
- color = Objects.requireNonNull(COLOR_REGISTRY.get(rgbString));
- }
- return color;
- }
-
- /**
- * Get the color for a series
- *
- * @param name
- * the series name
- * @return The color in RGB
- * @since 4.1
- */
- public RGB getColorForItem(String name) {
- if (fSegmentStoreProviders.size() == 1) {
- return BAR_COLOR;
- }
- Set<String> keys = fSegmentStoreProviders.keySet();
- int i = 0;
- for (String key : keys) {
- if (key.equals(name)) {
- break;
- }
- i++;
- }
- float pos = (float) i / keys.size();
- int index = Math.max((int) (PALETTE.getNbColors() * pos), 0) % PALETTE.getNbColors();
- return Objects.requireNonNull(RGBAUtil.fromRGBAColor(PALETTE.get().get(index)).rgb);
- }
-
- @Override
- public Chart getControl() {
- return fChart;
- }
-
- /**
- * Select a range of latency durations in the viewer.
- *
- * @param durationRange
- * a range of latency durations
- */
- public void select(final Range durationRange) {
- fCurrentDurationRange = durationRange;
- final TmfTimeRange timeRange = fCurrentTimeRange;
- computeDataAsync(timeRange, durationRange).thenAccept(data -> {
- synchronized (fListeners) {
- if (fCurrentTimeRange.equals(timeRange) && fCurrentDurationRange.equals(durationRange)) {
- for (ISegmentStoreDensityViewerDataListener listener : fListeners) {
- for (SegmentStoreWithRange<ISegment> value : data.values()) {
- listener.selectedDataChanged(value);
- }
- }
- }
- }
- });
- }
-
- /**
- * Zoom to a range of latency durations in the viewer.
- *
- * @param durationRange
- * a range of latency durations
- */
- public void zoom(final Range durationRange) {
- fCurrentDurationRange = durationRange;
- final TmfTimeRange timeRange = fCurrentTimeRange;
- computeDataAsync(timeRange, durationRange).thenAccept(data -> {
- synchronized (fListeners) {
- if (fCurrentTimeRange.equals(timeRange) && fCurrentDurationRange.equals(durationRange)) {
- applyData(data);
- }
- }
- });
- }
-
- private CompletableFuture<Map<String, SegmentStoreWithRange<ISegment>>> computeDataAsync(final TmfTimeRange timeRange, final Range durationRange) {
- return CompletableFuture.supplyAsync(() -> computeData(timeRange, durationRange));
- }
-
- private @Nullable Map<String, SegmentStoreWithRange<ISegment>> computeData(final TmfTimeRange timeRange, final Range durationRange) {
- Map<String, SegmentStoreWithRange<ISegment>> retVal = new HashMap<>();
- for (Entry<String, ISegmentStoreProvider> entry : fSegmentStoreProviders.entrySet()) {
- final ISegmentStoreProvider segmentProvider = Objects.requireNonNull(entry.getValue());
- final ISegmentStore<ISegment> segStore = segmentProvider.getSegmentStore();
- if (segStore == null) {
- continue;
- }
-
- // Filter on the segment duration if necessary
- if (durationRange.lower > Double.MIN_VALUE || durationRange.upper < Double.MAX_VALUE) {
- Predicate<ISegment> predicate = segment -> segment.getLength() >= durationRange.lower && segment.getLength() <= durationRange.upper;
- retVal.put(entry.getKey(), new SegmentStoreWithRange<>(segStore, timeRange, predicate));
- } else {
- retVal.put(entry.getKey(), new SegmentStoreWithRange<>(segStore, timeRange));
- }
- }
- return retVal;
- }
-
- private void applyData(final Map<String, SegmentStoreWithRange<ISegment>> map) {
- Set<Entry<String, SegmentStoreWithRange<ISegment>>> entrySet = map.entrySet();
- entrySet.parallelStream().forEach(entry -> {
- SegmentStoreWithRange<ISegment> data = Objects.requireNonNull(entry.getValue());
- data.setComparator(SegmentComparators.INTERVAL_LENGTH_COMPARATOR);
- Display.getDefault().asyncExec(() -> updateDisplay(entry.getKey(), data));
- if (fSegmentStoreProviders.size() > 1) {
- setType(Type.AREA);
- } else {
- setType(Type.BAR);
- }
- for (ISegmentStoreDensityViewerDataListener l : fListeners) {
- l.viewDataChanged(data);
- }
- });
- }
-
- /**
- * Sets the segment store provider
- *
- * @param ssp
- * The segment store provider to give to this view
- *
- * @since 1.2
- */
- @VisibleForTesting
- public void setSegmentProvider(@Nullable ISegmentStoreProvider ssp) {
- fSegmentStoreProviders.clear();
- if (ssp != null) {
- fSegmentStoreProviders.put("", ssp); //$NON-NLS-1$
- }
- }
-
- /**
- * Signal handler for handling of the window range signal.
- *
- * @param signal
- * The {@link TmfWindowRangeUpdatedSignal}
- */
- @TmfSignalHandler
- public void windowRangeUpdated(@Nullable TmfWindowRangeUpdatedSignal signal) {
- if (signal == null) {
- return;
- }
- ITmfTrace parent = getTrace();
- if (parent == null) {
- return;
- }
- fCurrentTimeRange = NonNullUtils.checkNotNull(signal.getCurrentRange());
- updateWindowRange(fCurrentTimeRange, false);
- updateWithRange(fCurrentTimeRange);
- }
-
- /**
- * Update the display range
- *
- * @param timeRange
- * the range
- * @since 1.2
- */
- @VisibleForTesting
- public void updateWithRange(final TmfTimeRange timeRange) {
- fCurrentTimeRange = timeRange;
- final Range durationRange = getDefaultRange();
- fCurrentDurationRange = durationRange;
- computeDataAsync(timeRange, durationRange).thenAccept(data -> {
- synchronized (fListeners) {
- if (fCurrentTimeRange.equals(timeRange) && fCurrentDurationRange.equals(durationRange)) {
- applyData(data);
- }
- }
- });
- }
-
- @Override
- public void refresh() {
- fChart.redraw();
- }
-
- @Override
- public void dispose() {
- if (!fChart.isDisposed()) {
- fChart.dispose();
- }
- }
-
- private void internalDispose() {
- fSegmentStoreProviders.entrySet().forEach(entry -> {
- IAnalysisProgressListener listener = fProgressListeners.get(entry.getKey());
- if (listener != null) {
- Objects.requireNonNull(entry.getValue()).removeListener(listener);
- }
- });
- fProgressListeners.clear();
- fDragZoomProvider.deregister();
- fTooltipProvider.deregister();
- fDragProvider.deregister();
- super.dispose();
- }
-
- /**
- * Signal handler for handling of the trace opened signal.
- *
- * @param signal
- * The trace opened signal {@link TmfTraceOpenedSignal}
- */
- @TmfSignalHandler
- public void traceOpened(TmfTraceOpenedSignal signal) {
- if (fTrace != signal.getTrace()) {
- loadTrace(getTrace());
- fTrace = signal.getTrace();
- }
- }
-
- /**
- * Signal handler for handling of the trace selected signal.
- *
- * @param signal
- * The trace selected signal {@link TmfTraceSelectedSignal}
- */
- @TmfSignalHandler
- public void traceSelected(TmfTraceSelectedSignal signal) {
- if (fTrace != signal.getTrace()) {
- loadTrace(getTrace());
- fTrace = signal.getTrace();
- }
- }
-
- /**
- * Signal handler for handling of the trace closed signal.
- *
- * @param signal
- * The trace closed signal {@link TmfTraceClosedSignal}
- */
- @TmfSignalHandler
- public void traceClosed(TmfTraceClosedSignal signal) {
-
- if (signal.getTrace() != fTrace) {
- return;
- }
-
- fTrace = null;
- clearContent();
- }
-
- /**
- * A Method to load a trace into the viewer.
- *
- * @param trace
- * A trace to apply in the viewer
- */
- protected void loadTrace(@Nullable ITmfTrace trace) {
- clearContent();
- TmfTraceContext ctx = TmfTraceManager.getInstance().getCurrentTraceContext();
- TmfTimeRange windowRange = ctx.getWindowRange();
- innerLoadTrace(trace);
- updateWindowRange(windowRange, true);
- fTrace = trace;
- fCurrentTimeRange = windowRange;
- zoom(getDefaultRange());
- }
-
- private void innerLoadTrace(@Nullable ITmfTrace trace) {
- Set<ISegmentStoreProvider> sps = new HashSet<>();
-
- if (trace != null) {
- boolean newTrace = !Objects.equals(trace, fTrace) || fSegmentStoreProviders.isEmpty();
- if (newTrace) {
- fTraces.clear();
- fSegmentStoreProviders.clear();
- for (ITmfTrace child : TmfTraceManager.getTraceSet(trace)) {
- fTraces.add(child);
- ISegmentStoreProvider segmentStoreProvider = getSegmentStoreProvider(child);
- String name = child.getName();
- if (segmentStoreProvider != null && name != null) {
- fSegmentStoreProviders.put(name, segmentStoreProvider);
- sps.add(segmentStoreProvider);
- }
- }
- ISegmentStoreProvider segmentStoreProvider = getSegmentStoreProvider(trace);
- String name = trace.getName();
- if (segmentStoreProvider != null && name != null && !sps.contains(segmentStoreProvider)) {
- fSegmentStoreProviders.put(name, segmentStoreProvider);
- }
- }
- }
- }
-
- private void updateWindowRange(TmfTimeRange windowRange, boolean updateListeners) {
-
- for (Entry<@NonNull String, @NonNull ISegmentStoreProvider> entry : fSegmentStoreProviders.entrySet()) {
- ISegmentStoreProvider provider = Objects.requireNonNull(entry.getValue());
- if (updateListeners) {
- IAnalysisProgressListener listener = (segmentProvider, data) -> updateWithRange(windowRange);
- provider.addListener(listener);
- fProgressListeners.put(entry.getKey(), listener);
- }
- if (provider instanceof IAnalysisModule) {
- ((IAnalysisModule) provider).schedule();
- }
- }
- }
-
- private static Range getDefaultRange() {
- return new Range(AbstractSegmentStoreDensityView.DEFAULT_RANGE.getFirst(), AbstractSegmentStoreDensityView.DEFAULT_RANGE.getSecond());
- }
-
- /**
- * Clears the view content.
- */
- private void clearContent() {
- final Chart chart = fChart;
- if (!chart.isDisposed()) {
- ISeriesSet set = chart.getSeriesSet();
- ISeries[] series = set.getSeries();
- for (int i = 0; i < series.length; i++) {
- set.deleteSeries(series[i].getId());
- }
- for (IAxis axis : chart.getAxisSet().getAxes()) {
- axis.setRange(new Range(0, 1));
- }
- chart.redraw();
- }
- }
-
- /**
- * Force the number of points to a fixed value
- *
- * @param nbPoints
- * The number of points to display, cannot be negative. 0 means use
- * native resolution. any positive integer means that number of
- * points
- * @since 2.2
- */
- public synchronized void setNbPoints(int nbPoints) {
- if (nbPoints < 0) {
- throw new IllegalArgumentException("Number of points cannot be negative"); //$NON-NLS-1$
- }
- fOverrideNbPoints = nbPoints;
- updateWithRange(fCurrentTimeRange);
- }
-
- /**
- * Add a data listener.
- *
- * @param dataListener
- * the data listener to add
- */
- public void addDataListener(ISegmentStoreDensityViewerDataListener dataListener) {
- fListeners.add(dataListener);
- }
-
- /**
- * Remove a data listener.
- *
- * @param dataListener
- * the data listener to remove
- */
- public void removeDataListener(ISegmentStoreDensityViewerDataListener dataListener) {
- fListeners.remove(dataListener);
- }
-}
\ No newline at end of file
diff --git a/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/analysis/timing/ui/views/segmentstore/density/ISegmentStoreDensityViewerDataListener.java b/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/analysis/timing/ui/views/segmentstore/density/ISegmentStoreDensityViewerDataListener.java
deleted file mode 100644
index 6bd2c8e..0000000
--- a/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/analysis/timing/ui/views/segmentstore/density/ISegmentStoreDensityViewerDataListener.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2015, 2018 Ericsson
- *
- * All rights reserved. This program and the accompanying materials are
- * made available under the terms of the Eclipse Public License 2.0 which
- * accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-
-package org.eclipse.tracecompass.analysis.timing.ui.views.segmentstore.density;
-
-import org.eclipse.jdt.annotation.Nullable;
-import org.eclipse.tracecompass.segmentstore.core.ISegment;
-
-/**
- * A listener that gets notified when the viewer sees its data changed or its
- * data selection change.
- */
-@Deprecated
-public interface ISegmentStoreDensityViewerDataListener {
-
- /**
- * Notification that the data changed in the viewer.
- *
- * @param newData
- * the new data
- * @since 2.0
- */
- default void viewDataChanged(Iterable<? extends ISegment> newData) {
- // To be implemented by children
- }
-
- /**
- * Notification that the selection of the data changed in the viewer.
- *
- * @param newSelectionData
- * the new selection of the data
- * @since 2.0
- */
- default void selectedDataChanged(@Nullable Iterable<? extends ISegment> newSelectionData) {
- // To be implemented in children
- }
-
- /**
- * Notification that chart updated
- * @since 2.2
- */
- default void chartUpdated() {
- // To be implemented in children
- }
-
-}
diff --git a/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/analysis/timing/ui/views/segmentstore/density/Messages.java b/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/analysis/timing/ui/views/segmentstore/density/Messages.java
deleted file mode 100644
index 495e409..0000000
--- a/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/analysis/timing/ui/views/segmentstore/density/Messages.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2015 Ericsson
- *
- * All rights reserved. This program and the accompanying materials are
- * made available under the terms of the Eclipse Public License 2.0 which
- * accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-
-package org.eclipse.tracecompass.analysis.timing.ui.views.segmentstore.density;
-
-import org.eclipse.jdt.annotation.NonNullByDefault;
-import org.eclipse.osgi.util.NLS;
-
-/**
- * @author Marc-Andre Laperle
- */
-@Deprecated
-@NonNullByDefault({})
-public class Messages extends NLS {
- private static final String BUNDLE_NAME = "org.eclipse.tracecompass.analysis.timing.ui.views.segmentstore.density.messages"; //$NON-NLS-1$
-
- /**
- * Label for the count axis of the density chart.
- */
- public static String AbstractSegmentStoreDensityViewer_CountAxisLabel;
-
- /**
- * Label for the time axis of the density chart.
- */
- public static String AbstractSegmentStoreDensityViewer_TimeAxisLabel;
-
- /**
- * Tool-tip for the Zoom out action
- */
- public static String AbstractSegmentStoreDensityViewer_ZoomOutActionToolTipText;
-
- /**
- * Label for the series of the density chart.
- */
- public static String AbstractSegmentStoreDensityViewer_SeriesLabel;
-
- static {
- // initialize resource bundle
- NLS.initializeMessages(BUNDLE_NAME, Messages.class);
- }
-
- private Messages() {
- }
-}
diff --git a/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/analysis/timing/ui/views/segmentstore/density/ZoomOutAction.java b/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/analysis/timing/ui/views/segmentstore/density/ZoomOutAction.java
deleted file mode 100644
index 1e9aa15..0000000
--- a/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/analysis/timing/ui/views/segmentstore/density/ZoomOutAction.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2015 Ericsson
- *
- * All rights reserved. This program and the accompanying materials are
- * made available under the terms of the Eclipse Public License 2.0 which
- * accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-
-package org.eclipse.tracecompass.analysis.timing.ui.views.segmentstore.density;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.tracecompass.analysis.timing.ui.views.segmentstore.AnalysisTimingImageConstants;
-import org.eclipse.tracecompass.common.core.NonNullUtils;
-import org.eclipse.tracecompass.internal.analysis.timing.ui.Activator;
-import org.swtchart.Range;
-
-/**
- * Zoom action for the density view
- */
-@Deprecated
-class ZoomOutAction extends Action {
-
- private final AbstractSegmentStoreDensityView fView;
-
- /**
- * Constructors a ZoomOutAction.
- *
- * @param densityViewer
- * The parent density viewer
- */
- public ZoomOutAction(AbstractSegmentStoreDensityView densityViewer) {
- fView = densityViewer;
- }
-
- @Override
- public void run() {
- final AbstractSegmentStoreDensityViewer chart = fView.getDensityViewer();
- if (chart != null) {
- chart.zoom(new Range(AbstractSegmentStoreDensityView.DEFAULT_RANGE.getFirst(), AbstractSegmentStoreDensityView.DEFAULT_RANGE.getSecond()));
- }
- }
-
- @Override
- public ImageDescriptor getImageDescriptor() {
- return NonNullUtils.checkNotNull(Activator.getDefault().getImageDescripterFromPath(AnalysisTimingImageConstants.IMG_UI_ZOOM_OUT_MENU));
- }
-
- @Override
- public String getToolTipText() {
- return NonNullUtils.checkNotNull(Messages.AbstractSegmentStoreDensityViewer_ZoomOutActionToolTipText);
- }
-}
\ No newline at end of file
diff --git a/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/analysis/timing/ui/views/segmentstore/density/messages.properties b/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/analysis/timing/ui/views/segmentstore/density/messages.properties
deleted file mode 100644
index a9512d6..0000000
--- a/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/analysis/timing/ui/views/segmentstore/density/messages.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-###############################################################################
-# Copyright (c) 2015 Ericsson
-#
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-###############################################################################
-
-AbstractSegmentStoreDensityViewer_CountAxisLabel=Count
-AbstractSegmentStoreDensityViewer_TimeAxisLabel=Duration
-AbstractSegmentStoreDensityViewer_ZoomOutActionToolTipText=Zoom Out
-AbstractSegmentStoreDensityViewer_SeriesLabel=Latencies
diff --git a/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/analysis/timing/ui/views/segmentstore/density/package-info.java b/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/analysis/timing/ui/views/segmentstore/density/package-info.java
deleted file mode 100644
index b638a3f..0000000
--- a/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/analysis/timing/ui/views/segmentstore/density/package-info.java
+++ /dev/null
@@ -1,13 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2015 Ericsson
- *
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-
-@org.eclipse.jdt.annotation.NonNullByDefault
-package org.eclipse.tracecompass.analysis.timing.ui.views.segmentstore.density;
diff --git a/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/analysis/timing/ui/views/segmentstore/scatter/AbstractSegmentStoreScatterChartTreeViewer.java b/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/analysis/timing/ui/views/segmentstore/scatter/AbstractSegmentStoreScatterChartTreeViewer.java
deleted file mode 100644
index fec1144..0000000
--- a/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/analysis/timing/ui/views/segmentstore/scatter/AbstractSegmentStoreScatterChartTreeViewer.java
+++ /dev/null
@@ -1,139 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017 École Polytechnique de Montréal
- *
- * All rights reserved. This program and the accompanying materials are
- * made available under the terms of the Eclipse Public License 2.0 which
- * accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-
-package org.eclipse.tracecompass.analysis.timing.ui.views.segmentstore.scatter;
-
-import java.util.Comparator;
-
-import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.jdt.annotation.Nullable;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.tracecompass.analysis.timing.core.segmentstore.IAnalysisProgressListener;
-import org.eclipse.tracecompass.analysis.timing.core.segmentstore.ISegmentStoreProvider;
-import org.eclipse.tracecompass.internal.analysis.timing.core.segmentstore.SegmentStoreScatterDataProvider;
-import org.eclipse.tracecompass.internal.tmf.ui.commands.Messages;
-import org.eclipse.tracecompass.segmentstore.core.ISegment;
-import org.eclipse.tracecompass.segmentstore.core.ISegmentStore;
-import org.eclipse.tracecompass.tmf.core.analysis.IAnalysisModule;
-import org.eclipse.tracecompass.tmf.core.dataprovider.DataProviderManager;
-import org.eclipse.tracecompass.tmf.core.model.tree.ITmfTreeDataModel;
-import org.eclipse.tracecompass.tmf.core.model.tree.ITmfTreeDataProvider;
-import org.eclipse.tracecompass.tmf.core.model.tree.TmfTreeDataModel;
-import org.eclipse.tracecompass.tmf.core.model.xy.ITmfTreeXYDataProvider;
-import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
-import org.eclipse.tracecompass.tmf.core.trace.TmfTraceUtils;
-import org.eclipse.tracecompass.tmf.ui.viewers.tree.AbstractSelectTreeViewer;
-import org.eclipse.tracecompass.tmf.ui.viewers.tree.ITmfTreeColumnDataProvider;
-import org.eclipse.tracecompass.tmf.ui.viewers.tree.TmfGenericTreeEntry;
-import org.eclipse.tracecompass.tmf.ui.viewers.tree.TmfTreeColumnData;
-
-import com.google.common.collect.ImmutableList;
-
-/**
- * Abstract tree viewer to go along with the scatter chart viewer in segment
- * store scatter views
- *
- * @author Geneviève Bastien
- * @since 3.0
- * @deprecated use {@link AbstractSegmentStoreScatterChartTreeViewer2} instead
- */
-@Deprecated
-public class AbstractSegmentStoreScatterChartTreeViewer extends AbstractSelectTreeViewer {
-
- private final String fAnalysisId;
- private @Nullable ISegmentStoreProvider fSegmentProvider = null;
- private SegmentStoreProviderProgressListener fListener = new SegmentStoreProviderProgressListener();
-
- private final class SegStoreScatterLabelProvider extends TreeLabelProvider {
-
- @Override
- public @Nullable Image getColumnImage(@Nullable Object element, int columnIndex) {
- if (columnIndex == 1 && element instanceof TmfGenericTreeEntry && isChecked(element)) {
- TmfGenericTreeEntry<TmfTreeDataModel> entry = (TmfGenericTreeEntry<TmfTreeDataModel>) element;
- if (!entry.hasChildren()) {
- // ensures that only leaf nodes return images
- return getLegendImage(entry.getModel().getId());
- }
- }
- return null;
- }
- }
-
- /**
- * Listener to update the model with the segment store provider results once
- * its store is fully completed
- */
- private final class SegmentStoreProviderProgressListener implements IAnalysisProgressListener {
- @Override
- public void onComplete(ISegmentStoreProvider activeProvider, ISegmentStore<ISegment> data) {
- /*
- * Check if the active trace was changed while the provider was building its
- * segment store
- */
- if (activeProvider.equals(fSegmentProvider)) {
- updateContent(getWindowStartTime(), getWindowEndTime(), false);
- }
- }
- }
-
- /**
- * Constructor
- *
- * @param parent
- * The parent composite
- * @param analysisId
- * The ID of the analysis to show in this viewer
- */
- public AbstractSegmentStoreScatterChartTreeViewer(Composite parent, String analysisId) {
- super(parent, 1, SegmentStoreScatterDataProvider.ID);
- fAnalysisId = analysisId;
- setLabelProvider(new SegStoreScatterLabelProvider());
- }
-
- /**
- * Get the analysis ID used to retrieve the scatter data provider. Extenders may
- * override this method to return another analysis ID than the one in the
- * constructor
- *
- * @return The analysis ID
- */
- protected String getAnalysisId() {
- return fAnalysisId;
- }
-
- @Override
- protected @Nullable ITmfTreeDataProvider<@NonNull ITmfTreeDataModel> getProvider(@NonNull ITmfTrace trace) {
- String analysisId = getAnalysisId();
- /* Support legacy code, get the analysis ID of the segment store */
- if (analysisId.isEmpty()) {
- return null;
- }
- /* End support of legacy */
- // TODO: Find another mechanism to update the view rather than listeners, so
- // that we don't need to expose the analysis to the view
- IAnalysisModule module = TmfTraceUtils.getAnalysisModuleOfClass(trace, IAnalysisModule.class, analysisId);
- if (!(module instanceof ISegmentStoreProvider)) {
- return null;
- }
- fSegmentProvider = (ISegmentStoreProvider) module;
- ((ISegmentStoreProvider) module).addListener(fListener);
- return DataProviderManager.getInstance().getDataProvider(trace, SegmentStoreScatterDataProvider.ID + ':' + analysisId, ITmfTreeXYDataProvider.class);
- }
-
- @Override
- protected ITmfTreeColumnDataProvider getColumnDataProvider() {
- return () -> ImmutableList.of(
- createColumn(Messages.AbstractSegmentStoreScatterView_Type, Comparator.comparing(TmfGenericTreeEntry::getName)),
- new TmfTreeColumnData(Messages.AbstractSegmentStoreScatterView_Legend));
- }
-
-}
diff --git a/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/analysis/timing/ui/views/segmentstore/scatter/AbstractSegmentStoreScatterChartViewer.java b/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/analysis/timing/ui/views/segmentstore/scatter/AbstractSegmentStoreScatterChartViewer.java
deleted file mode 100644
index ddb596b..0000000
--- a/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/analysis/timing/ui/views/segmentstore/scatter/AbstractSegmentStoreScatterChartViewer.java
+++ /dev/null
@@ -1,160 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2017 Ericsson
- *
- * All rights reserved. This program and the accompanying materials are
- * made available under the terms of the Eclipse Public License 2.0 which
- * accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-
-package org.eclipse.tracecompass.analysis.timing.ui.views.segmentstore.scatter;
-
-import java.text.Format;
-
-import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.jdt.annotation.Nullable;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.tracecompass.common.core.format.SubSecondTimeWithUnitFormat;
-import org.eclipse.tracecompass.internal.analysis.timing.core.segmentstore.SegmentStoreScatterDataProvider;
-import org.eclipse.tracecompass.internal.analysis.timing.ui.views.segmentstore.scatter.SegmentStoreScatterGraphTooltipProvider;
-import org.eclipse.tracecompass.tmf.core.dataprovider.DataProviderManager;
-import org.eclipse.tracecompass.tmf.core.model.OutputElementStyle;
-import org.eclipse.tracecompass.tmf.core.model.xy.ITmfTreeXYDataProvider;
-import org.eclipse.tracecompass.tmf.core.model.xy.ITmfXYDataProvider;
-import org.eclipse.tracecompass.tmf.core.presentation.IYAppearance;
-import org.eclipse.tracecompass.tmf.core.signal.TmfSignalHandler;
-import org.eclipse.tracecompass.tmf.core.signal.TmfTraceClosedSignal;
-import org.eclipse.tracecompass.tmf.core.signal.TmfTraceOpenedSignal;
-import org.eclipse.tracecompass.tmf.core.signal.TmfTraceSelectedSignal;
-import org.eclipse.tracecompass.tmf.core.timestamp.TmfTimeRange;
-import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
-import org.eclipse.tracecompass.tmf.core.trace.TmfTraceManager;
-import org.eclipse.tracecompass.tmf.ui.viewers.xycharts.linecharts.TmfFilteredXYChartViewer;
-import org.eclipse.tracecompass.tmf.ui.viewers.xycharts.linecharts.TmfXYChartSettings;
-
-/**
- * Displays the segment store provider data in a SWT scatter chart
- *
- * @author Yonni Chen
- * @since 2.1
- * @deprecated use {@link org.eclipse.tracecompass.analysis.timing.ui.views.segmentstore.scatter.AbstractSegmentStoreScatterChartViewer2}
- */
-@Deprecated
-public class AbstractSegmentStoreScatterChartViewer extends TmfFilteredXYChartViewer {
-
- private static final Format FORMAT =SubSecondTimeWithUnitFormat.getInstance();
- private static final int DEFAULT_SERIES_WIDTH = 1;
- private String fAnalysisId;
-
- /**
- * Constructor
- *
- * @param parent
- * parent composite
- * @param settings
- * See {@link TmfXYChartSettings} to know what it contains
- */
- public AbstractSegmentStoreScatterChartViewer(Composite parent, TmfXYChartSettings settings) {
- this(parent, settings, ""); //$NON-NLS-1$
- }
-
- /**
- * Constructor
- *
- * @param parent
- * parent composite
- * @param settings
- * See {@link TmfXYChartSettings} to know what it contains
- * @param analysisId
- * The ID of the analysis to show in this viewer
- * @since 3.0
- */
- public AbstractSegmentStoreScatterChartViewer(Composite parent, TmfXYChartSettings settings, String analysisId) {
- super(parent, settings, SegmentStoreScatterDataProvider.ID);
- fAnalysisId = analysisId;
- setTooltipProvider(new SegmentStoreScatterGraphTooltipProvider(this));
- getSwtChart().getLegend().setVisible(false);
- getSwtChart().getAxisSet().getYAxis(0).getTick().setFormat(FORMAT);
- }
-
- // ------------------------------------------------------------------------
- // Operations
- // ------------------------------------------------------------------------
-
- /**
- * Get the analysis ID to show in the viewer
- *
- * @return The analysis ID
- * @since 3.0
- */
- protected String getAnalysisId() {
- return fAnalysisId;
- }
-
- @Override
- protected @Nullable ITmfXYDataProvider initializeDataProvider(ITmfTrace trace) {
- String analysisId = getAnalysisId();
-
- if (analysisId.isEmpty()) {
- /* Should not happen anymore since legacy code,
- * that get the analysis ID of the segment store, is removed */
- return null;
- }
- return DataProviderManager.getInstance().getDataProvider(trace, SegmentStoreScatterDataProvider.ID + ':' + analysisId, ITmfTreeXYDataProvider.class);
- }
-
- // ------------------------------------------------------------------------
- // Signal handlers
- // ------------------------------------------------------------------------
-
- /**
- * @param signal
- * Signal received when a different trace is selected
- */
- @Override
- @TmfSignalHandler
- public void traceSelected(@Nullable TmfTraceSelectedSignal signal) {
- super.traceSelected(signal);
- if (getTrace() != null) {
- final TmfTimeRange timeRange = TmfTraceManager.getInstance().getCurrentTraceContext().getWindowRange();
- setWindowRange(timeRange.getStartTime().toNanos(), timeRange.getEndTime().toNanos());
- }
- }
-
- /**
- * @param signal
- * Signal received when trace is opened
- */
- @Override
- @TmfSignalHandler
- public void traceOpened(@Nullable TmfTraceOpenedSignal signal) {
- super.traceOpened(signal);
- if (getTrace() != null) {
- final TmfTimeRange timeRange = TmfTraceManager.getInstance().getCurrentTraceContext().getWindowRange();
- setWindowRange(timeRange.getStartTime().toNanos(), timeRange.getEndTime().toNanos());
- }
- }
-
- @Override
- public OutputElementStyle getSeriesStyle(@NonNull Long seriesId) {
- return getPresentationProvider().getSeriesStyle(seriesId, IYAppearance.Type.SCATTER, DEFAULT_SERIES_WIDTH);
- }
-
- /**
- * @param signal
- * Signal received when last opened trace is closed
- */
- @Override
- @TmfSignalHandler
- public void traceClosed(@Nullable TmfTraceClosedSignal signal) {
- super.traceClosed(signal);
-
- // Check if there is no more opened trace
- if (signal != null && TmfTraceManager.getInstance().getActiveTrace() == null) {
- clearContent();
- }
- refresh();
- }
-}
diff --git a/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/analysis/timing/ui/views/segmentstore/scatter/SegmentStoreScatterView.java b/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/analysis/timing/ui/views/segmentstore/scatter/SegmentStoreScatterView.java
deleted file mode 100644
index 452a7fd..0000000
--- a/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/analysis/timing/ui/views/segmentstore/scatter/SegmentStoreScatterView.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017 École Polytechnique de Montréal
- *
- * All rights reserved. This program and the accompanying materials are
- * made available under the terms of the Eclipse Public License 2.0 which
- * accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-
-package org.eclipse.tracecompass.analysis.timing.ui.views.segmentstore.scatter;
-
-import static org.eclipse.tracecompass.common.core.NonNullUtils.nullToEmptyString;
-
-import java.util.Objects;
-
-import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.jdt.annotation.Nullable;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.tracecompass.internal.analysis.timing.ui.views.segmentstore.scatter.Messages;
-import org.eclipse.tracecompass.tmf.ui.viewers.TmfViewer;
-import org.eclipse.tracecompass.tmf.ui.viewers.xycharts.TmfXYChartViewer;
-import org.eclipse.tracecompass.tmf.ui.viewers.xycharts.linecharts.TmfXYChartSettings;
-import org.eclipse.tracecompass.tmf.ui.views.TmfChartView;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.views.IViewDescriptor;
-
-/**
- * Scatter graph showing the segments' data in the form a scatter view.
- *
- * @author Geneviève Bastien
- * @since 3.0
- * {@link org.eclipse.tracecompass.analysis.timing.ui.views.segmentstore.scatter.SegmentStoreScatterView2}
- */
-@Deprecated
-public class SegmentStoreScatterView extends TmfChartView {
- /**
- * ID of this view
- */
- public static final String ID = "org.eclipse.tracecompass.analysis.timing.ui.segstore.scatter"; //$NON-NLS-1$
-
- /**
- * Constructor
- */
- public SegmentStoreScatterView() {
- super(ID);
- }
-
- @Override
- public void createPartControl(@Nullable Composite parent) {
- super.createPartControl(parent);
- // Set the title of the view from the actual view ID
- IViewDescriptor desc = PlatformUI.getWorkbench().getViewRegistry().find(getViewId());
- if (desc != null) {
- setPartName(desc.getLabel());
- }
- }
-
- @Override
- protected TmfXYChartViewer createChartViewer(@Nullable Composite parent) {
- String analysisId = String.valueOf(getViewSite().getSecondaryId());
- return new AbstractSegmentStoreScatterChartViewer(Objects.requireNonNull(parent),
- new TmfXYChartSettings(nullToEmptyString(Messages.SegmentStoreScatterGraphViewer_title), nullToEmptyString(Messages.SegmentStoreScatterGraphViewer_xAxis),
- nullToEmptyString(Messages.SegmentStoreScatterGraphViewer_yAxis), 1), analysisId);
- }
-
- @Override
- protected @NonNull TmfViewer createLeftChildViewer(@Nullable Composite parent) {
- String analysisId = String.valueOf(getViewSite().getSecondaryId());
- return new AbstractSegmentStoreScatterChartTreeViewer(Objects.requireNonNull(parent), analysisId);
- }
-
-}
diff --git a/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/internal/analysis/timing/ui/views/segmentstore/density/BaseMouseProvider.java b/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/internal/analysis/timing/ui/views/segmentstore/density/BaseMouseProvider.java
deleted file mode 100644
index a91cece..0000000
--- a/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/internal/analysis/timing/ui/views/segmentstore/density/BaseMouseProvider.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2015 Ericsson
- *
- * All rights reserved. This program and the accompanying materials are
- * made available under the terms of the Eclipse Public License 2.0 which
- * accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- **********************************************************************/
-
-package org.eclipse.tracecompass.internal.analysis.timing.ui.views.segmentstore.density;
-
-import org.eclipse.tracecompass.analysis.timing.ui.views.segmentstore.density.AbstractSegmentStoreDensityViewer;
-import org.swtchart.Chart;
-
-/**
- * Base class for any mouse provider such as tool tip, zoom and selection providers.
- *
- * @author Bernd Hufmann
- * @author Marc-Andre Laperle
- */
-@Deprecated
-public abstract class BaseMouseProvider {
-
- private AbstractSegmentStoreDensityViewer fDensityViewer;
-
- /**
- * Standard constructor.
- *
- * @param densityViewer
- * The parent density viewer
- */
- public BaseMouseProvider(AbstractSegmentStoreDensityViewer densityViewer) {
- fDensityViewer = densityViewer;
- }
-
- /**
- * Method to register the provider to the viewer.
- */
- protected abstract void register();
-
- /**
- * Method to deregister the provider from the viewer.
- */
- protected abstract void deregister();
-
- /**
- * @return the density viewer
- */
- public AbstractSegmentStoreDensityViewer getDensityViewer() {
- return fDensityViewer;
- }
-
- /**
- * Returns the SWT chart reference
- *
- * @return SWT chart reference.
- */
- protected Chart getChart() {
- return fDensityViewer.getControl();
- }
-
-}
\ No newline at end of file
diff --git a/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/internal/analysis/timing/ui/views/segmentstore/density/Messages.java b/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/internal/analysis/timing/ui/views/segmentstore/density/Messages.java
deleted file mode 100644
index d702ccf..0000000
--- a/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/internal/analysis/timing/ui/views/segmentstore/density/Messages.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2015 Ericsson
- *
- * All rights reserved. This program and the accompanying materials are
- * made available under the terms of the Eclipse Public License 2.0 which
- * accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-
-package org.eclipse.tracecompass.internal.analysis.timing.ui.views.segmentstore.density;
-
-import org.eclipse.osgi.util.NLS;
-
-/**
- * @author Marc-Andre Laperle
- */
-@Deprecated
-public class Messages extends NLS {
- private static final String BUNDLE_NAME = "org.eclipse.tracecompass.internal.analysis.timing.ui.views.segmentstore.density.messages"; //$NON-NLS-1$
-
- /**
- * Tooltip count message
- */
- public static String SimpleTooltipProvider_count;
-
- /**
- * Tooltip duration message
- */
- public static String SimpleTooltipProvider_duration;
-
- static {
- // initialize resource bundle
- NLS.initializeMessages(BUNDLE_NAME, Messages.class);
- }
-
- private Messages() {
- }
-}
diff --git a/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/internal/analysis/timing/ui/views/segmentstore/density/MouseDragZoomProvider.java b/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/internal/analysis/timing/ui/views/segmentstore/density/MouseDragZoomProvider.java
deleted file mode 100644
index aae7951..0000000
--- a/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/internal/analysis/timing/ui/views/segmentstore/density/MouseDragZoomProvider.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2015 Ericsson
- *
- * All rights reserved. This program and the accompanying materials are
- * made available under the terms of the Eclipse Public License 2.0 which
- * accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- **********************************************************************/
-
-package org.eclipse.tracecompass.internal.analysis.timing.ui.views.segmentstore.density;
-
-import org.eclipse.jdt.annotation.Nullable;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.events.MouseListener;
-import org.eclipse.swt.events.MouseMoveListener;
-import org.eclipse.swt.events.PaintEvent;
-import org.eclipse.tracecompass.analysis.timing.ui.views.segmentstore.density.AbstractSegmentStoreDensityViewer;
-import org.swtchart.IAxis;
-import org.swtchart.ICustomPaintListener;
-import org.swtchart.IPlotArea;
-import org.swtchart.Range;
-
-/**
- * Class for providing zooming based on mouse drag with right mouse button.
- * It also notifies the viewer about a change of range.
- *
- * @author Bernd Hufmann
- * @author Marc-Andre Laperle
- */
-@Deprecated
-public class MouseDragZoomProvider extends BaseMouseProvider implements MouseListener, MouseMoveListener, ICustomPaintListener {
-
- /** Cached start coordinate */
- private double fStartCoordinate;
- /** Cached end coordinate */
- private double fEndCoordinate;
- /** Flag indicating that an update is ongoing */
- private boolean fIsUpdate;
-
- /**
- * Default constructor
- *
- * @param densityViewer
- * the density viewer reference.
- */
- public MouseDragZoomProvider(AbstractSegmentStoreDensityViewer densityViewer) {
- super(densityViewer);
- register();
- }
-
- @Override
- public final void register() {
- getChart().getPlotArea().addMouseListener(this);
- getChart().getPlotArea().addMouseMoveListener(this);
- ((IPlotArea) getChart().getPlotArea()).addCustomPaintListener(this);
- }
-
- @Override
- public final void deregister() {
- if (!getChart().isDisposed()) {
- getChart().getPlotArea().removeMouseListener(this);
- getChart().getPlotArea().removeMouseMoveListener(this);
- ((IPlotArea) getChart().getPlotArea()).removeCustomPaintListener(this);
- }
- }
-
- @Override
- public void mouseDoubleClick(@Nullable MouseEvent e) {
- // Do nothing
- }
-
- @Override
- public void mouseDown(@Nullable MouseEvent e) {
- if (e != null && e.button == 3) {
- IAxis xAxis = getChart().getAxisSet().getXAxis(0);
- fStartCoordinate = xAxis.getDataCoordinate(e.x);
- fEndCoordinate = fStartCoordinate;
- fIsUpdate = true;
- }
- }
-
- @Override
- public void mouseUp(@Nullable MouseEvent e) {
- if ((fIsUpdate) && (fStartCoordinate != fEndCoordinate)) {
- if (fStartCoordinate > fEndCoordinate) {
- double tmp = fStartCoordinate;
- fStartCoordinate = fEndCoordinate;
- fEndCoordinate = tmp;
- }
- getDensityViewer().zoom(new Range(fStartCoordinate, fEndCoordinate));
- }
-
- if (fIsUpdate) {
- getChart().redraw();
- }
- fIsUpdate = false;
- }
-
- @Override
- public void mouseMove(@Nullable MouseEvent e) {
- if (e != null && fIsUpdate) {
- IAxis xAxis = getChart().getAxisSet().getXAxis(0);
- fEndCoordinate = xAxis.getDataCoordinate(e.x);
- getChart().redraw();
- }
- }
-
- @Override
- public void paintControl(@Nullable PaintEvent e) {
- if (e != null && fIsUpdate && (fStartCoordinate != fEndCoordinate)) {
- IAxis xAxis = getChart().getAxisSet().getXAxis(0);
- int startX = xAxis.getPixelCoordinate(fStartCoordinate);
- int endX = xAxis.getPixelCoordinate(fEndCoordinate);
- int prevAlpha = e.gc.getAlpha();
- e.gc.setAlpha(64);
- e.gc.setBackground(e.gc.getDevice().getSystemColor(SWT.COLOR_WIDGET_BACKGROUND));
- if (fStartCoordinate < fEndCoordinate) {
- e.gc.fillRectangle(startX, 0, endX - startX, e.height);
- } else {
- e.gc.fillRectangle(endX, 0, startX - endX, e.height);
- }
- e.gc.setAlpha(prevAlpha);
- e.gc.drawLine(startX, 0, startX, e.height);
- e.gc.drawLine(endX, 0, endX, e.height);
- }
- }
-
- @Override
- public boolean drawBehindSeries() {
- return false;
- }
-}
\ No newline at end of file
diff --git a/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/internal/analysis/timing/ui/views/segmentstore/density/MouseSelectionProvider.java b/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/internal/analysis/timing/ui/views/segmentstore/density/MouseSelectionProvider.java
deleted file mode 100644
index 2f54cf5..0000000
--- a/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/internal/analysis/timing/ui/views/segmentstore/density/MouseSelectionProvider.java
+++ /dev/null
@@ -1,179 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2015 Ericsson
- *
- * All rights reserved. This program and the accompanying materials are
- * made available under the terms of the Eclipse Public License 2.0 which
- * accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- **********************************************************************/
-
-package org.eclipse.tracecompass.internal.analysis.timing.ui.views.segmentstore.density;
-
-import org.eclipse.jdt.annotation.Nullable;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.events.MouseListener;
-import org.eclipse.swt.events.MouseMoveListener;
-import org.eclipse.swt.events.PaintEvent;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.tracecompass.analysis.timing.ui.views.segmentstore.density.AbstractSegmentStoreDensityView;
-import org.eclipse.tracecompass.analysis.timing.ui.views.segmentstore.density.AbstractSegmentStoreDensityViewer;
-import org.swtchart.IAxis;
-import org.swtchart.ICustomPaintListener;
-import org.swtchart.IPlotArea;
-import org.swtchart.Range;
-
-/**
- * Class for providing selection with the left mouse button. It also notifies
- * the viewer about a change of selection.
- *
- * @author Bernd Hufmann
- * @author Marc-Andre Laperle
- */
-@Deprecated
-public class MouseSelectionProvider extends BaseMouseProvider implements MouseListener, MouseMoveListener, ICustomPaintListener {
-
- /** Cached start coordinate */
- private double fStartCoordinate;
- /** Cached end coordinate */
- private double fEndCoordinate;
- /** Flag indicating that an update is ongoing */
- private boolean fIsUpdate;
- /** Flag indicating that the begin marker is dragged */
- private boolean fDragBeginMarker;
-
- /**
- * Constructor for a mouse selection provider.
- *
- * @param densityViewer
- * The parent density viewer
- */
- public MouseSelectionProvider(AbstractSegmentStoreDensityViewer densityViewer) {
- super(densityViewer);
- register();
- }
-
- @Override
- public final void register() {
- getChart().getPlotArea().addMouseListener(this);
- getChart().getPlotArea().addMouseMoveListener(this);
- ((IPlotArea) getChart().getPlotArea()).addCustomPaintListener(this);
- }
-
- @Override
- public final void deregister() {
- if (!getChart().isDisposed()) {
- getChart().getPlotArea().removeMouseListener(this);
- getChart().getPlotArea().removeMouseMoveListener(this);
- ((IPlotArea) getChart().getPlotArea()).removeCustomPaintListener(this);
- }
- }
-
- @Override
- public void mouseDoubleClick(@Nullable MouseEvent e) {
- // Do nothing
- }
-
- @Override
- public void mouseDown(@Nullable MouseEvent e) {
- if (e != null && (e.button == 1)) {
- fDragBeginMarker = false;
- if (((e.stateMask & SWT.SHIFT) != SWT.SHIFT) || (fEndCoordinate == fStartCoordinate)) {
- IAxis xAxis = getChart().getAxisSet().getXAxis(0);
- fStartCoordinate = xAxis.getDataCoordinate(e.x);
- fEndCoordinate = fStartCoordinate;
- } else {
- double selectionBegin = fStartCoordinate;
- double selectionEnd = fEndCoordinate;
- IAxis xAxis = getChart().getAxisSet().getXAxis(0);
- double time = xAxis.getDataCoordinate(e.x);
- if (Math.abs(time - selectionBegin) < Math.abs(time - selectionEnd)) {
- fDragBeginMarker = true;
- fStartCoordinate = time;
- fEndCoordinate = selectionEnd;
- } else {
- fStartCoordinate = selectionBegin;
- fEndCoordinate = time;
- }
- }
- fIsUpdate = true;
- }
- }
-
- @Override
- public void mouseUp(@Nullable MouseEvent e) {
- if ((fIsUpdate)) {
- if (fStartCoordinate > fEndCoordinate) {
- double tmp = fStartCoordinate;
- fStartCoordinate = fEndCoordinate;
- fEndCoordinate = tmp;
- }
- if (!isEmptySelection()) {
- getDensityViewer().select(new Range(AbstractSegmentStoreDensityView.DEFAULT_RANGE.getFirst(), AbstractSegmentStoreDensityView.DEFAULT_RANGE.getSecond()));
- } else {
- getDensityViewer().select(new Range(fStartCoordinate, fEndCoordinate));
- }
- fIsUpdate = false;
- getChart().redraw();
- }
- }
-
- @Override
- public void mouseMove(@Nullable MouseEvent e) {
- if (e != null && fIsUpdate) {
- IAxis xAxis = getChart().getAxisSet().getXAxis(0);
- if (fDragBeginMarker) {
- fStartCoordinate = xAxis.getDataCoordinate(e.x);
- } else {
- fEndCoordinate = xAxis.getDataCoordinate(e.x);
- }
- getChart().redraw();
- }
- }
-
- private boolean isEmptySelection() {
- IAxis xAxis = getChart().getAxisSet().getXAxis(0);
- int begin = xAxis.getPixelCoordinate(fStartCoordinate);
- int end = xAxis.getPixelCoordinate(fEndCoordinate);
-
- return Math.abs(end - begin) > 2;
- }
-
- @Override
- public void paintControl(@Nullable PaintEvent e) {
- if (e == null || !isEmptySelection()) {
- return;
- }
-
- Display display = getChart().getDisplay();
-
- IAxis xAxis = getChart().getAxisSet().getXAxis(0);
- e.gc.setBackground(display.getSystemColor(SWT.COLOR_BLUE));
- e.gc.setForeground(display.getSystemColor(SWT.COLOR_BLUE));
- e.gc.setLineStyle(SWT.LINE_SOLID);
- int begin = xAxis.getPixelCoordinate(fStartCoordinate);
- e.gc.drawLine(begin, 0, begin, e.height);
-
- int end = xAxis.getPixelCoordinate(fEndCoordinate);
- e.gc.drawLine(end, 0, end, e.height);
-
- e.gc.setAlpha(64);
- if (Math.abs(fEndCoordinate - fStartCoordinate) > 1) {
- e.gc.setBackground(display.getSystemColor(SWT.COLOR_WIDGET_BACKGROUND));
- int beginX = xAxis.getPixelCoordinate(fStartCoordinate);
- int endX = xAxis.getPixelCoordinate(fEndCoordinate);
- if (fEndCoordinate > fStartCoordinate) {
- e.gc.fillRectangle(beginX + 1, 0, endX - beginX - 1, e.height);
- } else {
- e.gc.fillRectangle(endX + 1, 0, beginX - endX - 1, e.height);
- }
- }
- }
-
- @Override
- public boolean drawBehindSeries() {
- return false;
- }
-}
diff --git a/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/internal/analysis/timing/ui/views/segmentstore/density/SimpleTooltipProvider.java b/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/internal/analysis/timing/ui/views/segmentstore/density/SimpleTooltipProvider.java
deleted file mode 100644
index 510061b..0000000
--- a/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/internal/analysis/timing/ui/views/segmentstore/density/SimpleTooltipProvider.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2015, 2016 Ericsson
- *
- * All rights reserved. This program and the accompanying materials are
- * made available under the terms of the Eclipse Public License 2.0 which
- * accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- **********************************************************************/
-package org.eclipse.tracecompass.internal.analysis.timing.ui.views.segmentstore.density;
-
-import java.text.Format;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.RGB;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.tracecompass.analysis.timing.ui.views.segmentstore.density.AbstractSegmentStoreDensityViewer;
-import org.eclipse.tracecompass.common.core.format.SubSecondTimeWithUnitFormat;
-import org.eclipse.tracecompass.tmf.core.presentation.RGBAColor;
-import org.eclipse.tracecompass.tmf.ui.viewers.TmfAbstractToolTipHandler;
-import org.swtchart.Chart;
-import org.swtchart.IAxis;
-import org.swtchart.ISeries;
-
-/**
- * Tool tip provider for density viewer. It displays the x and y value of the
- * current mouse position.
- *
- * @author Bernd Hufmann
- * @author Marc-Andre Laperle
- */
-@Deprecated
-public class SimpleTooltipProvider extends BaseMouseProvider {
-
- private static final Format FORMAT = SubSecondTimeWithUnitFormat.getInstance();
- private static final String HTML_COLOR_TOOLTIP = "<span style=\"color:%s;\">%s</span>"; //$NON-NLS-1$
-
- private final class DensityToolTipHandler extends TmfAbstractToolTipHandler {
-
- @Override
- public void fill(Control control, MouseEvent event, Point pt) {
- Chart chart = getChart();
- ISeries[] seriesSet = chart.getSeriesSet().getSeries();
- if (seriesSet.length != 0) {
-
- if (event == null || chart.getAxisSet().getXAxes().length == 0 || chart.getAxisSet().getYAxes().length == 0 || seriesSet.length == 0) {
- return;
- }
- chart.getPlotArea().setToolTipText(null);
- long x1 = -1;
- long x2 = -1;
- List<String> names = new ArrayList<>();
- List<Long> yValues = new ArrayList<>();
- List<RGB> colors = new ArrayList<>();
- for (ISeries ySeriesProvider : seriesSet) {
- double[] xValues = ySeriesProvider.getXSeries();
- if (xValues.length < 2) {
- continue;
- }
- double delta = xValues[1] - xValues[0];
- IAxis xAxis = chart.getAxisSet().getXAxis(0);
- double coords = xAxis.getDataCoordinate(event.x);
- int index = Arrays.binarySearch(xValues, coords);
- if (index < 0) {
- index = -index - 2;
- }
- double[] ySeries = ySeriesProvider.getYSeries();
- long y = Math.round(ySeries[index]);
- if (y > 0) {
- x1 = (long) xValues[index];
- x2 = (long) (x1 + delta);
- String id = ySeriesProvider.getId();
- colors.add(getDensityViewer().getColorForItem(id));
- names.add(id);
- yValues.add(y);
- }
- }
- if (!names.isEmpty()) {
- addItem(Messages.SimpleTooltipProvider_duration, FORMAT.format(x1) + '-' + FORMAT.format(x2));
- if (seriesSet.length == 1) {
- // No Color if there's only one
- addItem(null, ToolTipString.fromString(String.valueOf(Messages.SimpleTooltipProvider_count)), ToolTipString.fromDecimal(yValues.get(0)));
- } else {
- for (int i = 0; i < names.size(); i++) {
- String id = names.get(i);
- RGB color = getDensityViewer().getColorForItem(id);
- addItem(null, ToolTipString.fromHtml(String.format(HTML_COLOR_TOOLTIP, new RGBAColor(color.red, color.green, color.blue).toString(), id)), ToolTipString.fromDecimal(yValues.get(i)));
- }
- }
-
- }
- }
- }
- }
-
- private DensityToolTipHandler fToolTipHandler = new DensityToolTipHandler();
-
- /**
- * Constructor for a tool tip provider.
- *
- * @param densityViewer
- * The parent density viewer
- */
- public SimpleTooltipProvider(AbstractSegmentStoreDensityViewer densityViewer) {
- super(densityViewer);
- register();
- }
-
- @Override
- public void register() {
- fToolTipHandler.activateHoverHelp(getChart().getPlotArea());
- }
-
- @Override
- public void deregister() {
- if (!getDensityViewer().getControl().isDisposed()) {
- fToolTipHandler.deactivateHoverHelp(getChart().getPlotArea());
- }
- }
-}
\ No newline at end of file
diff --git a/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/internal/analysis/timing/ui/views/segmentstore/density/messages.properties b/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/internal/analysis/timing/ui/views/segmentstore/density/messages.properties
deleted file mode 100644
index 8152bb4..0000000
--- a/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/internal/analysis/timing/ui/views/segmentstore/density/messages.properties
+++ /dev/null
@@ -1,12 +0,0 @@
-###############################################################################
-# Copyright (c) 2015 Ericsson
-#
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-###############################################################################
-SimpleTooltipProvider_count=Count
-SimpleTooltipProvider_duration=Duration
diff --git a/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/internal/analysis/timing/ui/views/segmentstore/scatter/Messages.java b/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/internal/analysis/timing/ui/views/segmentstore/scatter/Messages.java
deleted file mode 100644
index 82e0e77..0000000
--- a/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/internal/analysis/timing/ui/views/segmentstore/scatter/Messages.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 Ericsson
- *
- * All rights reserved. This program and the accompanying materials are
- * made available under the terms of the Eclipse Public License 2.0 which
- * accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-
-package org.eclipse.tracecompass.internal.analysis.timing.ui.views.segmentstore.scatter;
-
-import org.eclipse.jdt.annotation.NonNullByDefault;
-import org.eclipse.osgi.util.NLS;
-
-/**
- * @author France Bernd Hufmann
- */
-@Deprecated
-@NonNullByDefault({})
-public class Messages extends NLS {
- private static final String BUNDLE_NAME = "org.eclipse.tracecompass.internal.analysis.timing.ui.views.segmentstore.scatter.messages"; //$NON-NLS-1$
-
- /**
- * Category
- */
- public static String SegmentStoreScatterGraphTooltipProvider_category;
-
- /**
- * Title of the scatter graph
- */
- public static String SegmentStoreScatterGraphViewer_title;
-
- /**
- * Title of the x axis of the scatter graph
- */
- public static String SegmentStoreScatterGraphViewer_xAxis;
-
- /**
- * Title of the y axis of the scatter graph
- */
- public static String SegmentStoreScatterGraphViewer_yAxis;
-
- /**
- * Legend
- */
- public static String SegmentStoreScatterGraphViewer_legend;
-
- /**
- * Name of the compacting job
- */
- public static String SegmentStoreScatterGraphViewer_compactTitle;
-
- static {
- // initialize resource bundle
- NLS.initializeMessages(BUNDLE_NAME, Messages.class);
- }
-
- private Messages() {
- }
-}
diff --git a/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/internal/analysis/timing/ui/views/segmentstore/scatter/SegmentStoreScatterGraphTooltipProvider.java b/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/internal/analysis/timing/ui/views/segmentstore/scatter/SegmentStoreScatterGraphTooltipProvider.java
deleted file mode 100644
index 98da82c..0000000
--- a/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/internal/analysis/timing/ui/views/segmentstore/scatter/SegmentStoreScatterGraphTooltipProvider.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2015, 2016 Ericsson
- *
- * All rights reserved. This program and the accompanying materials are
- * made available under the terms of the Eclipse Public License 2.0 which
- * accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Bernd Hufmann - Initial API and implementation
- **********************************************************************/
-package org.eclipse.tracecompass.internal.analysis.timing.ui.views.segmentstore.scatter;
-
-import static org.eclipse.tracecompass.common.core.NonNullUtils.checkNotNull;
-
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.jdt.annotation.Nullable;
-import org.eclipse.tracecompass.tmf.core.timestamp.ITmfTimestamp;
-import org.eclipse.tracecompass.tmf.core.timestamp.TmfTimestamp;
-import org.eclipse.tracecompass.tmf.ui.viewers.xycharts.ITmfChartTimeProvider;
-import org.eclipse.tracecompass.tmf.ui.viewers.xycharts.TmfClosestDataPointTooltipProvider;
-import org.eclipse.tracecompass.tmf.ui.views.FormatTimeUtils;
-import org.eclipse.tracecompass.tmf.ui.views.FormatTimeUtils.Resolution;
-import org.eclipse.tracecompass.tmf.ui.views.FormatTimeUtils.TimeFormat;
-import org.swtchart.ISeries;
-
-/**
- * Tooltip provider for durations scatter charts. It displays the y value of
- * position x as well as it highlights the closest data point.
- *
- * @author Bernd Hufmann
- */
-@Deprecated
-public class SegmentStoreScatterGraphTooltipProvider extends TmfClosestDataPointTooltipProvider{
-
- // ------------------------------------------------------------------------
- // Constructors
- // ------------------------------------------------------------------------
- /**
- * Constructor for the segment store scatter chart tooltip provider.
- *
- * @param tmfChartViewer
- * - the parent chart viewer
- */
- public SegmentStoreScatterGraphTooltipProvider(ITmfChartTimeProvider tmfChartViewer) {
- super(tmfChartViewer);
- }
-
- // ------------------------------------------------------------------------
- // TmfClosestDataPointTooltipProvider
- // ------------------------------------------------------------------------
- @Override
- protected @Nullable Map<String, Map<String, Object>> createToolTipMap(Parameter param) {
- ISeries[] series = getChart().getSeriesSet().getSeries();
- int seriesIndex = param.getSeriesIndex();
- int dataIndex = param.getDataIndex();
- if ((series != null) && (seriesIndex < series.length)) {
- Map<String, Object> segMap = new HashMap<>();
- ISeries serie = series[seriesIndex];
- double[] xS = serie.getXSeries();
- double[] yS = serie.getYSeries();
- if ((xS != null) && (yS != null) && (dataIndex < xS.length) && (dataIndex < yS.length)) {
- ITmfTimestamp segTs = TmfTimestamp.fromNanos((long) xS[dataIndex] + getChartViewer().getTimeOffset());
- long segDuration = (long) yS[dataIndex];
- segMap.put(checkNotNull(Messages.SegmentStoreScatterGraphViewer_xAxis), segTs);
- segMap.put(checkNotNull(Messages.SegmentStoreScatterGraphViewer_yAxis), String.valueOf(FormatTimeUtils.formatDelta(segDuration, TimeFormat.RELATIVE, Resolution.NANOSEC)));
- return Collections.singletonMap(checkNotNull(Messages.SegmentStoreScatterGraphTooltipProvider_category), segMap);
- }
- }
- return null;
- }
-
-}
\ No newline at end of file
diff --git a/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/internal/analysis/timing/ui/views/segmentstore/scatter/messages.properties b/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/internal/analysis/timing/ui/views/segmentstore/scatter/messages.properties
deleted file mode 100644
index 8e496aa..0000000
--- a/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/internal/analysis/timing/ui/views/segmentstore/scatter/messages.properties
+++ /dev/null
@@ -1,16 +0,0 @@
-###############################################################################
-# Copyright (c) 2016 Ericsson
-#
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-###############################################################################
-SegmentStoreScatterGraphTooltipProvider_category=Segment
-SegmentStoreScatterGraphViewer_title=Latency vs Time
-SegmentStoreScatterGraphViewer_xAxis=Time
-SegmentStoreScatterGraphViewer_yAxis=Latency
-SegmentStoreScatterGraphViewer_legend=Duration
-SegmentStoreScatterGraphViewer_compactTitle=Compacting Duration Query
diff --git a/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/internal/analysis/timing/ui/views/segmentstore/scatter/package-info.java b/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/internal/analysis/timing/ui/views/segmentstore/scatter/package-info.java
deleted file mode 100644
index d6d93d4..0000000
--- a/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/internal/analysis/timing/ui/views/segmentstore/scatter/package-info.java
+++ /dev/null
@@ -1,13 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 Ericsson
- *
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-
-@org.eclipse.jdt.annotation.NonNullByDefault
-package org.eclipse.tracecompass.internal.analysis.timing.ui.views.segmentstore.scatter;
diff --git a/doc/org.eclipse.tracecompass.doc.dev/doc/Developer-Guide.mediawiki b/doc/org.eclipse.tracecompass.doc.dev/doc/Developer-Guide.mediawiki
index fc39a0f..18eb8b7 100644
--- a/doc/org.eclipse.tracecompass.doc.dev/doc/Developer-Guide.mediawiki
+++ b/doc/org.eclipse.tracecompass.doc.dev/doc/Developer-Guide.mediawiki
@@ -364,7 +364,7 @@
[[Image:images/SelectManifest.png]]<br>
Change to the Dependencies tab and select '''Add...''' of the ''Required Plug-ins'' section. A new dialog box will open. Next find plug-in ''org.eclipse.tracecompass.tmf.core'' and press '''OK'''<br>
-Following the same steps, add ''org.eclipse.tracecompass.tmf.ui'' and ''org.swtchart''.<br>
+Following the same steps, add ''org.eclipse.tracecompass.tmf.ui'' and ''org.exlipse.swtchart''.<br>
[[Image:images/AddDependencyTmfUi.png]]<br>
Change to the Extensions tab and select '''Add...''' of the ''All Extension'' section. A new dialog box will open. Find the view extension ''org.eclipse.ui.views'' and press '''Finish'''.<br>
diff --git a/lttng/org.eclipse.tracecompass.lttng2.kernel.ui.swtbot.tests/META-INF/MANIFEST.MF b/lttng/org.eclipse.tracecompass.lttng2.kernel.ui.swtbot.tests/META-INF/MANIFEST.MF
index 5656fef..8ea5e63 100644
--- a/lttng/org.eclipse.tracecompass.lttng2.kernel.ui.swtbot.tests/META-INF/MANIFEST.MF
+++ b/lttng/org.eclipse.tracecompass.lttng2.kernel.ui.swtbot.tests/META-INF/MANIFEST.MF
@@ -40,6 +40,5 @@
com.google.gson,
org.apache.commons.io,
org.eclipse.swtchart,
- org.eclipse.tracecompass.testtraces.ctf,
- org.swtchart
+ org.eclipse.tracecompass.testtraces.ctf
Automatic-Module-Name: org.eclipse.tracecompass.lttng2.kernel.ui.swtbot.tests
diff --git a/lttng/org.eclipse.tracecompass.lttng2.ust.ui.swtbot.tests/META-INF/MANIFEST.MF b/lttng/org.eclipse.tracecompass.lttng2.ust.ui.swtbot.tests/META-INF/MANIFEST.MF
index 1a37374..56a631d 100644
--- a/lttng/org.eclipse.tracecompass.lttng2.ust.ui.swtbot.tests/META-INF/MANIFEST.MF
+++ b/lttng/org.eclipse.tracecompass.lttng2.ust.ui.swtbot.tests/META-INF/MANIFEST.MF
@@ -25,7 +25,6 @@
org.junit,
org.eclipse.tracecompass.lttng2.ust.core,
org.eclipse.tracecompass.lttng2.ust.ui,
- org.swtchart,
org.eclipse.tracecompass.tmf.ui.tests,
org.eclipse.tracecompass.ctf.core.tests,
org.eclipse.tracecompass.analysis.profiling.ui,
diff --git a/lttng/org.eclipse.tracecompass.lttng2.ust.ui/META-INF/MANIFEST.MF b/lttng/org.eclipse.tracecompass.lttng2.ust.ui/META-INF/MANIFEST.MF
index 5a82df3..1ba76e1 100644
--- a/lttng/org.eclipse.tracecompass.lttng2.ust.ui/META-INF/MANIFEST.MF
+++ b/lttng/org.eclipse.tracecompass.lttng2.ust.ui/META-INF/MANIFEST.MF
@@ -28,6 +28,5 @@
com.google.common.collect,
org.eclipse.tracecompass.analysis.os.linux.core.kernelmemoryusage,
org.eclipse.tracecompass.analysis.os.linux.core.memory,
- org.eclipse.tracecompass.internal.analysis.os.linux.ui.views.memory,
- org.swtchart
+ org.eclipse.tracecompass.internal.analysis.os.linux.ui.views.memory
Automatic-Module-Name: org.eclipse.tracecompass.lttng2.ust.ui
diff --git a/rcp/org.eclipse.tracecompass.rcp/feature.xml b/rcp/org.eclipse.tracecompass.rcp/feature.xml
index aba948f..0414530 100644
--- a/rcp/org.eclipse.tracecompass.rcp/feature.xml
+++ b/rcp/org.eclipse.tracecompass.rcp/feature.xml
@@ -79,13 +79,6 @@
unpack="false"/>
<plugin
- id="org.swtchart"
- download-size="0"
- install-size="0"
- version="0.0.0"
- unpack="false"/>
-
- <plugin
id="org.eclipse.swtchart"
download-size="0"
install-size="0"
diff --git a/rcp/org.eclipse.tracecompass.rcp/pom.xml b/rcp/org.eclipse.tracecompass.rcp/pom.xml
index 3aad573..88787d5 100644
--- a/rcp/org.eclipse.tracecompass.rcp/pom.xml
+++ b/rcp/org.eclipse.tracecompass.rcp/pom.xml
@@ -85,7 +85,6 @@
<plugin id="org.json"/>
<plugin id="org.sat4j.core"/>
<plugin id="org.sat4j.pb"/>
- <plugin id="org.swtchart"/>
<plugin id="com.google.gson"/>
<plugin id="com.google.guava"/>
<plugin id="org.apache.commons.io"/>
diff --git a/releng/org.eclipse.tracecompass.releng-site/category.xml b/releng/org.eclipse.tracecompass.releng-site/category.xml
index 7d008f5..8c2c820 100644
--- a/releng/org.eclipse.tracecompass.releng-site/category.xml
+++ b/releng/org.eclipse.tracecompass.releng-site/category.xml
@@ -41,7 +41,7 @@
<bundle id="org.apache.commons.compress"/>
<bundle id="org.apache.commons.lang3"/>
<bundle id="org.apache.commons.io"/>
- <bundle id="org.swtchart"/>
+ <bundle id="org.eclipse.swtchart"/>
<bundle id="com.google.guava"/>
<bundle id="org.json"/>
<category-def name="Trace Compass" label="Trace Compass Main Features"/>
diff --git a/releng/org.eclipse.tracecompass.target/tracecompass-e4.10.target b/releng/org.eclipse.tracecompass.target/tracecompass-e4.10.target
index 3e57f82..08180e3 100644
--- a/releng/org.eclipse.tracecompass.target/tracecompass-e4.10.target
+++ b/releng/org.eclipse.tracecompass.target/tracecompass-e4.10.target
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<?pde version="3.8"?><target name="tracecompass-e4.10" sequenceNumber="14">
+<?pde version="3.8"?><target name="tracecompass-e4.10" sequenceNumber="15">
<locations>
<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
<unit id="org.eclipse.cdt.gnu.dsf.feature.group" version="0.0.0"/>
@@ -33,8 +33,6 @@
<unit id="org.apache.commons.io" version="0.0.0"/>
<unit id="org.apache.commons.lang" version="0.0.0"/>
<unit id="org.apache.commons.lang3" version="0.0.0"/>
-<unit id="org.swtchart" version="0.10.0.v201605200358"/>
-<unit id="org.swtchart.source" version="0.10.0.v201605200358"/>
<unit id="com.google.guava" version="21.0.0.v20170206-1425"/>
<unit id="org.json" version="0.0.0"/>
<unit id="org.apache.derby" version="0.0.0"/>
diff --git a/releng/org.eclipse.tracecompass.target/tracecompass-e4.11.target b/releng/org.eclipse.tracecompass.target/tracecompass-e4.11.target
index 8192754..cfc1aa5 100644
--- a/releng/org.eclipse.tracecompass.target/tracecompass-e4.11.target
+++ b/releng/org.eclipse.tracecompass.target/tracecompass-e4.11.target
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?><?pde version="3.8"?><target name="tracecompass-e4.11" sequenceNumber="14">
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><?pde version="3.8"?><target name="tracecompass-e4.11" sequenceNumber="15">
<locations>
<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
<unit id="org.eclipse.cdt.gnu.dsf.feature.group" version="0.0.0"/>
@@ -32,8 +32,6 @@
<unit id="org.apache.commons.io" version="0.0.0"/>
<unit id="org.apache.commons.lang" version="0.0.0"/>
<unit id="org.apache.commons.lang3" version="0.0.0"/>
-<unit id="org.swtchart" version="0.10.0.v201605200358"/>
-<unit id="org.swtchart.source" version="0.10.0.v201605200358"/>
<unit id="com.google.guava" version="21.0.0.v20170206-1425"/>
<unit id="org.json" version="0.0.0"/>
<unit id="org.apache.derby" version="0.0.0"/>
diff --git a/releng/org.eclipse.tracecompass.target/tracecompass-e4.12.target b/releng/org.eclipse.tracecompass.target/tracecompass-e4.12.target
index 1b048a7..79ae583 100644
--- a/releng/org.eclipse.tracecompass.target/tracecompass-e4.12.target
+++ b/releng/org.eclipse.tracecompass.target/tracecompass-e4.12.target
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?><?pde version="3.8"?><target name="tracecompass-e4.12" sequenceNumber="9">
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><?pde version="3.8"?><target name="tracecompass-e4.12" sequenceNumber="10">
<locations>
<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
<unit id="org.eclipse.cdt.gnu.dsf.feature.group" version="0.0.0"/>
@@ -32,8 +32,6 @@
<unit id="org.apache.commons.io" version="0.0.0"/>
<unit id="org.apache.commons.lang" version="0.0.0"/>
<unit id="org.apache.commons.lang3" version="0.0.0"/>
-<unit id="org.swtchart" version="0.10.0.v201605200358"/>
-<unit id="org.swtchart.source" version="0.10.0.v201605200358"/>
<unit id="com.google.guava" version="21.0.0.v20170206-1425"/>
<unit id="org.json" version="0.0.0"/>
<unit id="org.apache.derby" version="0.0.0"/>
diff --git a/releng/org.eclipse.tracecompass.target/tracecompass-e4.13.target b/releng/org.eclipse.tracecompass.target/tracecompass-e4.13.target
index c1dc455..091739b 100644
--- a/releng/org.eclipse.tracecompass.target/tracecompass-e4.13.target
+++ b/releng/org.eclipse.tracecompass.target/tracecompass-e4.13.target
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?><?pde version="3.8"?><target name="tracecompass-e4.13" sequenceNumber="9">
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><?pde version="3.8"?><target name="tracecompass-e4.14" sequenceNumber="9">
<locations>
<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
<unit id="org.eclipse.cdt.gnu.dsf.feature.group" version="0.0.0"/>
@@ -32,8 +32,6 @@
<unit id="org.apache.commons.io" version="0.0.0"/>
<unit id="org.apache.commons.lang" version="0.0.0"/>
<unit id="org.apache.commons.lang3" version="0.0.0"/>
-<unit id="org.swtchart" version="0.10.0.v201605200358"/>
-<unit id="org.swtchart.source" version="0.10.0.v201605200358"/>
<unit id="com.google.guava" version="27.1.0.v20190517-1946"/>
<unit id="org.json" version="0.0.0"/>
<unit id="org.apache.derby" version="0.0.0"/>
diff --git a/releng/org.eclipse.tracecompass.target/tracecompass-e4.14.target b/releng/org.eclipse.tracecompass.target/tracecompass-e4.14.target
index bb1e13c..dd88ea8 100644
--- a/releng/org.eclipse.tracecompass.target/tracecompass-e4.14.target
+++ b/releng/org.eclipse.tracecompass.target/tracecompass-e4.14.target
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?><?pde version="3.8"?><target name="tracecompass-e4.14" sequenceNumber="12">
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><?pde version="3.8"?><target name="tracecompass-e4.14" sequenceNumber="13">
<locations>
<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
<unit id="org.eclipse.cdt.gnu.dsf.feature.group" version="0.0.0"/>
@@ -32,8 +32,6 @@
<unit id="org.apache.commons.io" version="0.0.0"/>
<unit id="org.apache.commons.lang" version="0.0.0"/>
<unit id="org.apache.commons.lang3" version="0.0.0"/>
-<unit id="org.swtchart" version="0.10.0.v201605200358"/>
-<unit id="org.swtchart.source" version="0.10.0.v201605200358"/>
<unit id="com.google.guava" version="27.1.0.v20190517-1946"/>
<unit id="org.json" version="0.0.0"/>
<unit id="org.apache.derby" version="0.0.0"/>
diff --git a/releng/org.eclipse.tracecompass.target/tracecompass-e4.15.target b/releng/org.eclipse.tracecompass.target/tracecompass-e4.15.target
index fcfe4aa..3efad4b 100644
--- a/releng/org.eclipse.tracecompass.target/tracecompass-e4.15.target
+++ b/releng/org.eclipse.tracecompass.target/tracecompass-e4.15.target
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?><?pde version="3.8"?><target name="tracecompass-e4.15" sequenceNumber="10">
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><?pde version="3.8"?><target name="tracecompass-e4.15" sequenceNumber="11">
<locations>
<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
<unit id="org.eclipse.cdt.gnu.dsf.feature.group" version="0.0.0"/>
@@ -26,8 +26,6 @@
<unit id="org.apache.commons.io" version="0.0.0"/>
<unit id="org.apache.commons.lang" version="0.0.0"/>
<unit id="org.apache.commons.lang3" version="0.0.0"/>
-<unit id="org.swtchart" version="0.10.0.v201605200358"/>
-<unit id="org.swtchart.source" version="0.10.0.v201605200358"/>
<unit id="com.google.guava" version="27.1.0.v20190517-1946"/>
<unit id="org.json" version="0.0.0"/>
<unit id="org.apache.derby" version="0.0.0"/>
diff --git a/releng/org.eclipse.tracecompass.target/tracecompass-e4.16.target b/releng/org.eclipse.tracecompass.target/tracecompass-e4.16.target
index d7daa0a..e352631 100644
--- a/releng/org.eclipse.tracecompass.target/tracecompass-e4.16.target
+++ b/releng/org.eclipse.tracecompass.target/tracecompass-e4.16.target
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?><?pde version="3.8"?><target name="tracecompass-e4.16" sequenceNumber="7">
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><?pde version="3.8"?><target name="tracecompass-e4.16" sequenceNumber="8">
<locations>
<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
<unit id="org.eclipse.cdt.gnu.dsf.feature.group" version="0.0.0"/>
@@ -26,8 +26,6 @@
<unit id="org.apache.commons.io" version="0.0.0"/>
<unit id="org.apache.commons.lang" version="0.0.0"/>
<unit id="org.apache.commons.lang3" version="0.0.0"/>
-<unit id="org.swtchart" version="0.10.0.v201605200358"/>
-<unit id="org.swtchart.source" version="0.10.0.v201605200358"/>
<unit id="com.google.guava" version="27.1.0.v20190517-1946"/>
<unit id="org.json" version="0.0.0"/>
<unit id="org.apache.derby" version="0.0.0"/>
diff --git a/releng/org.eclipse.tracecompass.target/tracecompass-e4.17.target b/releng/org.eclipse.tracecompass.target/tracecompass-e4.17.target
index 97bdb22..ec9b964 100644
--- a/releng/org.eclipse.tracecompass.target/tracecompass-e4.17.target
+++ b/releng/org.eclipse.tracecompass.target/tracecompass-e4.17.target
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?><?pde version="3.8"?><target name="tracecompass-e4.17" sequenceNumber="9">
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><?pde version="3.8"?><target name="tracecompass-e4.17" sequenceNumber="10">
<locations>
<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
<unit id="org.eclipse.cdt.gnu.dsf.feature.group" version="0.0.0"/>
@@ -26,8 +26,6 @@
<unit id="org.apache.commons.io" version="0.0.0"/>
<unit id="org.apache.commons.lang" version="0.0.0"/>
<unit id="org.apache.commons.lang3" version="0.0.0"/>
-<unit id="org.swtchart" version="0.10.0.v201605200358"/>
-<unit id="org.swtchart.source" version="0.10.0.v201605200358"/>
<unit id="com.google.guava" version="27.1.0.v20190517-1946"/>
<unit id="org.json" version="0.0.0"/>
<unit id="org.apache.derby" version="0.0.0"/>
diff --git a/releng/org.eclipse.tracecompass.target/tracecompass-e4.18.target b/releng/org.eclipse.tracecompass.target/tracecompass-e4.18.target
index fa027cd..2f6405d 100644
--- a/releng/org.eclipse.tracecompass.target/tracecompass-e4.18.target
+++ b/releng/org.eclipse.tracecompass.target/tracecompass-e4.18.target
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?><?pde version="3.8"?><target name="tracecompass-e4.18" sequenceNumber="4">
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><?pde version="3.8"?><target name="tracecompass-e4.18" sequenceNumber="5">
<locations>
<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
<unit id="org.eclipse.cdt.gnu.dsf.feature.group" version="0.0.0"/>
@@ -26,8 +26,6 @@
<unit id="org.apache.commons.io" version="0.0.0"/>
<unit id="org.apache.commons.lang" version="0.0.0"/>
<unit id="org.apache.commons.lang3" version="0.0.0"/>
-<unit id="org.swtchart" version="0.10.0.v201605200358"/>
-<unit id="org.swtchart.source" version="0.10.0.v201605200358"/>
<unit id="com.google.guava" version="27.1.0.v20190517-1946"/>
<unit id="org.json" version="0.0.0"/>
<unit id="org.apache.derby" version="0.0.0"/>
diff --git a/releng/org.eclipse.tracecompass.target/tracecompass-e4.19.target b/releng/org.eclipse.tracecompass.target/tracecompass-e4.19.target
index 5e986e1..bb561db 100644
--- a/releng/org.eclipse.tracecompass.target/tracecompass-e4.19.target
+++ b/releng/org.eclipse.tracecompass.target/tracecompass-e4.19.target
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?><?pde version="3.8"?><target name="tracecompass-e4.19" sequenceNumber="6">
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><?pde version="3.8"?><target name="tracecompass-e4.19" sequenceNumber="7">
<locations>
<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
<unit id="org.eclipse.cdt.gnu.dsf.feature.group" version="0.0.0"/>
@@ -27,8 +27,6 @@
<unit id="org.apache.commons.lang" version="0.0.0"/>
<unit id="org.apache.commons.lang3" version="0.0.0"/>
<unit id="org.apache.xml.serializer" version="0.0.0"/>
-<unit id="org.swtchart" version="0.10.0.v201605200358"/>
-<unit id="org.swtchart.source" version="0.10.0.v201605200358"/>
<unit id="com.google.guava" version="27.1.0.v20190517-1946"/>
<unit id="org.json" version="0.0.0"/>
<unit id="org.apache.derby" version="0.0.0"/>
diff --git a/releng/org.eclipse.tracecompass.target/tracecompass-e4.8.target b/releng/org.eclipse.tracecompass.target/tracecompass-e4.8.target
index d899e1c..96b161a 100644
--- a/releng/org.eclipse.tracecompass.target/tracecompass-e4.8.target
+++ b/releng/org.eclipse.tracecompass.target/tracecompass-e4.8.target
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<?pde version="3.8"?><target name="tracecompass-e4.8" sequenceNumber="16">
+<?pde version="3.8"?><target name="tracecompass-e4.8" sequenceNumber="17">
<locations>
<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
<unit id="org.eclipse.cdt.gnu.dsf.feature.group" version="0.0.0"/>
@@ -33,8 +33,6 @@
<unit id="org.apache.commons.io" version="0.0.0"/>
<unit id="org.apache.commons.lang" version="0.0.0"/>
<unit id="org.apache.commons.lang3" version="0.0.0"/>
-<unit id="org.swtchart" version="0.10.0.v201605200358"/>
-<unit id="org.swtchart.source" version="0.10.0.v201605200358"/>
<unit id="com.google.guava" version="21.0.0.v20170206-1425"/>
<unit id="org.json" version="0.0.0"/>
<unit id="org.apache.derby" version="0.0.0"/>
diff --git a/releng/org.eclipse.tracecompass.target/tracecompass-e4.9.target b/releng/org.eclipse.tracecompass.target/tracecompass-e4.9.target
index 5f6034e..3285426 100644
--- a/releng/org.eclipse.tracecompass.target/tracecompass-e4.9.target
+++ b/releng/org.eclipse.tracecompass.target/tracecompass-e4.9.target
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<?pde version="3.8"?><target name="tracecompass-e4.9" sequenceNumber="15">
+<?pde version="3.8"?><target name="tracecompass-e4.9" sequenceNumber="16">
<locations>
<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
<unit id="org.eclipse.cdt.gnu.dsf.feature.group" version="0.0.0"/>
@@ -33,8 +33,6 @@
<unit id="org.apache.commons.io" version="0.0.0"/>
<unit id="org.apache.commons.lang" version="0.0.0"/>
<unit id="org.apache.commons.lang3" version="0.0.0"/>
-<unit id="org.swtchart" version="0.10.0.v201605200358"/>
-<unit id="org.swtchart.source" version="0.10.0.v201605200358"/>
<unit id="com.google.guava" version="21.0.0.v20170206-1425"/>
<unit id="org.json" version="0.0.0"/>
<unit id="org.apache.derby" version="0.0.0"/>
diff --git a/releng/org.eclipse.tracecompass.target/tracecompass-eStaging.target b/releng/org.eclipse.tracecompass.target/tracecompass-eStaging.target
index 635f075..c8ffe60 100644
--- a/releng/org.eclipse.tracecompass.target/tracecompass-eStaging.target
+++ b/releng/org.eclipse.tracecompass.target/tracecompass-eStaging.target
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?><?pde version="3.8"?><target name="tracecompass-eStaging" sequenceNumber="161">
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><?pde version="3.8"?><target name="tracecompass-eStaging" sequenceNumber="162">
<locations>
<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
<unit id="org.eclipse.cdt.gnu.dsf.feature.group" version="0.0.0"/>
@@ -27,8 +27,6 @@
<unit id="org.apache.commons.lang" version="0.0.0"/>
<unit id="org.apache.commons.lang3" version="0.0.0"/>
<unit id="org.apache.xml.serializer" version="0.0.0"/>
-<unit id="org.swtchart" version="0.10.0.v201605200358"/>
-<unit id="org.swtchart.source" version="0.10.0.v201605200358"/>
<unit id="com.google.guava" version="27.1.0.v20190517-1946"/>
<unit id="org.json" version="0.0.0"/>
<unit id="org.apache.derby" version="0.0.0"/>
diff --git a/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui.swtbot.tests/META-INF/MANIFEST.MF b/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui.swtbot.tests/META-INF/MANIFEST.MF
index d791286..167cf09 100644
--- a/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui.swtbot.tests/META-INF/MANIFEST.MF
+++ b/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui.swtbot.tests/META-INF/MANIFEST.MF
@@ -39,6 +39,5 @@
org.eclipse.tracecompass.tmf.ui.tests,
org.eclipse.jdt.annotation;bundle-version="[2.0.0,3.0.0)";resolution:=optional
Import-Package: org.apache.commons.io,
- org.eclipse.tracecompass.testtraces.ctf,
- org.swtchart
+ org.eclipse.tracecompass.testtraces.ctf
Automatic-Module-Name: org.eclipse.tracecompass.tmf.analysis.xml.ui.swtbot.tests
diff --git a/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/META-INF/MANIFEST.MF b/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/META-INF/MANIFEST.MF
index 434f74f..19befc0 100644
--- a/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/META-INF/MANIFEST.MF
+++ b/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/META-INF/MANIFEST.MF
@@ -18,7 +18,6 @@
org.eclipse.tracecompass.analysis.timing.core,
org.eclipse.tracecompass.analysis.timing.ui,
org.eclipse.tracecompass.segmentstore.core,
- org.swtchart,
org.eclipse.wst.xml.ui,
org.eclipse.ui.ide,
org.eclipse.core.filesystem,
diff --git a/tmf/org.eclipse.tracecompass.tmf.ui.swtbot.tests/META-INF/MANIFEST.MF b/tmf/org.eclipse.tracecompass.tmf.ui.swtbot.tests/META-INF/MANIFEST.MF
index 5e8af51..228667f 100644
--- a/tmf/org.eclipse.tracecompass.tmf.ui.swtbot.tests/META-INF/MANIFEST.MF
+++ b/tmf/org.eclipse.tracecompass.tmf.ui.swtbot.tests/META-INF/MANIFEST.MF
@@ -43,10 +43,8 @@
org.eclipse.test.performance,
org.eclipse.tracecompass.testtraces.ctf,
org.eclipse.tracecompass.tmf.ctf.core.tests.shared,
- org.eclipse.tracecompass.tmf.ctf.core.trace,
- org.swtchart
-Export-Package: org.eclipse.tracecompass.tmf.ui.swtbot.tests,
- org.eclipse.tracecompass.tmf.ui.swtbot.tests.parsers.custom;x-internal:=true,
+ org.eclipse.tracecompass.tmf.ctf.core.trace
+Export-Package: org.eclipse.tracecompass.tmf.ui.swtbot.tests.parsers.custom;x-internal:=true,
org.eclipse.tracecompass.tmf.ui.swtbot.tests.perf.views,
org.eclipse.tracecompass.tmf.ui.swtbot.tests.perspectives;x-internal:=true,
org.eclipse.tracecompass.tmf.ui.swtbot.tests.project,
diff --git a/tmf/org.eclipse.tracecompass.tmf.ui.swtbot.tests/shared/org/eclipse/tracecompass/tmf/ui/swtbot/tests/shared/ConditionHelpers.java b/tmf/org.eclipse.tracecompass.tmf.ui.swtbot.tests/shared/org/eclipse/tracecompass/tmf/ui/swtbot/tests/shared/ConditionHelpers.java
index 0c5561f..f39e92b 100644
--- a/tmf/org.eclipse.tracecompass.tmf.ui.swtbot.tests/shared/org/eclipse/tracecompass/tmf/ui/swtbot/tests/shared/ConditionHelpers.java
+++ b/tmf/org.eclipse.tracecompass.tmf.ui.swtbot.tests/shared/org/eclipse/tracecompass/tmf/ui/swtbot/tests/shared/ConditionHelpers.java
@@ -733,32 +733,6 @@
return new TimeGraphIsReadyCondition(view, selectionRange, visibleTime);
}
- @Deprecated
- private static class XYViewerIsReadyConditionLegacy extends DefaultCondition {
-
- private org.eclipse.tracecompass.tmf.ui.viewers.xycharts.TmfXYChartViewer fViewer;
- private String fFailureMessage;
-
- private XYViewerIsReadyConditionLegacy(org.eclipse.tracecompass.tmf.ui.viewers.xycharts.TmfXYChartViewer view) {
- fViewer = view;
- }
-
- @Override
- public boolean test() throws Exception {
-
- if (fViewer.isDirty()) {
- fFailureMessage = "Time graph is dirty";
- return false;
- }
- return true;
- }
-
- @Override
- public String getFailureMessage() {
- return fFailureMessage;
- }
- }
-
private static class XYViewerIsReadyCondition extends DefaultCondition {
private org.eclipse.tracecompass.tmf.ui.viewers.xychart.TmfXYChartViewer fViewer;
@@ -841,21 +815,6 @@
}
/**
- *
- * Wait until the XY chart viewer is ready. The XY chart viewer is
- * considered ready when it is not updating.
- *
- * @param viewer
- * the XY chart viewer
- * @return ICondition for verification
- * @deprecated @{link {@link ConditionHelpers#xyViewerIsReadyCondition(org.eclipse.tracecompass.tmf.ui.viewers.xychart.TmfXYChartViewer)}}
- */
- @Deprecated
- public static ICondition xyViewerIsReadyCondition(org.eclipse.tracecompass.tmf.ui.viewers.xycharts.TmfXYChartViewer viewer) {
- return new XYViewerIsReadyConditionLegacy(viewer);
- }
-
- /**
*
* Wait until the XY chart viewer is ready. The XY chart viewer is
* considered ready when it is not updating.
@@ -956,33 +915,6 @@
}
}
- private static class NumberOfSeriesLegacy extends DefaultCondition {
- private String fFailureMessage;
- private org.swtchart.Chart fChart;
- private final int fNumberOfSeries;
-
- public NumberOfSeriesLegacy(org.swtchart.Chart chart, int numberOfSeries) {
- fChart = chart;
- fNumberOfSeries = numberOfSeries;
- }
-
- @Override
- public boolean test() throws Exception {
- int length = fChart.getSeriesSet().getSeries().length;
- if (length != fNumberOfSeries){
- fFailureMessage = "Chart did not contain the expected number series. Actual " + length + ", expected " + fNumberOfSeries;
- return false;
- }
-
- return true;
- }
-
- @Override
- public String getFailureMessage() {
- return fFailureMessage;
- }
- }
-
private static class NumberOfSeries extends DefaultCondition {
private String fFailureMessage;
private Chart fChart;
@@ -1019,22 +951,6 @@
* the number of expected series
*
* @return ICondition for verification
- * @deprecated use {@link ConditionHelpers#numberOfSeries(Chart, int)}
- */
- @Deprecated
- public static ICondition numberOfSeries(org.swtchart.Chart chart, int numberOfSeries) {
- return new NumberOfSeriesLegacy(chart, numberOfSeries);
- }
-
- /**
- * Wait until the chart has the specified number of series.
- *
- * @param chart
- * the chart
- * @param numberOfSeries
- * the number of expected series
- *
- * @return ICondition for verification
*/
public static ICondition numberOfSeries(Chart chart, int numberOfSeries) {
return new NumberOfSeries(chart, numberOfSeries);
diff --git a/tmf/org.eclipse.tracecompass.tmf.ui.swtbot.tests/shared/org/eclipse/tracecompass/tmf/ui/swtbot/tests/shared/SWTBotSwtChart.java b/tmf/org.eclipse.tracecompass.tmf.ui.swtbot.tests/shared/org/eclipse/tracecompass/tmf/ui/swtbot/tests/shared/SWTBotSwtChart.java
deleted file mode 100644
index 20164cb..0000000
--- a/tmf/org.eclipse.tracecompass.tmf.ui.swtbot.tests/shared/org/eclipse/tracecompass/tmf/ui/swtbot/tests/shared/SWTBotSwtChart.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2019 Ericsson
- *
- * All rights reserved. This program and the accompanying materials are
- * made available under the terms of the Eclipse Public License 2.0 which
- * accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-
-package org.eclipse.tracecompass.tmf.ui.swtbot.tests.shared;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.atomic.AtomicReference;
-
-import org.eclipse.swtbot.swt.finder.SWTBot;
-import org.eclipse.swtbot.swt.finder.exceptions.WidgetNotFoundException;
-import org.eclipse.swtbot.swt.finder.matchers.WidgetOfType;
-import org.eclipse.swtbot.swt.finder.widgets.AbstractSWTBotControl;
-import org.swtchart.Chart;
-import org.swtchart.ISeries;
-
-/**
- * SWTBot class representing a SwtChart
- *
- * @author Bernd Hufmann
- * @deprecated use {link {@link SWTBotEclipseSwtChart}
- */
-@Deprecated
-public class SWTBotSwtChart extends AbstractSWTBotControl<Chart> {
-
- /**
- * Constructor
- *
- * @param w the widget
- * @throws WidgetNotFoundException if the widget is <code>null</code> or widget has been disposed.
- */
- public SWTBotSwtChart(Chart w) throws WidgetNotFoundException {
- super(w);
- }
-
- /**
- * Constructor
- *
- * @param bot
- * a SWTBot instance with which to find a SwtChart
- * @throws WidgetNotFoundException
- * if the widget is <code>null</code> or widget has been
- * disposed.
- */
- public SWTBotSwtChart(SWTBot bot) throws WidgetNotFoundException {
- super(bot.widget(WidgetOfType.widgetOfType(Chart.class)));
- }
-
- @Override
- public AbstractSWTBotControl<Chart> moveMouseToWidget() {
- return super.moveMouseToWidget();
- }
-
- /**
- * Returns the list of series
- *
- * @return the list of series
- */
- public List<SWTBotSwtChartSeries> getSeries() {
- List<SWTBotSwtChartSeries> list = new ArrayList<>();
- for (ISeries series : widget.getSeriesSet().getSeries()) {
- list.add(new SWTBotSwtChartSeries(widget, series));
- }
- return list;
- }
-
- /**
- * Returns the series with the specified id
- *
- * @param id
- * the id
- * @return the series
- */
- public SWTBotSwtChartSeries getSeries(String id) {
- AtomicReference<ISeries> series = new AtomicReference<>();
- SWTBotUtils.waitUntil(chart -> {
- series.set(widget.getSeriesSet().getSeries(id));
- return series.get() != null;
- }, widget, () -> "Timed out waiting for series " + id);
- return new SWTBotSwtChartSeries(widget, series.get());
- }
-}
diff --git a/tmf/org.eclipse.tracecompass.tmf.ui.swtbot.tests/shared/org/eclipse/tracecompass/tmf/ui/swtbot/tests/shared/SWTBotSwtChartSeries.java b/tmf/org.eclipse.tracecompass.tmf.ui.swtbot.tests/shared/org/eclipse/tracecompass/tmf/ui/swtbot/tests/shared/SWTBotSwtChartSeries.java
deleted file mode 100644
index bfae59c..0000000
--- a/tmf/org.eclipse.tracecompass.tmf.ui.swtbot.tests/shared/org/eclipse/tracecompass/tmf/ui/swtbot/tests/shared/SWTBotSwtChartSeries.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2019 Ericsson
- *
- * All rights reserved. This program and the accompanying materials are
- * made available under the terms of the Eclipse Public License 2.0 which
- * accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-
-package org.eclipse.tracecompass.tmf.ui.swtbot.tests.shared;
-
-import org.eclipse.swtbot.swt.finder.exceptions.WidgetNotFoundException;
-import org.eclipse.swtbot.swt.finder.widgets.AbstractSWTBotControl;
-import org.swtchart.Chart;
-import org.swtchart.ISeries;
-import org.swtchart.ISeries.SeriesType;
-
-/**
- * SWTBot class representing a SwtChart series
- *
- * @author Patrick Tasse
- * @deprecated use {link {@link SWTBotEclipseSwtChartSeries}
- */
-@Deprecated
-public class SWTBotSwtChartSeries extends AbstractSWTBotControl<Chart> {
-
- private final ISeries fSeries;
-
- /**
- * Constructor
- *
- * @param chart
- * the chart widget
- * @param series
- * the series
- * @throws WidgetNotFoundException
- * if the widget is <code>null</code> or widget has been
- * disposed.
- */
- public SWTBotSwtChartSeries(Chart chart, ISeries series) throws WidgetNotFoundException {
- super(chart);
- fSeries = series;
- }
-
- /**
- * Returns the series type
- *
- * @return the series type
- */
- public SeriesType getType() {
- return fSeries.getType();
- }
-
- /**
- * Returns the series id
- *
- * @return the series id
- */
- public String getSeriesId() {
- return fSeries.getId();
- }
-}
diff --git a/tmf/org.eclipse.tracecompass.tmf.ui.swtbot.tests/src/org/eclipse/tracecompass/tmf/ui/swtbot/tests/XYDataProviderBaseTest.java b/tmf/org.eclipse.tracecompass.tmf.ui.swtbot.tests/src/org/eclipse/tracecompass/tmf/ui/swtbot/tests/XYDataProviderBaseTest.java
deleted file mode 100644
index 6520482..0000000
--- a/tmf/org.eclipse.tracecompass.tmf.ui.swtbot.tests/src/org/eclipse/tracecompass/tmf/ui/swtbot/tests/XYDataProviderBaseTest.java
+++ /dev/null
@@ -1,356 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017, 2019 Ericsson
- *
- * All rights reserved. This program and the accompanying materials are
- * made available under the terms of the Eclipse Public License 2.0 which
- * accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-
-package org.eclipse.tracecompass.tmf.ui.swtbot.tests;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import java.io.File;
-import java.net.URI;
-import java.net.URL;
-import java.util.Arrays;
-import java.util.LinkedHashMap;
-import java.util.Map;
-import java.util.Objects;
-
-import org.apache.log4j.ConsoleAppender;
-import org.apache.log4j.Logger;
-import org.apache.log4j.SimpleLayout;
-import org.eclipse.core.runtime.FileLocator;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.jdt.annotation.Nullable;
-import org.eclipse.swt.graphics.RGB;
-import org.eclipse.swtbot.eclipse.finder.SWTWorkbenchBot;
-import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotView;
-import org.eclipse.swtbot.swt.finder.finders.UIThreadRunnable;
-import org.eclipse.swtbot.swt.finder.junit.SWTBotJunit4ClassRunner;
-import org.eclipse.swtbot.swt.finder.matchers.WidgetOfType;
-import org.eclipse.swtbot.swt.finder.utils.FileUtils;
-import org.eclipse.swtbot.swt.finder.utils.SWTBotPreferences;
-import org.eclipse.tracecompass.tmf.core.model.TmfCommonXAxisModel;
-import org.eclipse.tracecompass.tmf.core.model.YModel;
-import org.eclipse.tracecompass.tmf.core.model.xy.IYModel;
-import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
-import org.eclipse.tracecompass.tmf.ui.swtbot.tests.shared.SWTBotUtils;
-import org.eclipse.tracecompass.tmf.ui.tests.shared.WaitUtils;
-import org.eclipse.tracecompass.tmf.ui.viewers.xycharts.TmfXYChartViewer;
-import org.eclipse.tracecompass.tmf.ui.views.TmfChartView;
-import org.eclipse.ui.IViewPart;
-import org.hamcrest.Matcher;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.runner.RunWith;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.FrameworkUtil;
-import org.swtchart.Chart;
-import org.swtchart.IBarSeries;
-import org.swtchart.ILineSeries;
-import org.swtchart.ISeries;
-import org.swtchart.LineStyle;
-
-import com.google.common.primitives.Doubles;
-import com.google.common.primitives.Longs;
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
-
-/**
- * SWTBot tests for viewers using XY data provider
- *
- * @author Yonni Chen
- * @deprecated use {@link org.eclipse.tracecompass.tmf.ui.swtbot.tests.views.xychart.XYDataProviderBaseTest}
- */
-@Deprecated
-@RunWith(SWTBotJunit4ClassRunner.class)
-public abstract class XYDataProviderBaseTest {
-
- /** The workbench bot */
- protected static SWTWorkbenchBot fBot;
-
- /** The Log4j logger instance. */
- private static final Logger fLogger = Logger.getRootLogger();
-
- /** Default project name */
- protected static final String TRACE_PROJECT_NAME = "test";
-
- private static Gson fGson = new GsonBuilder().setPrettyPrinting().create();
-
- private SWTBotView fViewBot;
- private Chart fChart;
-
- /**
- * Before Class
- */
- @BeforeClass
- public static void beforeClass() {
- SWTBotUtils.initialize();
-
- /* set up for swtbot */
- SWTBotPreferences.TIMEOUT = 20000; /* 20 second timeout */
- SWTBotPreferences.KEYBOARD_LAYOUT = "EN_US";
- fLogger.removeAllAppenders();
- fLogger.addAppender(new ConsoleAppender(new SimpleLayout(), ConsoleAppender.SYSTEM_OUT));
- fBot = new SWTWorkbenchBot();
- SWTBotUtils.closeView("welcome", fBot);
- /* Create the trace project */
- SWTBotUtils.createProject(TRACE_PROJECT_NAME);
- /* Finish waiting for eclipse to load */
- WaitUtils.waitForJobs();
- }
-
- /**
- * Close the editor
- */
- @AfterClass
- public static void tearDown() {
- SWTBotUtils.deleteProject(TRACE_PROJECT_NAME, fBot);
- fLogger.removeAllAppenders();
- }
-
- /**
- * Set up
- */
- @Before
- public void setup() {
- SWTBotUtils.openView(getViewID());
- fViewBot = fBot.viewById(getViewID());
- fViewBot.show();
-
- Matcher<Chart> widgetOfType = WidgetOfType.widgetOfType(Chart.class);
- fChart = fViewBot.bot().widget(widgetOfType);
- ITmfTrace trace = getTestTrace();
-
- File file = new File(trace.getPath());
- SWTBotUtils.openTrace(TRACE_PROJECT_NAME, file.getAbsolutePath(), trace.getTraceTypeId());
- SWTBotUtils.activateEditor(fBot, trace.getName());
- }
-
- /**
- * After Test
- */
- @After
- public void after() {
- fBot.closeAllEditors();
- SWTBotUtils.closeSecondaryShells(fBot);
- disposeTestTrace();
- }
-
- /**
- * Get the full path to a test file from this class's bundle.
- *
- * @param bundlePath
- * path from the bundle
- * @return the absolute path
- */
- private String getFullPath(String bundlePath) {
- try {
- Bundle bundle = FrameworkUtil.getBundle(this.getClass());
- URL location = FileLocator.find(bundle, new Path(bundlePath), null);
- URI uri = FileLocator.toFileURL(location).toURI();
- return new File(uri).getAbsolutePath();
- } catch (Exception e) {
- fail(e.toString());
- return null;
- }
- }
-
- /**
- * Based on a SWT Chart, we check if data shown is valid with a JSON file.
- * Comparison with the main series and other series if exists
- *
- * @param chart
- * A SWT Chart
- * @param otherSeries
- * An array of other series name to check other than the main series
- * @param expectedJson
- * The path of the JSON file relative to this class's bundle
- * @return True if the serialized chart data matches the JSON file content
- */
- protected boolean isChartDataValid(final Chart chart, String expectedJson, String... otherSeries) {
- /**
- * FIXME : Once CQ for Jackson is approved, use deserialization instead of
- * comparing strings
- */
- String expected = FileUtils.read(getFullPath(expectedJson));
- TmfCommonXAxisModel model = extractModelFromChart(chart, otherSeries);
- String current = fGson.toJson(model);
- current = current.replaceAll("\\(Legacy\\)", "View");
- return expected.equals(current);
- }
-
- /**
- * From a SWT Chart, this method extract a {@link TmfCommonXAxisModel} that
- * represents the chart. Since, we unfortunately have no mecanism to deserialize
- * with GSON, we have to compare strings. So, once the model is extract from the
- * Chart, we serialize it and compare with a string
- *
- * @param chart
- * A SWT Chart
- * @param otherSeries
- * Name of other series to extract from Chart
- * @return A {@link TmfCommonXAxisModel}
- */
- protected TmfCommonXAxisModel extractModelFromChart(final Chart chart, String... otherSeries) {
- String mainSeriesName = getMainSeriesName();
- ISeries mainSeries = chart.getSeriesSet().getSeries(mainSeriesName);
- if (mainSeries == null) {
- System.out.println("Main Series " + mainSeriesName + " not found in chart");
- return null;
- }
-
- /* X and Y Values shown in chart */
- double[] xMain = mainSeries.getXSeries();
- double[] yMain = mainSeries.getYSeries();
-
- Map<@NonNull String, @NonNull IYModel> yModels = new LinkedHashMap<>();
- yModels.put(mainSeriesName, new YModel(-1, mainSeriesName, Objects.requireNonNull(yMain)));
-
- for (String other : otherSeries) {
- if (other != null) {
- ISeries series = chart.getSeriesSet().getSeries(other);
- if (series == null) {
- System.out.println("Series " + other + " not found in chart");
- return null;
- }
-
- /* X and Y Values shown in chart */
- double[] xSeries = series.getXSeries();
- double[] ySeries = series.getYSeries();
-
- /* Series should have the same x axis values, not finished updating all series*/
- if (!Arrays.equals(xMain, xSeries)) {
- System.out.println("Series don't currently have the same x axis values");
- return null;
- }
- yModels.put(other, new YModel(-1, other, Objects.requireNonNull(ySeries)));
- }
- }
-
- long[] x = Longs.toArray(Doubles.asList(xMain));
- assertNotNull(x);
- return new TmfCommonXAxisModel(getTitle(), x, yModels.values());
- }
-
- /**
- * Gets the ChartViewer from a TmfChartView
- *
- * @param viewPart
- * The IViewPart
- * @return The ChartViewer from the IViewPart
- */
- protected static TmfXYChartViewer getChartViewer(IViewPart viewPart) {
- if (viewPart instanceof TmfChartView) {
- return ((TmfChartView) viewPart).getChartViewer();
- }
- return null;
- }
-
- /**
- * Verify the style of a series in the XY chart
- *
- * @param seriesName
- * The name of the series
- * @param expectedType
- * Expected type of the series
- * @param expectedColor
- * Expected color of the series. If the color is arbitrary, a value
- * of <code>null</code> will skip color check
- * @param expectedLineStyle
- * Expected line style of the series
- * @param isArea
- * Parameter should be true if expected series show area, false
- * either
- */
- protected void verifySeriesStyle(String seriesName, ISeries.SeriesType expectedType, @Nullable RGB expectedColor, LineStyle expectedLineStyle, boolean isArea) {
- /* Make sure the UI update is complete */
- UIThreadRunnable.syncExec(() -> {});
-
- ISeries series = fChart.getSeriesSet().getSeries(seriesName);
- assertNotNull(series);
- assertTrue(series.isVisible());
-
- /* Color, type and style */
- assertEquals(expectedType, series.getType());
-
- if (expectedType == ISeries.SeriesType.LINE) {
- ILineSeries line = (ILineSeries) series;
- if (expectedColor != null) {
- assertEquals(expectedColor, line.getLineColor().getRGB());
- }
- assertEquals(expectedLineStyle, line.getLineStyle());
- assertEquals(isArea, line.isAreaEnabled());
- } else if (expectedType == ISeries.SeriesType.BAR) {
- IBarSeries bar = (IBarSeries) series;
- if (expectedColor != null) {
- assertEquals(expectedColor, bar.getBarColor().getRGB());
- }
- assertTrue(bar.isStackEnabled());
- }
- }
-
- /**
- * Gets the SWT Chart
- *
- * @return The chart
- *
- */
- protected Chart getChart() {
- return fChart;
- }
-
- /**
- * Gets the SWT Bot View
- *
- * @return The SWT Bot View
- *
- */
- protected SWTBotView getSWTBotView() {
- return fViewBot;
- }
-
- /**
- * Gets the main series name of the XY
- *
- * @return The main series name
- */
- protected abstract @NonNull String getMainSeriesName();
-
- /**
- * Gets the title of the XY
- *
- * @return The title
- */
- protected abstract @NonNull String getTitle();
-
- /**
- * Gets the view ID
- *
- * @return The view ID
- */
- protected abstract String getViewID();
-
- /**
- * Gets the trace on which the test will be run
- *
- * @return The trace
- */
- protected abstract ITmfTrace getTestTrace();
-
- /**
- * Disposes the trace on which the test was run
- */
- protected abstract void disposeTestTrace();
-}
diff --git a/tmf/org.eclipse.tracecompass.tmf.ui.swtbot.tests/src/org/eclipse/tracecompass/tmf/ui/swtbot/tests/views/XYChartViewStub.java b/tmf/org.eclipse.tracecompass.tmf.ui.swtbot.tests/src/org/eclipse/tracecompass/tmf/ui/swtbot/tests/views/XYChartViewStub.java
deleted file mode 100644
index 8714bd4..0000000
--- a/tmf/org.eclipse.tracecompass.tmf.ui.swtbot.tests/src/org/eclipse/tracecompass/tmf/ui/swtbot/tests/views/XYChartViewStub.java
+++ /dev/null
@@ -1,149 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2019 Ericsson
- *
- * All rights reserved. This program and the accompanying materials are
- * made available under the terms of the Eclipse Public License 2.0 which
- * accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- **********************************************************************/
-package org.eclipse.tracecompass.tmf.ui.swtbot.tests.views;
-
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.jdt.annotation.Nullable;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.tracecompass.internal.tmf.core.model.TmfXyResponseFactory;
-import org.eclipse.tracecompass.tmf.core.dataprovider.DataProviderParameterUtils;
-import org.eclipse.tracecompass.tmf.core.model.CommonStatusMessage;
-import org.eclipse.tracecompass.tmf.core.model.YModel;
-import org.eclipse.tracecompass.tmf.core.model.tree.ITmfTreeDataModel;
-import org.eclipse.tracecompass.tmf.core.model.tree.ITmfTreeDataProvider;
-import org.eclipse.tracecompass.tmf.core.model.tree.TmfTreeDataModel;
-import org.eclipse.tracecompass.tmf.core.model.tree.TmfTreeModel;
-import org.eclipse.tracecompass.tmf.core.model.xy.ITmfTreeXYDataProvider;
-import org.eclipse.tracecompass.tmf.core.model.xy.ITmfXYDataProvider;
-import org.eclipse.tracecompass.tmf.core.model.xy.ITmfXyModel;
-import org.eclipse.tracecompass.tmf.core.model.xy.IYModel;
-import org.eclipse.tracecompass.tmf.core.response.ITmfResponse;
-import org.eclipse.tracecompass.tmf.core.response.TmfModelResponse;
-import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
-import org.eclipse.tracecompass.tmf.ui.viewers.TmfViewer;
-import org.eclipse.tracecompass.tmf.ui.viewers.tree.AbstractSelectTreeViewer;
-import org.eclipse.tracecompass.tmf.ui.viewers.tree.ITmfTreeColumnDataProvider;
-import org.eclipse.tracecompass.tmf.ui.viewers.tree.TmfGenericTreeEntry;
-import org.eclipse.tracecompass.tmf.ui.viewers.tree.TmfTreeColumnData;
-import org.eclipse.tracecompass.tmf.ui.viewers.xycharts.TmfXYChartViewer;
-import org.eclipse.tracecompass.tmf.ui.viewers.xycharts.linecharts.TmfFilteredXYChartViewer;
-import org.eclipse.tracecompass.tmf.ui.viewers.xycharts.linecharts.TmfXYChartSettings;
-import org.eclipse.tracecompass.tmf.ui.views.TmfChartView;
-
-import com.google.common.collect.ImmutableList;
-import com.google.common.primitives.Longs;
-
-/**
- * XYChart View Stub
- *
- * @author Bernd Hufmann
- * @deprecated use {@link org.eclipse.tracecompass.tmf.ui.swtbot.tests.views.xychart.XYChartViewStub}
- */
-@Deprecated
-@SuppressWarnings("restriction")
-public class XYChartViewStub extends TmfChartView {
-
- /** View ID. */
- public static final String ID = "org.eclipse.tracecompass.tmf.ui.swtbot.tests.views.xychart.stub"; //$NON-NLS-1$
-
- /** View ID. */
- @NonNull
- public static final String PROVIDER_ID = "org.eclipse.tracecompass.tmf.ui.swtbot.tests.views.xychart.stub.provider"; //$NON-NLS-1$
-
- /** Title of the chart viewer */
- public static final String VIEW_TITLE = "XY Chart View Stub"; //$NON-NLS-1$
-
- /**
- * Constructor
- */
- public XYChartViewStub() {
- super(VIEW_TITLE);
- }
-
- @Override
- protected TmfXYChartViewer createChartViewer(Composite parent) {
- TmfXYChartSettings settings = new TmfXYChartSettings(null, null, null, 1);
- return new TmfFilteredXYChartViewer(parent, settings, PROVIDER_ID) {
- @Override
- protected ITmfXYDataProvider initializeDataProvider(@NonNull ITmfTrace trace) {
- return new MyTmfXyDataProvider();
- }
- };
- }
-
- @Override
- protected @NonNull TmfViewer createLeftChildViewer(Composite parent) {
- return new MyAbsractSelectTreeViewer(parent, PROVIDER_ID);
- }
-
- private class MyTmfXyDataProvider implements ITmfTreeXYDataProvider<@NonNull ITmfTreeDataModel> {
- @SuppressWarnings("null")
- @Override
- public final TmfModelResponse<ITmfXyModel> fetchXY(Map<String, Object> fetchParameters, @Nullable IProgressMonitor monitor) {
- List<Long> xValues = DataProviderParameterUtils.extractTimeRequested(fetchParameters);
- if (xValues == null) {
- return TmfXyResponseFactory.createFailedResponse("No requested time values provided");
- }
- double[] yValues = new double[xValues.size()];
- for (int i = 0; i < yValues.length; i++) {
- yValues[i] = xValues.get(i) * 0.000001;
- }
- @NonNull
- IYModel series = new YModel(1, "Top", yValues);
- List<@NonNull IYModel> yModels = Collections.singletonList(series);
- return TmfXyResponseFactory.create("Top", Objects.requireNonNull(Longs.toArray(xValues)), yModels, true);
- }
-
- @Override
- public final TmfModelResponse<TmfTreeModel<@NonNull ITmfTreeDataModel>> fetchTree(Map<String, Object> fetchParameters, @Nullable IProgressMonitor monitor) {
- @NonNull
- List<@NonNull ITmfTreeDataModel> list = Collections.singletonList(new TmfTreeDataModel(1, -1L, "Top"));
- TmfTreeModel<@NonNull ITmfTreeDataModel> tree = new TmfTreeModel<>(Collections.emptyList(), list);
- return new TmfModelResponse<>(tree, ITmfResponse.Status.COMPLETED, CommonStatusMessage.COMPLETED);
- }
-
- @Override
- public @NonNull String getId() {
- return PROVIDER_ID;
- }
-
- }
-
- private class MyAbsractSelectTreeViewer extends AbstractSelectTreeViewer {
-
- class MyTreeLabelProvider extends TreeLabelProvider { }
-
- public MyAbsractSelectTreeViewer(Composite parent, String id) {
- super(parent, 1, id);
- setLabelProvider(new MyTreeLabelProvider());
- }
-
- @Override
- protected ITmfTreeColumnDataProvider getColumnDataProvider() {
- return () -> ImmutableList.of(
- createColumn("Name", Comparator.comparing(TmfGenericTreeEntry::getName)),
- new TmfTreeColumnData("Legend"));
- }
-
- @Override
- protected ITmfTreeDataProvider<@NonNull ITmfTreeDataModel> getProvider(@NonNull ITmfTrace trace) {
- return new MyTmfXyDataProvider();
- }
- }
-
-}
diff --git a/tmf/org.eclipse.tracecompass.tmf.ui.swtbot.tests/src/org/eclipse/tracecompass/tmf/ui/swtbot/tests/views/XYChartViewTest.java b/tmf/org.eclipse.tracecompass.tmf.ui.swtbot.tests/src/org/eclipse/tracecompass/tmf/ui/swtbot/tests/views/XYChartViewTest.java
deleted file mode 100644
index 5e5678e..0000000
--- a/tmf/org.eclipse.tracecompass.tmf.ui.swtbot.tests/src/org/eclipse/tracecompass/tmf/ui/swtbot/tests/views/XYChartViewTest.java
+++ /dev/null
@@ -1,366 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2019 Ericsson
- *
- * All rights reserved. This program and the accompanying materials are
- * made available under the terms of the Eclipse Public License 2.0 which
- * accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- **********************************************************************/
-
-package org.eclipse.tracecompass.tmf.ui.swtbot.tests.views;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-
-import org.apache.log4j.ConsoleAppender;
-import org.apache.log4j.Logger;
-import org.apache.log4j.SimpleLayout;
-import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.swtbot.eclipse.finder.SWTWorkbenchBot;
-import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotView;
-import org.eclipse.swtbot.swt.finder.finders.UIThreadRunnable;
-import org.eclipse.swtbot.swt.finder.junit.SWTBotJunit4ClassRunner;
-import org.eclipse.swtbot.swt.finder.utils.SWTBotPreferences;
-import org.eclipse.swtbot.swt.finder.waits.DefaultCondition;
-import org.eclipse.swtbot.swt.finder.widgets.SWTBotToolbarButton;
-import org.eclipse.tracecompass.tmf.core.event.ITmfEvent;
-import org.eclipse.tracecompass.tmf.core.exceptions.TmfTraceException;
-import org.eclipse.tracecompass.tmf.core.signal.TmfSelectionRangeUpdatedSignal;
-import org.eclipse.tracecompass.tmf.core.signal.TmfSignalManager;
-import org.eclipse.tracecompass.tmf.core.signal.TmfTraceClosedSignal;
-import org.eclipse.tracecompass.tmf.core.signal.TmfTraceOpenedSignal;
-import org.eclipse.tracecompass.tmf.core.signal.TmfWindowRangeUpdatedSignal;
-import org.eclipse.tracecompass.tmf.core.timestamp.ITmfTimestamp;
-import org.eclipse.tracecompass.tmf.core.timestamp.TmfTimeRange;
-import org.eclipse.tracecompass.tmf.core.timestamp.TmfTimestamp;
-import org.eclipse.tracecompass.tmf.core.trace.TmfContext;
-import org.eclipse.tracecompass.tmf.core.trace.location.ITmfLocation;
-import org.eclipse.tracecompass.tmf.tests.stubs.trace.TmfTraceStub;
-import org.eclipse.tracecompass.tmf.ui.swtbot.tests.shared.ConditionHelpers;
-import org.eclipse.tracecompass.tmf.ui.swtbot.tests.shared.SWTBotSwtChart;
-import org.eclipse.tracecompass.tmf.ui.swtbot.tests.shared.SWTBotUtils;
-import org.eclipse.tracecompass.tmf.ui.viewers.xycharts.TmfXYChartViewer;
-import org.eclipse.tracecompass.tmf.ui.views.TmfChartView;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.swtchart.Chart;
-import org.swtchart.ISeries;
-import org.swtchart.ISeriesSet;
-
-/**
- * Test for XY Chart views in Trace Compass.
- * @deprecated use {@link org.eclipse.tracecompass.tmf.ui.swtbot.tests.views.xychart.XYChartViewTest}
- */
-@Deprecated
-@RunWith(SWTBotJunit4ClassRunner.class)
-public class XYChartViewTest {
-
- private static final Logger fLogger = Logger.getRootLogger();
-
- private SWTBotView fViewBot;
-
- private TmfTraceStub fTrace;
-
- private SWTWorkbenchBot fBot;
-
- private TmfXYChartViewer fXyViewer;
-
- private static final TmfTimeRange INITIAL_WINDOW_RANGE = new TmfTimeRange(TmfTimestamp.fromNanos(20), TmfTimestamp.fromNanos(100));
-
- /**
- * Set up for test
- */
- @BeforeClass
- public static void beforeClass() {
- SWTBotUtils.initialize();
- SWTBotPreferences.TIMEOUT = 20000; /* 20 second timeout */
- SWTBotPreferences.KEYBOARD_LAYOUT = "EN_US";
- fLogger.removeAllAppenders();
- fLogger.addAppender(new ConsoleAppender(new SimpleLayout(), ConsoleAppender.SYSTEM_OUT));
- }
-
- /**
- * Before the test is run, make the view see the items.
- *
- * Reset the perspective and close all the views.
- *
- * @throws TmfTraceException
- * could not load a trace
- */
- @Before
- public void before() throws TmfTraceException {
- fBot = new SWTWorkbenchBot();
- fBot.closeAllEditors();
- for (SWTBotView viewBot : fBot.views()) {
- viewBot.close();
- }
- fTrace = new TmfTraceStub() {
-
- @Override
- public @NonNull String getName() {
- return "Stub";
- }
-
- @Override
- public TmfContext seekEvent(ITmfLocation location) {
- return new TmfContext();
- }
- };
- fTrace.setStartTime(TmfTimestamp.fromNanos(0));
-
- fTrace.setEndTime(TmfTimestamp.fromNanos(180));
-
- TmfTraceStub trace = fTrace;
- trace.initialize(null, "", ITmfEvent.class);
- assertNotNull(trace);
-
- // Register trace to trace manager
- UIThreadRunnable.syncExec(() -> TmfSignalManager.dispatchSignal(new TmfTraceOpenedSignal(this, trace, null)));
-
- // Open view
- SWTBotUtils.openView(XYChartViewStub.ID);
- fViewBot = fBot.viewById(XYChartViewStub.ID);
- fViewBot.show();
-
- TmfChartView viewPart = (TmfChartView) fViewBot.getViewReference().getView(true);
- fXyViewer = viewPart.getChartViewer();
-
- // Wait till SWT chart is constructed
- fViewBot.bot().waitUntil(new DefaultCondition() {
- @Override
- public boolean test() throws Exception {
- return fXyViewer.getSwtChart() != null;
- }
- @Override
- public String getFailureMessage() {
- return "SWT Chart is null";
- }
- });
-
- // Wait for trace to be loaded
- resetTimeRange();
- }
-
-
- /**
- * Clean up after a test, reset the views.
- */
- @After
- public void after() {
- TmfTraceStub trace = fTrace;
- assertNotNull(trace);
- UIThreadRunnable.syncExec(() -> TmfSignalManager.dispatchSignal(new TmfTraceClosedSignal(this, trace)));
- fViewBot.close();
- fBot.waitUntil(ConditionHelpers.viewIsClosed(fViewBot));
- fTrace.dispose();
- }
-
- /**
- * Put things back the way they were
- */
- @AfterClass
- public static void afterClass() {
- SWTWorkbenchBot bot = new SWTWorkbenchBot();
- bot.closeAllEditors();
- fLogger.removeAllAppenders();
- }
-
- /**
- * Test horizontal zoom, we can see a rounding error
- */
- @Test
- public void testHorizontalZoom() {
- fViewBot.setFocus();
-
- assertEquals(80, fXyViewer.getWindowDuration());
-
- SWTBotSwtChart xyChart = new SWTBotSwtChart(fViewBot.bot());
-
- fireKeyInGraph(xyChart, '=');
- fViewBot.bot().waitUntil(new SeriesCondition(fXyViewer, 52));
- fireKeyInGraph(xyChart, '+');
- fViewBot.bot().waitUntil(new SeriesCondition(fXyViewer, 34));
- fireKeyInGraph(xyChart, '-');
- fViewBot.bot().waitUntil(new SeriesCondition(fXyViewer, 51));
- fireKeyInGraph(xyChart, '-');
- fViewBot.bot().waitUntil(new SeriesCondition(fXyViewer, 77));
-
- resetTimeRange();
-
- /* Zoom using zoom-in and zoom-out buttons */
- SWTBotToolbarButton button = fViewBot.toolbarButton("Zoom In");
- button.click();
- fViewBot.bot().waitUntil(new SeriesCondition(fXyViewer, 52));
- button = fViewBot.toolbarButton("Zoom Out");
- button.click();
- fViewBot.bot().waitUntil(new SeriesCondition(fXyViewer, 78));
-
- /*
- * Note that 'w' and 's' zooming is based on mouse position. Just check if
- * window range was increased or decreased to avoid inaccuracy due to
- * the mouse position in test environment.
- */
- long previousRange = fXyViewer.getWindowDuration();
- fireKeyInGraph(xyChart, 'w');
- fViewBot.bot().waitUntil(new SeriesUpdatedCondition(fXyViewer, previousRange, false));
- previousRange = fXyViewer.getWindowDuration();
- fireKeyInGraph(xyChart, 's');
- fViewBot.bot().waitUntil(new SeriesUpdatedCondition(fXyViewer, previousRange, true));
- }
-
- /**
- * Test zoom to selection
- */
- @Test
- public void testZoomToSelection() {
- SWTBotSwtChart xyChart = new SWTBotSwtChart(fViewBot.bot());
-
- xyChart.setFocus();
-
- assertEquals(80, fXyViewer.getWindowDuration());
-
- /* set selection to trace start time */
- ITmfTimestamp selStartTime = TmfTimestamp.fromNanos(30L);
- ITmfTimestamp selEndTime = TmfTimestamp.fromNanos(80L);
- TmfTimeRange range = new TmfTimeRange(selStartTime, selEndTime);
- TmfSignalManager.dispatchSignal(new TmfSelectionRangeUpdatedSignal(this, selStartTime, selEndTime));
- // Wait till selection is finished
- fViewBot.bot().waitUntil(new DefaultCondition() {
- @Override
- public boolean test() throws Exception {
- return (fXyViewer.getSelectionEndTime() - fXyViewer.getSelectionBeginTime()) == getDuration(range);
- }
- @Override
- public String getFailureMessage() {
- return "SWT Chart is null";
- }
- });
- fireKeyInGraph(xyChart, 'z');
- fViewBot.bot().waitUntil(new SeriesCondition(fXyViewer, getDuration(range)));
- }
-
- /**
- * Test 'a' and 'd' navigation
- */
- @Test
- public void testKeyboardNavigation() {
- SWTBotSwtChart xyChart = new SWTBotSwtChart(fViewBot.bot());
- xyChart.setFocus();
- assertEquals(80, fXyViewer.getWindowDuration());
-
- TmfTimeRange updatedWindowRange = new TmfTimeRange(TmfTimestamp.fromNanos(40), TmfTimestamp.fromNanos(120));
-
- // move to the right
- fireKeyInGraph(xyChart, 'd');
- fViewBot.bot().waitUntil(new SeriesCondition(fXyViewer, getDuration(updatedWindowRange)));
-
- // move to the left
- fireKeyInGraph(xyChart, 'a');
- fViewBot.bot().waitUntil(new SeriesCondition(fXyViewer, getDuration(INITIAL_WINDOW_RANGE)));
- }
-
- // ------------------------------------------------------------------------
- // Helper methods
- // ------------------------------------------------------------------------
-
- private static void fireKeyInGraph(SWTBotSwtChart chart, char c, int... modifiers) {
- chart.setFocus();
- // Move mouse to middle of the chart
- chart.moveMouseToWidget();
- int mask = 0;
- for (int modifier : modifiers) {
- mask |= modifier;
- }
- chart.pressShortcut(mask, c);
- }
-
- private static long getDuration(TmfTimeRange range) {
- return range.getEndTime().getValue() - range.getStartTime().getValue();
- }
-
- private void resetTimeRange() {
- TmfWindowRangeUpdatedSignal signal = new TmfWindowRangeUpdatedSignal(this, INITIAL_WINDOW_RANGE);
- TmfSignalManager.dispatchSignal(signal);
- fViewBot.bot().waitUntil(new SeriesCondition(fXyViewer, getDuration(INITIAL_WINDOW_RANGE)));
- }
-
- private static class SeriesCondition extends DefaultCondition {
- private TmfXYChartViewer fViewer;
- private long fExpectedRange;
- private Exception fExecption = null;
-
- public SeriesCondition(TmfXYChartViewer view, long expectedRange) {
- fViewer = view;
- fExpectedRange = expectedRange;
- }
-
- @Override
- public boolean test() throws Exception {
- try {
- Chart chart = fViewer.getSwtChart();
- ISeriesSet set = chart.getSeriesSet();
- if (set == null) {
- return false;
- }
- ISeries[] series = set.getSeries();
- return series != null && series.length > 0 && fExpectedRange == fViewer.getWindowDuration();
- } catch (Exception e) {
- fExecption = e;
- throw e;
- }
- }
-
- @Override
- public String getFailureMessage() {
- return "Expected window range (" + fExpectedRange + ") not achieved. Actual=" + fViewer.getWindowDuration() + (fExecption == null ? "" : (". Exception: " + fExecption));
- }
- }
-
- private class SeriesUpdatedCondition extends DefaultCondition {
- TmfXYChartViewer fView;
- long fPreviousRange;
- boolean fIsIncreased;
- private Exception fExecption = null;
-
- public SeriesUpdatedCondition(TmfXYChartViewer view, long previousRange, boolean increased) {
- fView = view;
- fPreviousRange = previousRange;
- fIsIncreased = increased;
- }
-
- @Override
- public boolean test() throws Exception {
- try {
- Chart chart = fView.getSwtChart();
- ISeriesSet set = chart.getSeriesSet();
- if (set == null) {
- return false;
- }
- ISeries[] series = set.getSeries();
- if (series == null) {
- return false;
- }
- long newRange = fView.getWindowDuration();
- if (fIsIncreased) {
- return newRange > fPreviousRange;
- }
- return newRange < fPreviousRange;
- } catch (Exception e) {
- fExecption = e;
- throw e;
- }
- }
-
- @Override
- public String getFailureMessage() {
- return "Window range didn't " + (fIsIncreased ? "increase" : "decrease") +
- " (previous: " + fPreviousRange + ", actual: " + fView.getWindowDuration() + ")" + (fExecption == null ? "" : (". Exception: " + fExecption));
- }
- }
-}
diff --git a/tmf/org.eclipse.tracecompass.tmf.ui/META-INF/MANIFEST.MF b/tmf/org.eclipse.tracecompass.tmf.ui/META-INF/MANIFEST.MF
index 263c4ec..28160c7 100644
--- a/tmf/org.eclipse.tracecompass.tmf.ui/META-INF/MANIFEST.MF
+++ b/tmf/org.eclipse.tracecompass.tmf.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: %Bundle-Name
Bundle-Vendor: %Bundle-Vendor
-Bundle-Version: 6.2.2.qualifier
+Bundle-Version: 7.0.0.qualifier
Bundle-Localization: plugin
Bundle-SymbolicName: org.eclipse.tracecompass.tmf.ui;singleton:=true
Bundle-Activator: org.eclipse.tracecompass.internal.tmf.ui.Activator
@@ -22,7 +22,6 @@
org.eclipse.jface.text,
org.eclipse.cdt.core,
org.eclipse.swtchart,
- org.swtchart,
com.ibm.icu,
org.eclipse.tracecompass.segmentstore.core,
org.apache.commons.compress,
@@ -72,7 +71,6 @@
org.eclipse.tracecompass.internal.tmf.ui.viewers.timegraph.handlers;x-internal:=true,
org.eclipse.tracecompass.internal.tmf.ui.viewers.tree;x-internal:=true,
org.eclipse.tracecompass.internal.tmf.ui.viewers.xychart;x-internal:=true,
- org.eclipse.tracecompass.internal.tmf.ui.viewers.xycharts;x-internal:=true,
org.eclipse.tracecompass.internal.tmf.ui.views;x-friends:="org.eclipse.tracecompass.tmf.ui.swtbot.tests",
org.eclipse.tracecompass.internal.tmf.ui.views.handler;x-internal:=true,
org.eclipse.tracecompass.internal.tmf.ui.views.histogram;x-internal:=true,
@@ -110,9 +108,6 @@
org.eclipse.tracecompass.tmf.ui.viewers.xychart,
org.eclipse.tracecompass.tmf.ui.viewers.xychart.barchart,
org.eclipse.tracecompass.tmf.ui.viewers.xychart.linechart,
- org.eclipse.tracecompass.tmf.ui.viewers.xycharts,
- org.eclipse.tracecompass.tmf.ui.viewers.xycharts.barcharts,
- org.eclipse.tracecompass.tmf.ui.viewers.xycharts.linecharts,
org.eclipse.tracecompass.tmf.ui.views,
org.eclipse.tracecompass.tmf.ui.views.colors,
org.eclipse.tracecompass.tmf.ui.views.distribution.model,
diff --git a/tmf/org.eclipse.tracecompass.tmf.ui/pom.xml b/tmf/org.eclipse.tracecompass.tmf.ui/pom.xml
index 454da0d..d8ff1fd 100644
--- a/tmf/org.eclipse.tracecompass.tmf.ui/pom.xml
+++ b/tmf/org.eclipse.tracecompass.tmf.ui/pom.xml
@@ -20,7 +20,7 @@
</parent>
<artifactId>org.eclipse.tracecompass.tmf.ui</artifactId>
- <version>6.2.2-SNAPSHOT</version>
+ <version>7.0.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
diff --git a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/internal/tmf/ui/viewers/xycharts/TmfXYChartTimeAdapter.java b/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/internal/tmf/ui/viewers/xycharts/TmfXYChartTimeAdapter.java
deleted file mode 100644
index 17aa657..0000000
--- a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/internal/tmf/ui/viewers/xycharts/TmfXYChartTimeAdapter.java
+++ /dev/null
@@ -1,165 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017, 2019 Ericsson
- *
- * All rights reserved. This program and the accompanying materials are
- * made available under the terms of the Eclipse Public License 2.0 which
- * accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-
-package org.eclipse.tracecompass.internal.tmf.ui.viewers.xycharts;
-
-import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.tracecompass.tmf.ui.viewers.xycharts.ITmfChartTimeProvider;
-import org.eclipse.tracecompass.tmf.ui.viewers.xycharts.TmfXYChartViewer;
-import org.eclipse.tracecompass.tmf.ui.widgets.timegraph.widgets.ITimeDataProvider;
-import org.eclipse.tracecompass.tmf.ui.widgets.timegraph.widgets.Utils.TimeFormat;
-
-/**
- * Tmf Chart data provider wrapper to comply with Time data provider API
- *
- * @author Matthew Khouzam
- * @deprecated use {@link org.eclipse.tracecompass.internal.tmf.ui.viewers.xychart.TmfXYChartTimeAdapter}
- */
-@Deprecated
-public final class TmfXYChartTimeAdapter implements ITimeDataProvider {
-
- private final TmfXYChartViewer fTimeProvider;
- private TimeFormat fTimeFormat;
-
- /**
- * Constructor, requires a {@link ITmfChartTimeProvider}
- *
- * @param provider
- * the provider to wrap
- */
- public TmfXYChartTimeAdapter(@NonNull TmfXYChartViewer provider) {
- fTimeProvider = provider;
- }
-
- @Override
- public long getBeginTime() {
- return fTimeProvider.getStartTime();
- }
-
- @Override
- public long getEndTime() {
- return fTimeProvider.getEndTime();
- }
-
- @Override
- public long getMinTimeInterval() {
- return 1L;
- }
-
- @Override
- public int getNameSpace() {
- // charts have no namespace
- return 0;
- }
-
- @Override
- public long getSelectionBegin() {
- return fTimeProvider.getSelectionBeginTime();
- }
-
- @Override
- public long getSelectionEnd() {
- return fTimeProvider.getSelectionEndTime();
- }
-
- @Override
- public long getTime0() {
- return fTimeProvider.getWindowStartTime();
- }
-
- @Override
- public long getTime1() {
- return fTimeProvider.getWindowEndTime();
- }
-
- @Override
- public void setSelectionRangeNotify(long beginTime, long endTime, boolean ensureVisible) {
- // Do nothing
- }
-
- @Override
- public void setSelectionRange(long beginTime, long endTime, boolean ensureVisible) {
- // Do nothing
- }
-
- @Override
- public long getMinTime() {
- return fTimeProvider.getStartTime();
- }
-
- @Override
- public long getMaxTime() {
- return fTimeProvider.getEndTime();
- }
-
- @Override
- public TimeFormat getTimeFormat() {
- return fTimeFormat;
- }
-
- @Override
- public int getTimeSpace() {
- return getAxisWidth();
- }
-
- /**
- * Get the width of the axis
- *
- * @return the width of the axis
- */
- public int getAxisWidth() {
- return fTimeProvider.getSwtChart().getPlotArea().getBounds().width;
- }
-
- // -------------------------------------------------------------------------
- // Override rest if need be
- // -------------------------------------------------------------------------
-
- @Override
- public void setStartFinishTimeNotify(long time0, long time1) {
- fTimeProvider.updateWindow(time0, time1);
- }
-
- @Override
- public void setStartFinishTime(long time0, long time1) {
- // Do nothing
- }
-
- @Override
- public void notifyStartFinishTime() {
- // Do nothing
- }
-
- @Override
- public void setSelectedTimeNotify(long time, boolean ensureVisible) {
- // Do nothing
- }
-
- @Override
- public void setSelectedTime(long time, boolean ensureVisible) {
- // Do nothing
- }
-
- @Override
- public void setNameSpace(int width) {
- // Do nothing
- }
-
- /**
- * Set the time format.
- *
- * @param timeFormat
- * the time format
- */
- public void setTimeFormat(org.eclipse.tracecompass.tmf.ui.views.FormatTimeUtils.TimeFormat timeFormat) {
- fTimeFormat = TimeFormat.convert(timeFormat);
- }
-}
diff --git a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/internal/tmf/ui/viewers/xycharts/TmfXyUiUtils.java b/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/internal/tmf/ui/viewers/xycharts/TmfXyUiUtils.java
deleted file mode 100644
index caa7b91..0000000
--- a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/internal/tmf/ui/viewers/xycharts/TmfXyUiUtils.java
+++ /dev/null
@@ -1,264 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2019 Ericsson
- *
- * All rights reserved. This program and the accompanying materials are
- * made available under the terms of the Eclipse Public License 2.0 which
- * accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-
-package org.eclipse.tracecompass.internal.tmf.ui.viewers.xycharts;
-
-import org.eclipse.jdt.annotation.Nullable;
-import org.eclipse.tracecompass.tmf.ui.viewers.xycharts.ITmfChartTimeProvider;
-import org.swtchart.Chart;
-import org.swtchart.IAxis;
-import org.swtchart.Range;
-
-/**
- * Utility class providing XY charts utility methods, for example for zooming
- * and scrolling. For scrolling, it will move the zoom window to another
- * position while maintaining the window size. It also notifies the viewer about
- * a change of range.
- *
- * @author Bernd Hufmann
- * @deprecated use {@link org.eclipse.tracecompass.internal.tmf.ui.viewers.xychart.TmfXyUiUtils}
- */
-@Deprecated
-public class TmfXyUiUtils {
-
- // ------------------------------------------------------------------------
- // Constants
- // ------------------------------------------------------------------------
- private static final long MIN_WINDOW_SIZE = 1;
- private static final double ZOOM_FACTOR_AT_X_POSITION = 0.8;
- private static final double ZOOM_FACTOR_SELECTION_CENTERED = 1.5;
-
- // ------------------------------------------------------------------------
- // Constructor
- // ------------------------------------------------------------------------
- private TmfXyUiUtils() {
- }
-
- /**
- * Perform horizontal scrolling for a given viewer.
- *
- * @param viewer
- * the chart time provider to use for scrolling
- * @param chart
- * the SwtChart reference to use the scrolling
- * @param left
- * true to scroll left else scroll right
- *
- */
- public static void horizontalScroll(ITmfChartTimeProvider viewer, Chart chart, boolean left) {
- IAxis xAxis = chart.getAxisSet().getXAxis(0);
- if (xAxis == null) {
- return;
- }
- long windowStartTime = viewer.getWindowStartTime();
- long windowsEndTime = viewer.getWindowEndTime();
-
- long startTime = viewer.getStartTime();
- long endTime = viewer.getEndTime();
-
- long range = windowsEndTime - windowStartTime;
- if (range <= 0) {
- return;
- }
- long increment = Math.max(1, range / 2);
- if (left) {
- windowStartTime = Math.max(windowStartTime - increment, startTime);
- windowsEndTime = windowStartTime + range;
- } else {
- windowsEndTime = Math.min(windowsEndTime + increment, endTime);
- windowStartTime = windowsEndTime - range;
- }
- viewer.updateWindow(windowStartTime, windowsEndTime);
- xAxis.setRange(new Range(windowStartTime - viewer.getTimeOffset(), windowsEndTime - viewer.getTimeOffset()));
- }
-
- /**
- * Provides horizontal zooming for a given viewer at given position.
- *
- * @param viewer
- * the chart time provider to use for zooming
- * @param chart
- * the SwtChart reference to use the zooming
- * @param zoomIn
- * true to zoomIn else zoomOut
- * @param x
- * x location to center the zoom
- */
- public static void zoom(ITmfChartTimeProvider viewer, Chart chart, boolean zoomIn, final int x) {
- IAxis xAxis = chart.getAxisSet().getXAxis(0);
- if (xAxis == null) {
- return;
- }
- // Compute the new time range
- long newDuration = viewer.getWindowDuration();
- if (newDuration == 0) {
- return;
- }
- double ratio = 1.0;
- if (zoomIn) {
- ratio = ZOOM_FACTOR_AT_X_POSITION;
- newDuration = Math.round(ZOOM_FACTOR_AT_X_POSITION * newDuration);
- } else {
- ratio = 1.0 / ZOOM_FACTOR_AT_X_POSITION;
- newDuration = (long) Math.ceil(newDuration * ratio);
- }
- newDuration = Math.max(MIN_WINDOW_SIZE, newDuration);
-
- // Center the zoom on mouse position, distribute new duration and adjust
- // for boundaries.
- long timeAtXPos = limitXDataCoordinate(viewer, xAxis.getDataCoordinate(x)) + viewer.getTimeOffset();
- // Note: ratio = newDuration/oldDuration
- long newWindowStartTime = timeAtXPos - Math.round(ratio * (timeAtXPos - viewer.getWindowStartTime()));
- long newWindowEndTime = validateWindowEndTime(viewer, newWindowStartTime, newWindowStartTime + newDuration);
- newWindowStartTime = validateWindowStartTime(viewer, newWindowStartTime);
- viewer.updateWindow(newWindowStartTime, newWindowEndTime);
- xAxis.setRange(new Range(newWindowStartTime - viewer.getTimeOffset(),
- newWindowEndTime - viewer.getTimeOffset()));
- }
-
- /**
- * Provides horizontal zooming for a given viewer based on current selection
- * range. If selection range is visible, the zooming is centered on the
- * middle of the selection range. If the selection range is not visible,
- * then the zooming is centered on the window range.
- *
- * @param viewer
- * the chart time provider to use for zooming
- * @param chart
- * the SwtChart reference to use the zooming
- * @param zoomIn
- * true to zoom-in else to zoom-out
- */
- public static void zoom(ITmfChartTimeProvider viewer, Chart chart, boolean zoomIn) {
- if (zoomIn) {
- zoomIn(viewer, chart);
- } else {
- zoomOut(viewer, chart);
- }
- }
-
- /**
- * Limits x data coordinate to window start and window end range for a given
- * viewer
- *
- * @param viewer
- * the chart time provider to use
- * @param x
- * x to limit
- * @return x if x >= begin && x <= end begin if x < begin end if x > end
- */
- public static long limitXDataCoordinate(@Nullable ITmfChartTimeProvider viewer, double x) {
- if (viewer != null) {
- long windowStartTime = viewer.getWindowStartTime() - viewer.getTimeOffset();
- long windowEndTime = viewer.getWindowEndTime() - viewer.getTimeOffset();
-
- if (x < windowStartTime) {
- return windowStartTime;
- }
-
- if (x > windowEndTime) {
- return windowEndTime;
- }
- }
-
- return (long) x;
- }
-
- // ------------------------------------------------------------------------
- // Helper methods
- // ------------------------------------------------------------------------
- private static void zoomIn(ITmfChartTimeProvider viewer, Chart chart) {
- IAxis xAxis = chart.getAxisSet().getXAxis(0);
- if (xAxis == null) {
- return;
- }
- long prevTime0 = viewer.getWindowStartTime();
- long prevTime1 = viewer.getWindowEndTime();
- long prevRange = prevTime1 - prevTime0;
- if (prevRange == 0) {
- return;
- }
- long selTime = (viewer.getSelectionEndTime() + viewer.getSelectionBeginTime()) / 2;
- if (selTime < prevTime0 || selTime > prevTime1) {
- selTime = (prevTime0 + prevTime1) / 2;
- }
- long time0 = selTime - (long) ((selTime - prevTime0) / ZOOM_FACTOR_SELECTION_CENTERED);
- long time1 = selTime + (long) ((prevTime1 - selTime) / ZOOM_FACTOR_SELECTION_CENTERED);
-
- if ((time1 - time0) < MIN_WINDOW_SIZE) {
- time0 = selTime - (selTime - prevTime0) * MIN_WINDOW_SIZE / prevRange;
- time1 = time0 + MIN_WINDOW_SIZE;
- }
-
- time0 = validateWindowStartTime(viewer, time0);
- time1 = validateWindowEndTime(viewer, time0, time1);
- viewer.updateWindow(time0, time1);
- xAxis.setRange(new Range(time0 - viewer.getTimeOffset(),
- time1 - viewer.getTimeOffset()));
- }
-
- private static void zoomOut(ITmfChartTimeProvider viewer, Chart chart) {
- IAxis xAxis = chart.getAxisSet().getXAxis(0);
- if (xAxis == null) {
- return;
- }
-
- long prevTime0 = viewer.getWindowStartTime();
- long prevTime1 = viewer.getWindowEndTime();
- long selTime = (viewer.getSelectionEndTime() + viewer.getSelectionBeginTime()) / 2;
- if (selTime < prevTime0 || selTime > prevTime1) {
- selTime = (prevTime0 + prevTime1) / 2;
- }
- long newInterval;
- long time0;
- if (prevTime1 - prevTime0 <= 1) {
- newInterval = 2;
- time0 = selTime - 1;
- } else {
- newInterval = (long) Math.ceil((prevTime1 - prevTime0) * ZOOM_FACTOR_SELECTION_CENTERED);
- time0 = selTime - (long) Math.ceil((selTime - prevTime0) * ZOOM_FACTOR_SELECTION_CENTERED);
- }
- /* snap to bounds if zooming out of range */
- time0 = validateWindowStartTime(viewer, Math.max(MIN_WINDOW_SIZE, Math.min(time0, viewer.getEndTime() - newInterval)));
- long time1 = validateWindowEndTime(viewer, time0, time0 + newInterval);
- viewer.updateWindow(time0, time1);
- xAxis.setRange(new Range(time0 - viewer.getTimeOffset(),
- time1 - viewer.getTimeOffset()));
- }
-
- private static long validateWindowStartTime(ITmfChartTimeProvider viewer, long start) {
- long realStart = start;
-
- long startTime = viewer.getStartTime();
- long endTime = viewer.getEndTime();
-
- if (realStart < startTime) {
- realStart = startTime;
- }
- if (realStart > endTime) {
- realStart = endTime;
- }
- return realStart;
- }
-
- private static long validateWindowEndTime(ITmfChartTimeProvider viewer, long start, long end) {
- long realEnd = end;
- long endTime = viewer.getEndTime();
-
- if (realEnd > endTime) {
- realEnd = endTime;
- }
- if (realEnd < start + MIN_WINDOW_SIZE) {
- realEnd = start + MIN_WINDOW_SIZE;
- }
- return realEnd;
- }
-}
diff --git a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/internal/tmf/ui/views/LockRangeDialog.java b/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/internal/tmf/ui/views/LockRangeDialog.java
deleted file mode 100644
index c579035..0000000
--- a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/internal/tmf/ui/views/LockRangeDialog.java
+++ /dev/null
@@ -1,165 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2019 Draeger, Auriga
- *
- * All rights reserved. This program and the accompanying materials are
- * made available under the terms of the Eclipse Public License 2.0 which
- * accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- **********************************************************************/
-package org.eclipse.tracecompass.internal.tmf.ui.views;
-
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.ModifyListener;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.tracecompass.tmf.ui.viewers.xycharts.AxisRange;
-import org.eclipse.tracecompass.tmf.ui.viewers.xycharts.TmfXYChartViewer;
-import org.eclipse.tracecompass.tmf.ui.views.TmfChartView;
-import org.swtchart.Range;
-
-/**
- * Dialog box for entering minimum and maximum range for Y axis of
- * {@link TmfChartView}.
- *
- * @author Ivan Grinenko
- * @deprecated use {@link org.eclipse.tracecompass.internal.tmf.ui.views.xychart.LockRangeDialog}
- *
- */
-@Deprecated
-public class LockRangeDialog extends Dialog {
- /**
- * Checkbox to lock or unlock the axis.
- */
- private Button fCheck;
- /**
- * Text field for minimum.
- */
- private Text fMinText;
- /**
- * Text field for maximum.
- */
- private Text fMaxText;
- /**
- * Viewer with Y axis to lock.
- */
- private final TmfXYChartViewer fChartViewer;
- /**
- * ModifyListener for the text inputs.
- */
- private ModifyListener fModifyListener = e -> validateInputs();
-
- private static boolean isValidDouble(String input) {
- try {
- Double.parseDouble(input);
- } catch (NumberFormatException e) {
- return false;
- }
- return true;
- }
-
- /**
- * Constructor.
- *
- * @param parentShell
- * parent shell
- * @param chartViewer
- * viewer with Y axis to lock
- */
- public LockRangeDialog(Shell parentShell, TmfXYChartViewer chartViewer) {
- super(parentShell);
- fChartViewer = chartViewer;
- }
-
- @Override
- protected Control createDialogArea(Composite p) {
- p.getShell().setText(Messages.TmfChartView_LockYAxis);
- Composite parent = (Composite) super.createDialogArea(p);
-
- GridLayout parentLayout = new GridLayout(2, false);
- parent.setLayout(parentLayout);
-
- Range range = fChartViewer.getSwtChart().getAxisSet().getYAxis(0).getRange();
-
- fCheck = new Button(parent, SWT.CHECK);
- fCheck.setText(Messages.TmfChartView_LockButton);
- fCheck.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, false, 2, 1));
- fCheck.setSelection(true);
- fCheck.addSelectionListener(new SelectionListener() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- fMinText.setEnabled(fCheck.getSelection());
- fMaxText.setEnabled(fCheck.getSelection());
- validateInputs();
- }
-
- @Override
- public void widgetDefaultSelected(SelectionEvent e) {
- // nothing to do
- }
- });
-
- Label minLabel = new Label(parent, SWT.RADIO);
- minLabel.setText(Messages.TmfChartView_LowerYAxisRange);
- minLabel.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false));
-
- fMinText = new Text(parent, SWT.SINGLE | SWT.BORDER);
- fMinText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
- fMinText.setText(String.valueOf(range.lower));
- fMinText.addModifyListener(fModifyListener);
-
- Label maxLabel = new Label(parent, SWT.RADIO);
- maxLabel.setText(Messages.TmfChartView_UpperYAxisRange);
- maxLabel.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false));
-
- fMaxText = new Text(parent, SWT.SINGLE | SWT.BORDER);
- fMaxText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
- fMaxText.setText(String.valueOf(range.upper));
- fMaxText.addModifyListener(fModifyListener);
-
- return parent;
- }
-
- @Override
- protected void okPressed() {
- if (fCheck.getSelection()) {
- lockAxis();
- } else {
- fChartViewer.setFixedYRange(null);
- }
- super.okPressed();
- }
-
- private void lockAxis() {
- double min = 0;
- double max = 0;
- try {
- min = Double.parseDouble(fMinText.getText());
- max = Double.parseDouble(fMaxText.getText());
- fChartViewer.setFixedYRange(new AxisRange(min, max));
- } catch (NumberFormatException e) {
- // Suppose values are already validated
- }
- }
-
- /**
- * OK is enabled only if both of text inputs contain valid doubles or the
- * checkbox is unchecked.
- */
- private void validateInputs() {
- boolean isValidInput = isValidDouble(fMaxText.getText()) && isValidDouble(fMinText.getText());
- getButton(IDialogConstants.OK_ID).setEnabled(isValidInput || !fCheck.getSelection());
- }
-
-}
diff --git a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/colors/X11Color.java b/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/colors/X11Color.java
deleted file mode 100644
index dd8d359..0000000
--- a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/colors/X11Color.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017, 2019 Ericsson
- *
- * All rights reserved. This program and the accompanying materials are
- * made available under the terms of the Eclipse Public License 2.0 which
- * accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Patrick Tasse - Initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.tracecompass.tmf.ui.colors;
-
-import org.eclipse.swt.graphics.RGB;
-import org.eclipse.tracecompass.tmf.core.dataprovider.X11ColorUtils;
-
-/**
- * A registry of named X11 colors. It maps certain strings to RGB color values.
- *
- * @see <a href=
- * "http://cgit.freedesktop.org/xorg/app/rgb/tree/rgb.txt">http://cgit.freedesktop.org/xorg/app/rgb/tree/rgb.txt</a>
- *
- * @since 3.0
- * @deprecated Use {@link X11ColorUtils} instead
- */
-@Deprecated
-public class X11Color {
-
- /**
- * Get the RGB corresponding to a X11 color name.
- *
- * @param name
- * the X11 color name (case insensitive)
- * @return the corresponding RGB, or null
- */
- public static RGB toRGB(String name) {
- return ColorUtils.fromX11Color(name);
- }
-}
diff --git a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/ILegendImageProvider.java b/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/ILegendImageProvider.java
index b7dc846..00bf048 100644
--- a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/ILegendImageProvider.java
+++ b/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/ILegendImageProvider.java
@@ -20,7 +20,9 @@
*
* @author Yonni Chen
* @since 3.2
+ * @deprecated use {@link ILegendImageProvider2} instead
*/
+@Deprecated
public interface ILegendImageProvider {
/**
@@ -30,27 +32,10 @@
* Desired image height
* @param imageWidth
* Desired image width
- * @param name
- * Name associated with a legend image
- * @return A legend image
- * @deprecated As of 6.0, use {@link #getLegendImage(int, int, Long)} instead
- */
- @Deprecated
- Image getLegendImage(int imageHeight, int imageWidth, @NonNull String name);
-
- /**
- * Returns an image that represents the legend.
- *
- * @param imageHeight
- * Desired image height
- * @param imageWidth
- * Desired image width
* @param id
* Id associate with a legend image
* @return A legend image
* @since 6.0
*/
- default Image getLegendImage(int imageHeight, int imageWidth, @NonNull Long id) {
- return getLegendImage(imageHeight, imageWidth, String.valueOf(id));
- }
+ Image getLegendImage(int imageHeight, int imageWidth, @NonNull Long id);
}
diff --git a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/tree/AbstractSelectTreeViewer.java b/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/tree/AbstractSelectTreeViewer.java
deleted file mode 100644
index 08a9db3..0000000
--- a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/tree/AbstractSelectTreeViewer.java
+++ /dev/null
@@ -1,726 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017, 2020 Ericsson, Draeger Auriga
- *
- * All rights reserved. This program and the accompanying materials are
- * made available under the terms of the Eclipse Public License 2.0 which
- * accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-
-package org.eclipse.tracecompass.tmf.ui.viewers.tree;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.atomic.AtomicInteger;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import org.apache.commons.lang3.StringUtils;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.jface.viewers.AbstractTreeViewer;
-import org.eclipse.jface.viewers.CheckStateChangedEvent;
-import org.eclipse.jface.viewers.CheckboxTreeViewer;
-import org.eclipse.jface.viewers.ICheckStateListener;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerComparator;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.swt.widgets.Tree;
-import org.eclipse.swt.widgets.TreeColumn;
-import org.eclipse.tracecompass.common.core.log.TraceCompassLog;
-import org.eclipse.tracecompass.common.core.log.TraceCompassLogUtils.FlowScopeLog;
-import org.eclipse.tracecompass.common.core.log.TraceCompassLogUtils.FlowScopeLogBuilder;
-import org.eclipse.tracecompass.internal.tmf.core.model.filters.FetchParametersUtils;
-import org.eclipse.tracecompass.internal.tmf.ui.Activator;
-import org.eclipse.tracecompass.tmf.core.dataprovider.DataProviderManager;
-import org.eclipse.tracecompass.tmf.core.model.filters.TimeQueryFilter;
-import org.eclipse.tracecompass.tmf.core.model.timegraph.IElementResolver;
-import org.eclipse.tracecompass.tmf.core.model.tree.ITmfTreeDataModel;
-import org.eclipse.tracecompass.tmf.core.model.tree.ITmfTreeDataProvider;
-import org.eclipse.tracecompass.tmf.core.model.tree.TmfTreeDataModel;
-import org.eclipse.tracecompass.tmf.core.model.tree.TmfTreeModel;
-import org.eclipse.tracecompass.tmf.core.response.ITmfResponse;
-import org.eclipse.tracecompass.tmf.core.response.TmfModelResponse;
-import org.eclipse.tracecompass.tmf.core.signal.TmfDataModelSelectedSignal;
-import org.eclipse.tracecompass.tmf.core.signal.TmfSignalHandler;
-import org.eclipse.tracecompass.tmf.core.signal.TmfSignalManager;
-import org.eclipse.tracecompass.tmf.core.signal.TmfTraceOpenedSignal;
-import org.eclipse.tracecompass.tmf.core.signal.TmfTraceSelectedSignal;
-import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
-import org.eclipse.tracecompass.tmf.core.trace.TmfTraceContext;
-import org.eclipse.tracecompass.tmf.core.trace.TmfTraceManager;
-import org.eclipse.tracecompass.tmf.ui.viewers.ILegendImageProvider;
-import org.eclipse.tracecompass.tmf.ui.widgets.timegraph.dialogs.MultiTreePatternFilter;
-import org.eclipse.tracecompass.tmf.ui.widgets.timegraph.dialogs.TriStateFilteredCheckboxTree;
-
-import com.google.common.collect.Iterables;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Multimap;
-import com.google.common.primitives.Longs;
-
-/**
- * Abstract viewer for trees with checkboxes. This viewer gets his data from a
- * data provider.
- *
- * @since 3.2
- * @author Loic Prieur-Drevon
- */
-@Deprecated
-public abstract class AbstractSelectTreeViewer extends AbstractTmfTreeViewer {
-
- private static final @NonNull Logger LOGGER = TraceCompassLog.getLogger(AbstractSelectTreeViewer.class);
-
- private static final AtomicInteger INSTANCE_ID_SEQUENCE = new AtomicInteger(0);
-
- /** Timeout between updates in the updateData thread **/
- private static final long BUILD_UPDATE_TIMEOUT = 500;
-
- /** ID of the checked tree items in the map of data in {@link TmfTraceContext} */
- private static final char SEP = ':';
- private static final @NonNull String CHECKED_ELEMENTS = ".CHECKED_ELEMENTS"; //$NON-NLS-1$
- private static final @NonNull String FILTER_STRING = ".FILTER_STRING"; //$NON-NLS-1$
- private static final @NonNull String UPDATE_CONTENT_JOB_NAME = "AbstractSelectTreeViewer#updateContent Job"; //$NON-NLS-1$
- private static final String FAILED_TO_SLEEP_PREFIX = "Failed to sleep the "; //$NON-NLS-1$
- private static final String LOG_CATEGORY_SUFFIX = " Tree viewer"; //$NON-NLS-1$
-
- private final String fId;
- private final @NonNull String fLogCategory;
- private final int fInstanceId;
-
- private static final ViewerComparator COMPARATOR = new ViewerComparator() {
- @Override
- public int compare(Viewer viewer, Object e1, Object e2) {
- TmfTreeViewerEntry entry1 = (TmfTreeViewerEntry) e1;
- TmfTreeViewerEntry entry2 = (TmfTreeViewerEntry) e2;
- String name1 = entry1.getName();
- String name2 = entry2.getName();
- Long longValue1 = Longs.tryParse(name1);
- Long longValue2 = Longs.tryParse(name2);
-
- return (longValue1 == null || longValue2 == null) ? name1.compareTo(name2) : longValue1.compareTo(longValue2);
- }
- };
-
- private final class CheckStateChangedListener implements ICheckStateListener {
- @Override
- public void checkStateChanged(CheckStateChangedEvent event) {
- saveViewContext();
- if (!fTreeListeners.isEmpty()) {
- Collection<ITmfTreeViewerEntry> entries = getCheckedViewerEntries();
- for (ICheckboxTreeViewerListener listener : fTreeListeners) {
- listener.handleCheckStateChangedEvent(entries);
- }
- refresh();
- }
-
- }
- }
-
- /**
- * Listener to select a range in other viewers when a cell of the segment
- * store table view is selected
- */
- private class TreeViewerSelectionListener implements ISelectionChangedListener {
-
- @Override
- public void selectionChanged(SelectionChangedEvent event) {
- IStructuredSelection selection = event.getStructuredSelection();
- Object entry = selection.getFirstElement();
- if (entry instanceof TmfGenericTreeEntry) {
- ITmfTreeDataModel model = ((TmfGenericTreeEntry<?>) entry).getModel();
- if (model instanceof IElementResolver) {
- Multimap<@NonNull String, @NonNull Object> metadata = ((IElementResolver) model).getMetadata();
- if (!metadata.isEmpty()) {
- TmfSignalManager.dispatchSignal(new TmfDataModelSelectedSignal(AbstractSelectTreeViewer.this, metadata));
- }
- }
- }
- }
- }
-
- /**
- * Base class to provide the labels for the tree viewer. Views extending
- * this class typically need to override the getColumnText method if they
- * have more than one column to display. It also allows to change the font
- * and colors of the cells.
- * @since 6.0
- */
- protected class DataProviderTreeLabelProvider extends TreeLabelProvider {
-
- @Override
- public Image getColumnImage(Object element, int columnIndex) {
- if (columnIndex == fLegendIndex && element instanceof TmfGenericTreeEntry && isChecked(element)) {
- TmfGenericTreeEntry<TmfTreeDataModel> genericEntry = (TmfGenericTreeEntry<TmfTreeDataModel>) element;
- TmfTreeDataModel model = genericEntry.getModel();
- if (model.hasRowModel()) {
- return getLegendImage(genericEntry.getModel().getId());
- }
- }
- return null;
- }
-
-
- @Override
- public String getColumnText(Object element, int columnIndex) {
- if (element instanceof TmfGenericTreeEntry) {
- if (columnIndex == fLegendIndex) {
- return ""; //$NON-NLS-1$
- }
- /* Model should not contain any label for the legend column */
- int index = fLegendIndex < 0 || columnIndex < fLegendIndex ? columnIndex : columnIndex - 1;
- TmfGenericTreeEntry<@NonNull ? extends ITmfTreeDataModel> genericEntry = (TmfGenericTreeEntry<@NonNull ? extends ITmfTreeDataModel>) element;
- ITmfTreeDataModel model = genericEntry.getModel();
- if (index < model.getLabels().size()) {
- return model.getLabels().get(index);
- }
- return ""; //$NON-NLS-1$
- }
- return super.getColumnText(element, columnIndex);
- }
- }
-
- private ILegendImageProvider fLegendImageProvider;
- private Set<ICheckboxTreeViewerListener> fTreeListeners = new HashSet<>();
- private TriStateFilteredCheckboxTree fCheckboxTree;
- private final int fLegendIndex;
-
- /**
- * Constructor
- *
- * @param parent
- * Parent composite
- * @param checkboxTree
- * <code>TriStateFilteredTree</code> wrapping a
- * <code>CheckboxTreeViewer</code>
- * @param legendColumnIndex
- * index of the legend column (-1 if none)
- */
- private AbstractSelectTreeViewer(Composite parent, TriStateFilteredCheckboxTree checkboxTree,
- int legendIndex, String id) {
- super(parent, checkboxTree.getViewer());
-
- TreeViewer treeViewer = checkboxTree.getViewer();
- treeViewer.setAutoExpandLevel(AbstractTreeViewer.ALL_LEVELS);
- treeViewer.setComparator(COMPARATOR);
- if (treeViewer instanceof CheckboxTreeViewer) {
- ((CheckboxTreeViewer) treeViewer).addCheckStateListener(new CheckStateChangedListener());
- }
- treeViewer.addSelectionChangedListener(new TreeViewerSelectionListener());
- checkboxTree.getFilterControl().addModifyListener(e -> saveViewContext());
- fCheckboxTree = checkboxTree;
- fLegendIndex = legendIndex;
- fId = id;
- fLogCategory = fId + LOG_CATEGORY_SUFFIX;
- setLabelProvider(new DataProviderTreeLabelProvider());
- fInstanceId = INSTANCE_ID_SEQUENCE.incrementAndGet();
- }
-
- /**
- * Constructor
- *
- * @param parent
- * Parent composite
- * @param legendIndex
- * index of the legend column (-1 if none)
- * @param id
- * {@link ITmfTreeDataProvider} ID
- */
- public AbstractSelectTreeViewer(Composite parent, int legendIndex, String id) {
- // Create the tree viewer with a filtered checkbox
- this(parent, new TriStateFilteredCheckboxTree(parent,
- SWT.MULTI | SWT.H_SCROLL | SWT.FULL_SELECTION,
- new MultiTreePatternFilter(), true, false), legendIndex, id);
- }
-
- /**
- * Tell the chart viewer to listen to changes in the tree viewer
- *
- * @param listener
- * Chart listening to changes in the tree's selected entries
- * @deprecated As of 6.0, there can be more than one listener for the tree,
- * use {@link #addTreeListener(ICheckboxTreeViewerListener)}
- */
- @Deprecated
- public void setTreeListener(ICheckboxTreeViewerListener listener) {
- addTreeListener(listener);
- }
-
- /**
- * Add a listener to changes in the tree viewer
- *
- * @param listener
- * Listener for changes in the tree's selected entries
- * @since 6.0
- */
- public void addTreeListener(ICheckboxTreeViewerListener listener) {
- fTreeListeners.add(listener);
- }
-
- /**
- * Remove a listener from this tree viewer
- *
- * @param listener
- * The listener to remove
- * @since 6.0
- */
- public void removeTreeListener(ICheckboxTreeViewerListener listener) {
- fTreeListeners.remove(listener);
- }
-
- /**
- * Set the legend image provider (provider tree cells with an image).
- *
- * @param legendImageProvider
- * Provides an image legend associated with a name
- */
- public void setLegendImageProvider(ILegendImageProvider legendImageProvider) {
- fLegendImageProvider = legendImageProvider;
- }
-
- /**
- * Return the checked state of an element
- *
- * @param element
- * the element
- * @return if the element is checked
- */
- public boolean isChecked(Object element) {
- return fCheckboxTree.getChecked(element);
- }
-
- /**
- * Select previously checked entries when going back to trace.
- */
- @Override
- protected void contentChanged(ITmfTreeViewerEntry rootEntry) {
- ITmfTrace trace = getTrace();
- if (trace == null) {
- return;
- }
- TmfTraceContext ctx = TmfTraceManager.getInstance().getTraceContext(trace);
- Set<Long> ids = (Set<Long>) ctx.getData(getDataContextId(CHECKED_ELEMENTS));
- if (ids != null && rootEntry != null) {
- List<ITmfTreeViewerEntry> checkedElements = new ArrayList<>();
- checkEntries(ids, rootEntry, checkedElements);
- internalSetCheckedElements(checkedElements.toArray());
- }
- Object filterString = ctx.getData(getDataContextId(FILTER_STRING));
- if (filterString instanceof String) {
- fCheckboxTree.setFilterText((String) filterString);
- } else {
- fCheckboxTree.setFilterText(""); //$NON-NLS-1$
- }
-
- getTreeViewer().refresh();
- }
-
- /**
- * Checks all the passed elements and unchecks all the other.
- *
- * @param checkedElements
- * the elements to check
- * @since 6.0
- */
- protected void setCheckedElements(Object[] checkedElements) {
- internalSetCheckedElements(checkedElements);
- getTreeViewer().refresh();
- }
-
- private void internalSetCheckedElements(Object[] checkedElements) {
- fCheckboxTree.setCheckedElements(checkedElements);
- saveViewContext();
- for (ICheckboxTreeViewerListener listener : fTreeListeners) {
- listener.handleCheckStateChangedEvent(getCheckedViewerEntries());
- }
- }
-
- private Collection<ITmfTreeViewerEntry> getCheckedViewerEntries() {
- Object[] checkedElements = fCheckboxTree.getCheckedElements();
- return Lists.newArrayList(Iterables.filter(Arrays.asList(checkedElements), ITmfTreeViewerEntry.class));
- }
-
- /**
- * Recursively find entries which were previously checked and check them again
- * by id.
- *
- * @param ids
- * Set of previously checked IDs
- * @param root
- * {@link ITmfTreeViewerEntry} to compare to the set of checked
- * entries
- * @param checkedElements
- * list of checked entries to which we add the root entry if it was
- * previously checked
- */
- private void checkEntries(Set<Long> ids, ITmfTreeViewerEntry root, List<ITmfTreeViewerEntry> checkedElements) {
- if (root instanceof TmfGenericTreeEntry
- && ids.contains(((TmfGenericTreeEntry) root).getModel().getId())) {
- checkedElements.add(root);
- }
- for (ITmfTreeViewerEntry child : root.getChildren()) {
- checkEntries(ids, child, checkedElements);
- }
- }
-
- @Override
- @TmfSignalHandler
- public void traceOpened(TmfTraceOpenedSignal signal) {
- saveViewContext();
- restorePatternFilter(signal.getTrace());
- fCheckboxTree.setCheckedElements(new Object[0]);
- super.traceOpened(signal);
- }
-
- @Override
- @TmfSignalHandler
- public void traceSelected(TmfTraceSelectedSignal signal) {
- if (getTrace() != signal.getTrace()) {
- saveViewContext();
- restorePatternFilter(signal.getTrace());
- fCheckboxTree.setCheckedElements(new Object[0]);
- }
- super.traceSelected(signal);
- }
-
- @Override
- public void reset() {
- fCheckboxTree.setCheckedElements(new Object[0]);
- fCheckboxTree.setFilterText(""); //$NON-NLS-1$
- super.reset();
- }
-
- @Override
- protected void updateContent(long start, long end, boolean isSelection) {
- try (FlowScopeLog scope = new FlowScopeLogBuilder(LOGGER, Level.FINE, UPDATE_CONTENT_JOB_NAME)
- .setCategory(fLogCategory).build()) {
- ITmfTrace trace = getTrace();
- if (trace == null) {
- return;
- }
- Job thread = new Job(UPDATE_CONTENT_JOB_NAME) {
- @Override
- public IStatus run(IProgressMonitor monitor) {
- try (FlowScopeLog runScope = new FlowScopeLogBuilder(LOGGER, Level.FINE, UPDATE_CONTENT_JOB_NAME + " run") //$NON-NLS-1$
- .setParentScope(scope).build()) {
-
- ITmfTreeDataProvider<@NonNull ITmfTreeDataModel> provider = getProvider(trace);
- if (provider == null) {
- return Status.OK_STATUS;
- }
-
- Map<String, Object> parameters = getParameters(start, end, isSelection);
- if (parameters.isEmpty()) {
- return Status.OK_STATUS;
- }
-
- boolean isComplete = false;
- do {
- TmfModelResponse<@NonNull TmfTreeModel<@NonNull ITmfTreeDataModel>> response;
- try (FlowScopeLog iterScope = new FlowScopeLogBuilder(LOGGER, Level.FINE, UPDATE_CONTENT_JOB_NAME + " query") //$NON-NLS-1$
- .setParentScope(scope).build()) {
-
- response = provider.fetchTree(parameters, monitor);
- TmfTreeModel<@NonNull ITmfTreeDataModel> model = response.getModel();
- if (model != null) {
- updateTree(trace, start, end, model.getEntries());
- }
- }
-
- ITmfResponse.Status status = response.getStatus();
- if (status == ITmfResponse.Status.COMPLETED) {
- /* Model is complete, no need to request again the data provider */
- isComplete = true;
- } else if (status == ITmfResponse.Status.FAILED || status == ITmfResponse.Status.CANCELLED) {
- /* Error occurred, return */
- isComplete = true;
- } else {
- /**
- * Status is RUNNING. Sleeping current thread to wait before request data
- * provider again
- **/
- try {
- Thread.sleep(BUILD_UPDATE_TIMEOUT);
- } catch (InterruptedException e) {
- /**
- * InterruptedException is throw by Thread.Sleep and we should retry querying
- * the data provider
- **/
- runScope.addData(FAILED_TO_SLEEP_PREFIX + getName(), e);
- Thread.currentThread().interrupt();
- return new Status(IStatus.ERROR, Activator.PLUGIN_ID, FAILED_TO_SLEEP_PREFIX + getName());
- }
- }
- } while (!isComplete);
-
- return Status.OK_STATUS;
- }
- }
- };
- thread.setSystem(true);
- thread.schedule();
- }
- }
-
- private void updateTree(ITmfTrace trace, long start, long end, List<@NonNull ITmfTreeDataModel> model) {
- try (FlowScopeLog parentScope = new FlowScopeLogBuilder(LOGGER, Level.FINE, "AbstractSelectTreeViewer:TreeUpdateRequested" ) //$NON-NLS-1$
- .setCategory(fLogCategory).build()) {
- final TmfTreeViewerEntry rootEntry = getRoot(trace);
- /*
- * To avoid breaking API, get the new tree model root and reassign
- * its children to the trace's fixed root after clearing it.
- */
- final ITmfTreeViewerEntry newTreeModel = modelToTree(start, end, model);
- if (rootEntry != null && newTreeModel != null) {
- synchronized (rootEntry) {
- rootEntry.getChildren().clear();
- newTreeModel.getChildren().forEach(child -> rootEntry.addChild((TmfTreeViewerEntry) child));
- }
- Display.getDefault().asyncExec(() -> {
- try (FlowScopeLog scope = new FlowScopeLogBuilder(LOGGER, Level.FINE, "AbstractSelectTreeViewer:TreeUpdate").setParentScope(parentScope).build()) { //$NON-NLS-1$
-
- if (!trace.equals(getTrace())) {
- return;
- }
- TreeViewer treeViewer = getTreeViewer();
- if (treeViewer.getControl().isDisposed()) {
- return;
- }
-
- Object currentRootEntry = treeViewer.getInput();
- updateTreeUI(treeViewer, rootEntry);
- if (rootEntry != currentRootEntry) {
- // FIXME should add a bit of padding
- for (TreeColumn column : treeViewer.getTree().getColumns()) {
- column.pack();
- }
- }
- }
- });
- }
- }
- }
-
- /**
- * Save the checked entries' ID in the view context before changing trace and
- * check them again in the new tree.
- */
- private void saveViewContext() {
- ITmfTrace previousTrace = getTrace();
- if (previousTrace != null) {
- Object[] checkedElements = fCheckboxTree.getCheckedElements();
- Set<Long> ids = new HashSet<>();
- for (Object checkedElement : checkedElements) {
- if (checkedElement instanceof TmfGenericTreeEntry) {
- ids.add(((TmfGenericTreeEntry) checkedElement).getModel().getId());
- }
- }
- Text filterControl = fCheckboxTree.getFilterControl();
- String filterString = filterControl != null ? filterControl.getText() : null;
- TmfTraceManager.getInstance().updateTraceContext(previousTrace,
- builder -> builder.setData(getDataContextId(CHECKED_ELEMENTS), ids)
- .setData(getDataContextId(FILTER_STRING), filterString));
- }
- }
-
- private @NonNull String getDataContextId(String baseKey) {
- return getClass().getName() + SEP + fInstanceId + baseKey;
- }
-
- private void restorePatternFilter(ITmfTrace trace) {
- if (trace == null) {
- fCheckboxTree.getPatternFilter().setPattern(null);
- return;
- }
- TmfTraceContext ctx = TmfTraceManager.getInstance().getTraceContext(trace);
- Object filterString = ctx.getData(getClass() + FILTER_STRING);
- if (filterString instanceof String) {
- fCheckboxTree.getPatternFilter().setPattern((String) filterString);
- } else {
- fCheckboxTree.getPatternFilter().setPattern(null);
- }
- }
-
- /**
- * Get the legend image for a entry's name
- *
- * @param name
- * the entry's name (used in both Tree and Chart viewer
- * @return the correctly dimensioned image if there is a legend image provider
- */
- protected Image getLegendImage(@NonNull String name) {
- /* If the image height match the row height, row height will increment */
- ILegendImageProvider legendImageProvider = fLegendImageProvider;
- int legendColumnIndex = fLegendIndex;
- if (legendImageProvider != null && legendColumnIndex >= 0) {
- Tree tree = getTreeViewer().getTree();
- int imageWidth = tree.getColumn(legendColumnIndex).getWidth();
- int imageHeight = tree.getItemHeight() - 1;
- if (imageHeight > 0 && imageWidth > 0) {
- return legendImageProvider.getLegendImage(imageHeight, imageWidth, name);
- }
- }
- return null;
- }
-
- /**
- * Get the legend image for a entry's ID
- *
- * @param id
- * the entry's unique ID
- * @return the correctly dimensioned image if there is a legend image provider
- * @since 6.0
- */
- protected Image getLegendImage(@NonNull Long id) {
- /* If the image height match the row height, row height will increment */
- ILegendImageProvider legendImageProvider = fLegendImageProvider;
- int legendColumnIndex = fLegendIndex;
- if (legendImageProvider != null && legendColumnIndex >= 0) {
- Tree tree = getTreeViewer().getTree();
- int imageWidth = tree.getColumn(legendColumnIndex).getWidth();
- int imageHeight = tree.getItemHeight() - 1;
- if (imageHeight > 0 && imageWidth > 0) {
- return legendImageProvider.getLegendImage(imageHeight, imageWidth, id);
- }
- }
- return null;
- }
-
- @Override
- protected ITmfTreeViewerEntry updateElements(ITmfTrace trace, long start, long end, boolean isSelection) {
- throw new UnsupportedOperationException("This method should not be called for AbstractSelectTreeViewers"); //$NON-NLS-1$
- }
-
- /**
- * Getter for the {@link ITmfTreeDataProvider} to query for this TreeViewer
- *
- * @param trace the trace
- * @return the relevant provider, if any
- * @since 4.0
- */
- protected ITmfTreeDataProvider<@NonNull ITmfTreeDataModel> getProvider(@NonNull ITmfTrace trace) {
- return DataProviderManager.getInstance().getDataProvider(trace, fId, ITmfTreeDataProvider.class);
- }
-
- @Override
- protected void initializeDataSource(@NonNull ITmfTrace trace) {
- getProvider(trace);
- }
-
- /**
- * Get the map to query the {@link ITmfTreeDataProvider} for the queried
- * parameters
- *
- * @param start
- * query start time
- * @param end
- * query end time
- * @param isSelection
- * if the query is a selection
- * @return the resulting query parameters
- * @since 5.0
- */
- protected @NonNull Map<String, Object> getParameters(long start, long end, boolean isSelection) {
- return FetchParametersUtils.timeQueryToMap(new TimeQueryFilter(Long.min(start, end), Long.max(start, end), 2));
- }
-
- /**
- * Algorithm to convert a model (List of {@link TmfTreeDataModel}) to the tree.
- *
- * @param start
- * queried start time
- * @param end
- * queried end time
- * @param model
- * model to convert
- * @return the resulting {@link TmfTreeViewerEntry}.
- */
- protected ITmfTreeViewerEntry modelToTree(long start, long end, List<ITmfTreeDataModel> model) {
- TmfTreeViewerEntry root = new TmfTreeViewerEntry(StringUtils.EMPTY);
-
- Map<Long, TmfTreeViewerEntry> map = new HashMap<>();
- map.put(-1L, root);
- for (ITmfTreeDataModel entry : model) {
- TmfGenericTreeEntry<ITmfTreeDataModel> viewerEntry = new TmfGenericTreeEntry<>(entry);
- map.put(entry.getId(), viewerEntry);
-
- TmfTreeViewerEntry parent = map.get(entry.getParentId());
- if (parent != null && !parent.getChildren().contains(viewerEntry)) {
- parent.addChild(viewerEntry);
- }
- }
- return root;
- }
-
- /**
- * Create a sortable column
- *
- * @param text
- * column label
- * @param comparator
- * comparator to sort {@link TmfGenericTreeEntry}s
- * @return the comparator
- */
- protected static <T extends TmfGenericTreeEntry<? extends TmfTreeDataModel>>
- @NonNull TmfTreeColumnData createColumn(String text, Comparator<T> comparator) {
- TmfTreeColumnData column = new TmfTreeColumnData(text);
- column.setComparator(new ViewerComparator() {
- @Override
- public int compare(Viewer viewer, Object e1, Object e2) {
- return comparator.compare((T) e1, (T) e2);
- }
- });
- return column;
- }
-
- /**
- * Get the full path of the entry, from the trace to itself, to query the
- * presentation provider.
- *
- * @param entry
- * entry whose legend needs to be resolved.
- * @return the relevant series name.
- * @deprecated The ID should be used to query the presentation provider
- * instead of the full path
- */
- @Deprecated
- protected static @NonNull String getFullPath(TmfGenericTreeEntry<TmfTreeDataModel> entry) {
- StringBuilder path = new StringBuilder(entry.getName());
- ITmfTreeViewerEntry parent = entry.getParent();
- while (parent instanceof TmfGenericTreeEntry) {
- path.insert(0, parent.getName() + '/');
- parent = parent.getParent();
- }
- return path.toString();
- }
-
- /**
- * Get the checkbox tree in this viewer.
- *
- * @return the checkbox tree.
- * @since 4.0
- */
- public TriStateFilteredCheckboxTree getTriStateFilteredCheckboxTree() {
- return fCheckboxTree;
- }
-
-}
diff --git a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/tree/AbstractSelectTreeViewer2.java b/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/tree/AbstractSelectTreeViewer2.java
index ea2fe56..e469ca5 100644
--- a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/tree/AbstractSelectTreeViewer2.java
+++ b/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/tree/AbstractSelectTreeViewer2.java
@@ -251,19 +251,6 @@
}
/**
- * Tell the chart viewer to listen to changes in the tree viewer
- *
- * @param listener
- * Chart listening to changes in the tree's selected entries
- * @deprecated As of 6.0, there can be more than one listener for the tree,
- * use {@link #addTreeListener(ICheckboxTreeViewerListener)}
- */
- @Deprecated
- public void setTreeListener(ICheckboxTreeViewerListener listener) {
- addTreeListener(listener);
- }
-
- /**
* Add a listener to changes in the tree viewer
*
* @param listener
@@ -677,27 +664,6 @@
}
/**
- * Get the full path of the entry, from the trace to itself, to query the
- * presentation provider.
- *
- * @param entry
- * entry whose legend needs to be resolved.
- * @return the relevant series name.
- * @deprecated The ID should be used to query the presentation provider
- * instead of the full path
- */
- @Deprecated
- protected static @NonNull String getFullPath(TmfGenericTreeEntry<TmfTreeDataModel> entry) {
- StringBuilder path = new StringBuilder(entry.getName());
- ITmfTreeViewerEntry parent = entry.getParent();
- while (parent instanceof TmfGenericTreeEntry) {
- path.insert(0, parent.getName() + '/');
- parent = parent.getParent();
- }
- return path.toString();
- }
-
- /**
* Get the checkbox tree in this viewer.
*
* @return the checkbox tree.
diff --git a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xychart/linechart/TmfCommonXLineChartTooltipProvider.java b/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xychart/linechart/TmfCommonXLineChartTooltipProvider.java
index 83f6500..9802a3f 100644
--- a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xychart/linechart/TmfCommonXLineChartTooltipProvider.java
+++ b/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xychart/linechart/TmfCommonXLineChartTooltipProvider.java
@@ -19,7 +19,6 @@
import java.util.List;
import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.events.MouseTrackListener;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.RGBA;
@@ -42,7 +41,7 @@
*
* @since 6.0
*/
-public class TmfCommonXLineChartTooltipProvider extends TmfBaseProvider implements MouseTrackListener {
+public class TmfCommonXLineChartTooltipProvider extends TmfBaseProvider {
private final class XYToolTipHandler extends TmfAbstractToolTipHandler {
private static final String HTML_COLOR_TOOLTIP = "<span style=\"color:%s;\">%s</span>"; //$NON-NLS-1$
@@ -143,35 +142,4 @@
public void refresh() {
// nothing to do
}
-
- // ------------------------------------------------------------------------
- // MouseTrackListener
- // ------------------------------------------------------------------------
-
- /**
- * @deprecated, do not extend, use as-is
- */
- @Deprecated
- @Override
- public void mouseEnter(MouseEvent e) {
- // do nothing
- }
-
- /**
- * @deprecated, do not extend, use as-is
- */
- @Deprecated
- @Override
- public void mouseExit(MouseEvent e) {
- // do nothing
- }
-
- /**
- * @deprecated, do not extend, use as-is
- */
- @Deprecated
- @Override
- public void mouseHover(MouseEvent e) {
- // do nothing
- }
}
diff --git a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xycharts/AxisRange.java b/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xycharts/AxisRange.java
deleted file mode 100644
index 5c687f9..0000000
--- a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xycharts/AxisRange.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2019 Draeger, Auriga
- *
- * All rights reserved. This program and the accompanying materials are
- * made available under the terms of the Eclipse Public License 2.0 which
- * accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- **********************************************************************/
-package org.eclipse.tracecompass.tmf.ui.viewers.xycharts;
-
-/**
- * Axis range with minimum and maximum values.
- *
- * @author Ivan Grinenko
- * @since 5.2
- * @deprecated use {@link org.eclipse.tracecompass.tmf.ui.viewers.xychart.AxisRange}
- *
- */
-@Deprecated
-public class AxisRange {
-
- private final double fLower;
- private final double fUpper;
-
- /**
- * Constructor
- *
- * @param start
- * starting value of the range
- * @param end
- * ending value of the range
- */
- public AxisRange(double start, double end) {
- fLower = (end > start) ? start : end;
- fUpper = (end > start) ? end : start;
- }
-
- /**
- * Gets the lower value of the range.
- *
- * @return The lower value of the range.
- */
- public double getLower() {
- return fLower;
- }
-
- /**
- * Gets the upper value of the range.
- *
- * @return The upper value of the range.
- */
- public double getUpper() {
- return fUpper;
- }
-
- @Override
- public String toString() {
- return String.format("AxisRange[%f, %f]", getLower(), getUpper()); //$NON-NLS-1$
- }
-
-}
diff --git a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xycharts/ITmfChartTimeProvider.java b/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xycharts/ITmfChartTimeProvider.java
deleted file mode 100644
index 6a5e3fa..0000000
--- a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xycharts/ITmfChartTimeProvider.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2013, 2014 Ericsson, École Polytechnique de Montréal
- *
- * All rights reserved. This program and the accompanying materials are
- * made available under the terms of the Eclipse Public License 2.0 which
- * accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Bernd Hufmann - Initial API and implementation
- * Geneviève Bastien - Moved some methods to ITmfTimeProvider
- **********************************************************************/
-package org.eclipse.tracecompass.tmf.ui.viewers.xycharts;
-
-import org.eclipse.tracecompass.tmf.ui.viewers.ITmfTimeProvider;
-
-/**
- * Interface adding some methods specific for SWT charts to the base time
- * provider interface. Typically, the time will be shown on the x-axis.
- *
- * @author Bernd Hufmann
- * @deprecated use {@link org.eclipse.tracecompass.tmf.ui.viewers.xychart.ITmfChartTimeProvider}
- */
-@Deprecated
-public interface ITmfChartTimeProvider extends ITmfTimeProvider {
-
- /**
- * Returns a constant time offset that is used to normalize the time values
- * to a range of 0..53 bits to avoid loss of precision when converting long
- * <-> double.
- *
- * Time values are stored in TMF as long values. The SWT chart library uses
- * values of type double (on x and y axis). To avoid loss of precision when
- * converting long <-> double the values need to fit within 53 bits.
- *
- * Subtract the offset when using time values provided externally for
- * internal usage in SWT chart. Add the offset when using time values
- * provided by SWT chart (e.g. for display purposes) and when broadcasting
- * them externally (e.g. time synchronization signals).
- *
- * For example the offset can be calculated as the time of the first time
- * value in the current time range to be displayed in the chart. Add +1 to
- * avoid 0 when using logarithmic scale.
- *
- * t0=10000, t2=20000, tn=N -> timeOffset=t0-1 -> t0'=1, t1'=10001,
- * tn'=N-timeOffset
- *
- * where t0 ... tn are times used externally and t0' ... tn' are times used
- * internally by the SWT chart.
- *
- * @return the time offset
- */
- long getTimeOffset();
-
-}
diff --git a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xycharts/TmfBaseProvider.java b/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xycharts/TmfBaseProvider.java
deleted file mode 100644
index af9d315..0000000
--- a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xycharts/TmfBaseProvider.java
+++ /dev/null
@@ -1,146 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2013, 2019 Ericsson
- *
- * All rights reserved. This program and the accompanying materials are
- * made available under the terms of the Eclipse Public License 2.0 which
- * accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Bernd Hufmann - Initial API and implementation
- **********************************************************************/
-package org.eclipse.tracecompass.tmf.ui.viewers.xycharts;
-
-import org.eclipse.tracecompass.internal.tmf.ui.viewers.xycharts.TmfXyUiUtils;
-import org.swtchart.Chart;
-import org.swtchart.IAxis;
-
-/**
- * Base class for any provider such as tool tip, zoom and selection providers.
- *
- * @author Bernd Hufmann
- * @deprecated use {@link org.eclipse.tracecompass.tmf.ui.viewers.xychart.TmfBaseProvider}
- */
-@Deprecated
-public abstract class TmfBaseProvider {
-
- // ------------------------------------------------------------------------
- // Attributes
- // ------------------------------------------------------------------------
- /** Reference to the chart viewer */
- private final ITmfChartTimeProvider fChartViewer;
-
- // ------------------------------------------------------------------------
- // Constructors
- // ------------------------------------------------------------------------
-
- /**
- * Standard constructor.
- *
- * @param tmfChartViewer
- * The parent histogram object
- */
- public TmfBaseProvider(ITmfChartTimeProvider tmfChartViewer) {
- fChartViewer = tmfChartViewer;
- }
-
- // ------------------------------------------------------------------------
- // Accessors
- // ------------------------------------------------------------------------
- /**
- * Returns the chart viewer reference.
- * @return the chart viewer reference
- */
- public ITmfChartTimeProvider getChartViewer() {
- return fChartViewer;
- }
-
- /**
- * Returns the SWT chart reference
- *
- * @return SWT chart reference.
- */
- protected Chart getChart() {
- return (Chart) fChartViewer.getControl();
- }
-
- /**
- * Limits x data coordinate to window start and window end range
- *
- * @param x
- * x to limit
- * @return x if x >= begin && x <= end
- * begin if x < begin
- * end if x > end
- */
- protected long limitXDataCoordinate(double x) {
- return TmfXyUiUtils.limitXDataCoordinate(getChartViewer(), x);
- }
-
- /**
- * Limits x pixel coordinate to window start and window end range
- *
- * @param axisIndex
- * index of x-axis
- * @param x
- * x to limit
- * @return x if x >= begin && x <= end
- * begin if x < begin
- * end if x > end
- */
- protected int limitXPixelCoordinate(int axisIndex, int x) {
- ITmfChartTimeProvider viewer = getChartViewer();
- long windowStartTime = viewer.getWindowStartTime() - viewer.getTimeOffset();
- long windowEndTime = viewer.getWindowEndTime() - viewer.getTimeOffset();
-
- IAxis xAxis = getChart().getAxisSet().getXAxis(0);
- int startX = xAxis.getPixelCoordinate(windowStartTime);
- if (x < startX) {
- return startX;
- }
-
- int endX = xAxis.getPixelCoordinate(windowEndTime);
- if (x > endX) {
- return endX;
- }
-
- return x;
- }
-
- // ------------------------------------------------------------------------
- // Operations
- // ------------------------------------------------------------------------
- /**
- * Method deregisters provider from chart viewer. Subclasses may override this method
- * to dispose any resources.
- */
- public void dispose() {
- deregister();
- }
-
- /**
- * Method to refresh the viewer. It will redraw the viewer.
- */
- public void refresh() {
- if (!TmfXYChartViewer.getDisplay().isDisposed()) {
- TmfXYChartViewer.getDisplay().asyncExec(() -> {
- if (!getChart().isDisposed()) {
- getChart().redraw();
- }
- });
- }
- }
-
- /**
- * Method to register the provider to chart viewer.
- */
- protected abstract void register();
-
- /**
- * Method to deregister the provider from chart viewer.
- */
- protected abstract void deregister();
-
-}
\ No newline at end of file
diff --git a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xycharts/TmfChartTimeStampFormat.java b/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xycharts/TmfChartTimeStampFormat.java
deleted file mode 100644
index 0ddfbf4..0000000
--- a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xycharts/TmfChartTimeStampFormat.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2013, 2014 Ericsson
- *
- * All rights reserved. This program and the accompanying materials are
- * made available under the terms of the Eclipse Public License 2.0 which
- * accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Bernd Hufmann - Initial API and implementation
- **********************************************************************/
-package org.eclipse.tracecompass.tmf.ui.viewers.xycharts;
-
-import java.text.FieldPosition;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-
-import org.eclipse.tracecompass.tmf.core.timestamp.TmfTimestampFormat;
-
-/**
- * SimpleDateFormat class for displaying time information in SWT charts
- * using the TmfTimestampFormat class.
- *
- * @author Bernd Hufmann
- * @deprecated use {@link org.eclipse.tracecompass.tmf.ui.viewers.xychart.TmfChartTimeStampFormat}
- */
-@Deprecated
-public class TmfChartTimeStampFormat extends SimpleDateFormat {
-
- // ------------------------------------------------------------------------
- // Constants
- // ------------------------------------------------------------------------
- private static final long serialVersionUID = 3719743469686142387L;
-
- // ------------------------------------------------------------------------
- // Attributes
- // ------------------------------------------------------------------------
- private long fOffset;
-
- // ------------------------------------------------------------------------
- // Constructors
- // ------------------------------------------------------------------------
- /**
- * Standard Constructor
- *
- * @param offset
- * offset to apply before formatting time (time = time + offset)
- */
- public TmfChartTimeStampFormat(long offset) {
- fOffset = offset;
- }
-
- // ------------------------------------------------------------------------
- // Operations
- // ------------------------------------------------------------------------
- @Override
- public StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition) {
-
- long time = date.getTime() + fOffset;
- toAppendTo.append(TmfTimestampFormat.getDefaulTimeFormat().format(time));
- return toAppendTo;
- }
-
-}
diff --git a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xycharts/TmfClosestDataPointTooltipProvider.java b/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xycharts/TmfClosestDataPointTooltipProvider.java
deleted file mode 100644
index 9b0488e..0000000
--- a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xycharts/TmfClosestDataPointTooltipProvider.java
+++ /dev/null
@@ -1,288 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2015 Ericsson
- *
- * All rights reserved. This program and the accompanying materials are
- * made available under the terms of the Eclipse Public License 2.0 which
- * accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Bernd Hufmann - Initial API and implementation
- **********************************************************************/
-package org.eclipse.tracecompass.tmf.ui.viewers.xycharts;
-
-import java.util.Collections;
-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.SWT;
-import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.events.MouseMoveListener;
-import org.eclipse.swt.events.PaintEvent;
-import org.eclipse.swt.events.PaintListener;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.tracecompass.tmf.core.timestamp.ITmfTimestamp;
-import org.eclipse.tracecompass.tmf.core.timestamp.TmfTimestamp;
-import org.eclipse.tracecompass.tmf.ui.viewers.TmfAbstractToolTipHandler;
-import org.swtchart.Chart;
-import org.swtchart.IAxis;
-import org.swtchart.ISeries;
-
-/**
- * Abstract tooltip provider for xy chart viewers. It displays the y value and y
- * value of the data point of the mouse position. Extending classes can provide
- * a custom tooltip text.
- *
- * @author Bernd Hufmann
- * @since 2.0
- * @deprecated use {@link org.eclipse.tracecompass.tmf.ui.viewers.xychart.TmfClosestDataPointTooltipProvider}
- */
-@Deprecated
-public class TmfClosestDataPointTooltipProvider extends TmfBaseProvider implements MouseMoveListener, PaintListener {
-
- private static final @NonNull String OLD_TOOLTIP = ""; //$NON-NLS-1$
-
- private final class XYToolTipHandler extends TmfAbstractToolTipHandler {
- @Override
- public void fill(Control control, MouseEvent e, Point pt) {
- if ((getChartViewer().getWindowDuration() != 0) && (e != null)) {
- Chart chart = getChart();
- IAxis xAxis = chart.getAxisSet().getXAxis(0);
- IAxis yAxis = chart.getAxisSet().getYAxis(0);
-
- ISeries[] series = chart.getSeriesSet().getSeries();
-
- double smallestDistance = Double.MAX_VALUE;
- Parameter param = null;
-
- // go over all series
- for (int k = 0; k < series.length; k++) {
- ISeries serie = series[k];
- double[] xS = serie.getXSeries();
- double[] yS = serie.getYSeries();
-
- if ((xS == null) || (yS == null)) {
- continue;
- }
- // go over all data points
- for (int i = 0; i < xS.length; i++) {
- int xs = xAxis.getPixelCoordinate(xS[i]) - e.x;
- int ys = yAxis.getPixelCoordinate(yS[i]) - e.y;
- double currentDistance = xs * xs + ys * ys;
-
- /*
- * Check for smallest distance to mouse position and
- * only consider it if the mouse is close the data
- * point.
- */
- if ((currentDistance < smallestDistance) && (currentDistance < (HIGHLIGHT_RADIUS * HIGHLIGHT_RADIUS))) {
- smallestDistance = currentDistance;
- fHighlightX = xs + e.x;
- fHighlightY = ys + e.y;
- if (param == null) {
- param = new Parameter();
- }
- param.setSeriesIndex(k);
- param.setDataIndex(i);
- }
- }
- }
- Map<String, Map<String, Object>> tooltip = null;
- if (param != null) {
- tooltip = createToolTipMap(param);
- if (tooltip == null) {
- return;
- }
- fIsHighlight = true;
- chart.redraw();
- }
- if (tooltip == null) {
- return;
- }
- /*
- * Note that tooltip might be null which will clear the previous
- * tooltip string. This is intentional.
- */
- for (Entry<String, Map<String, Object>> entry : tooltip.entrySet()) {
- ToolTipString category = entry.getKey().isEmpty() || entry.getKey().equals(OLD_TOOLTIP) ? null : ToolTipString.fromString(entry.getKey());
- for (Entry<String, Object> secondEntry : entry.getValue().entrySet()) {
-
- Object value = secondEntry.getValue();
- String key = secondEntry.getKey();
- if (value instanceof Number) {
- addItem(category, ToolTipString.fromString(key), ToolTipString.fromDecimal((Number) value));
- } else if (value instanceof ITmfTimestamp) {
- addItem(category, ToolTipString.fromString(key), ToolTipString.fromTimestamp(String.valueOf(value), ((ITmfTimestamp) value).toNanos()));
- } else {
- addItem(category, ToolTipString.fromString(key), ToolTipString.fromString(String.valueOf(value)));
- }
- }
- }
- }
- }
- }
-
- // ------------------------------------------------------------------------
- // Constants
- // ------------------------------------------------------------------------
- private static final int ALPHA = 128;
- private static final int HIGHLIGHT_RADIUS = 5;
-
- // ------------------------------------------------------------------------
- // Attributes
- // ------------------------------------------------------------------------
- /** X coordinate for highlighting */
- private int fHighlightX;
- /** y coordinate for highlighting */
- private int fHighlightY;
- /** Flag to do highlighting or not */
- private boolean fIsHighlight;
- /** Tooltip handler */
- private TmfAbstractToolTipHandler fTooltipHandler = new XYToolTipHandler();
-
- // ------------------------------------------------------------------------
- // Constructors
- // ------------------------------------------------------------------------
- /**
- * Constructor for a tool tip provider.
- *
- * @param tmfChartViewer
- * - the parent chart viewer
- */
- public TmfClosestDataPointTooltipProvider(ITmfChartTimeProvider tmfChartViewer) {
- super(tmfChartViewer);
- register();
- }
-
- // ------------------------------------------------------------------------
- // TmfBaseProvider
- // ------------------------------------------------------------------------
- @Override
- public void register() {
- Chart chart = getChart();
- chart.getPlotArea().addMouseMoveListener(this);
- chart.getPlotArea().addPaintListener(this);
- fTooltipHandler.activateHoverHelp(chart.getPlotArea());
- }
-
- @Override
- public void deregister() {
-
- Chart chart = getChart();
- if ((chart != null) && !chart.isDisposed()) {
- chart.getPlotArea().removeMouseMoveListener(this);
- chart.getPlotArea().removePaintListener(this);
- fTooltipHandler.deactivateHoverHelp(chart.getPlotArea());
- }
- }
-
- @Override
- public void refresh() {
- // nothing to do
- }
-
- // ------------------------------------------------------------------------
- // MouseMoveListener
- // ------------------------------------------------------------------------
- @Override
- public void mouseMove(@Nullable MouseEvent e) {
- if (fIsHighlight) {
- fIsHighlight = false;
- getChart().redraw();
- }
- }
-
- // ------------------------------------------------------------------------
- // PaintListener
- // ------------------------------------------------------------------------
-
- @Override
- public void paintControl(PaintEvent e) {
- if (fIsHighlight && e != null) {
- e.gc.setBackground(Display.getDefault().getSystemColor(
- SWT.COLOR_RED));
- e.gc.setAlpha(ALPHA);
-
- e.gc.fillOval(fHighlightX - HIGHLIGHT_RADIUS, fHighlightY - HIGHLIGHT_RADIUS,
- 2 * HIGHLIGHT_RADIUS, 2 * HIGHLIGHT_RADIUS);
- }
- }
-
- /**
- * Creates the tooltip based on the given parameter.
- *
- * @param param
- * parameter to create the tooltip string
- * @return the tooltip map based on the given parameter. The Map<String,
- * Map<String, Object>> can be seen as a table. The first element is
- * the category, the second is the key, third is the value.
- * @since 5.0
- */
- protected @Nullable Map<@NonNull String, @NonNull Map<@NonNull String, @NonNull Object>> createToolTipMap(@NonNull Parameter param) {
- ISeries[] series = getChart().getSeriesSet().getSeries();
- int seriesIndex = param.getSeriesIndex();
- int dataIndex = param.getDataIndex();
- if ((series != null) && (seriesIndex < series.length)) {
- ISeries serie = series[seriesIndex];
- double[] xS = serie.getXSeries();
- double[] yS = serie.getYSeries();
- if ((xS != null) && (yS != null) && (dataIndex < xS.length) && (dataIndex < yS.length)) {
- StringBuilder buffer = new StringBuilder();
- buffer.append("x="); //$NON-NLS-1$
- buffer.append(TmfTimestamp.fromNanos((long) xS[dataIndex] + getChartViewer().getTimeOffset()).toString());
- buffer.append('\n');
- buffer.append("y="); //$NON-NLS-1$
- buffer.append((long) yS[dataIndex]);
- return Collections.singletonMap(OLD_TOOLTIP, Collections.singletonMap(OLD_TOOLTIP, buffer.toString()));
- }
- }
- return null;
- }
-
- /**
- * Parameter class
- */
- protected static class Parameter {
- /* A series index */
- private int seriesIndex;
- /* A data point index within a series */
- private int dataIndex;
-
- /**
- * @return the series index
- */
- public int getSeriesIndex() {
- return seriesIndex;
- }
-
- /**
- * @param seriesIndex
- * index the seriesIndex to set
- */
- public void setSeriesIndex(int seriesIndex) {
- this.seriesIndex = seriesIndex;
- }
-
- /**
- * @return the data index
- */
- public int getDataIndex() {
- return dataIndex;
- }
-
- /**
- * @param dataIndex
- * the data index to set
- */
- public void setDataIndex(int dataIndex) {
- this.dataIndex = dataIndex;
- }
-
- }
-}
\ No newline at end of file
diff --git a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xycharts/TmfMouseDragProvider.java b/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xycharts/TmfMouseDragProvider.java
deleted file mode 100644
index fc12a08..0000000
--- a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xycharts/TmfMouseDragProvider.java
+++ /dev/null
@@ -1,141 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2014 Ericsson
- *
- * All rights reserved. This program and the accompanying materials are
- * made available under the terms of the Eclipse Public License 2.0 which
- * accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Bernd Hufmann - Initial API and implementation
- **********************************************************************/
-package org.eclipse.tracecompass.tmf.ui.viewers.xycharts;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.events.MouseListener;
-import org.eclipse.swt.events.MouseMoveListener;
-import org.swtchart.IAxis;
-import org.swtchart.Range;
-
-/**
- * Class for updating time ranges based on middle mouse button drag.
- * It also notifies the viewer about a change of range.
- *
- * @author Bernd Hufmann
- * @deprecated use {@link org.eclipse.tracecompass.tmf.ui.viewers.xychart.TmfMouseDragProvider}
- */
-@Deprecated
-public class TmfMouseDragProvider extends TmfBaseProvider implements MouseListener, MouseMoveListener {
-
- // ------------------------------------------------------------------------
- // Attributes
- // ------------------------------------------------------------------------
- /** Cached start time */
- private long fStartTime;
- /** Cached end time */
- private long fEndTime;
- /** Flag indicating that an update is ongoing */
- private boolean fIsUpdate;
- /** Cached position when mouse button was pressed */
- private int fStartPosition;
-
- // ------------------------------------------------------------------------
- // Constructors
- // ------------------------------------------------------------------------
- /**
- * Default constructor
- *
- * @param tmfChartViewer
- * the chart viewer reference.
- */
- public TmfMouseDragProvider(ITmfChartTimeProvider tmfChartViewer) {
- super(tmfChartViewer);
- register();
- }
-
- // ------------------------------------------------------------------------
- // TmfBaseProvider
- // ------------------------------------------------------------------------
- @Override
- public void register() {
- getChart().getPlotArea().addMouseListener(this);
- getChart().getPlotArea().addMouseMoveListener(this);
- }
-
- @Override
- public void deregister() {
- if ((getChartViewer().getControl() != null) && !getChartViewer().getControl().isDisposed()) {
- getChart().getPlotArea().removeMouseListener(this);
- getChart().getPlotArea().removeMouseMoveListener(this);
- }
- }
-
- @Override
- public void refresh() {
- // nothing to do
- }
-
- // ------------------------------------------------------------------------
- // MouseListener
- // ------------------------------------------------------------------------
- @Override
- public void mouseDoubleClick(MouseEvent e) {
- // Do nothing
- }
-
- @Override
- public void mouseDown(MouseEvent e) {
- if ((getChartViewer().getWindowDuration() != 0) && ((e.button == 2) || (e.button == 1 && (e.stateMask & SWT.CTRL) != 0))) {
- fStartPosition = e.x;
- fIsUpdate = true;
- }
- }
-
- @Override
- public void mouseUp(MouseEvent e) {
- if ((fIsUpdate) && (fStartTime != fEndTime)) {
- ITmfChartTimeProvider viewer = getChartViewer();
- viewer.updateWindow(fStartTime, fEndTime);
- }
- fIsUpdate = false;
- }
-
- // ------------------------------------------------------------------------
- // MouseMoveListener
- // ------------------------------------------------------------------------
- @Override
- public void mouseMove(MouseEvent e) {
- if (fIsUpdate) {
- IAxis xAxis = getChart().getAxisSet().getXAxis(0);
-
- ITmfChartTimeProvider viewer = getChartViewer();
-
- fStartTime = viewer.getWindowStartTime();
- fEndTime = viewer.getWindowEndTime();
-
- long startTime = viewer.getStartTime();
- long endTime = viewer.getEndTime();
-
- long delta = 0;
- if (fStartPosition > e.x) {
- delta = (long) (xAxis.getDataCoordinate(fStartPosition) - xAxis.getDataCoordinate(e.x));
- long max = endTime - fEndTime;
- delta = Math.max(0, Math.min(delta, max));
- fStartTime = fStartTime + delta;
- fEndTime = fEndTime + delta;
- } else if (fStartPosition < e.x) {
- delta = (long) (xAxis.getDataCoordinate(e.x) - xAxis.getDataCoordinate(fStartPosition));
- long max = fStartTime - startTime;
- delta = Math.max(0, Math.min(delta, max));
- fStartTime = fStartTime - delta;
- fEndTime = fEndTime - delta;
- }
-
- xAxis.setRange(new Range(fStartTime - viewer.getTimeOffset(), fEndTime - viewer.getTimeOffset()));
- getChart().redraw();
- }
- }
-}
\ No newline at end of file
diff --git a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xycharts/TmfMouseDragZoomProvider.java b/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xycharts/TmfMouseDragZoomProvider.java
deleted file mode 100644
index e3876e4..0000000
--- a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xycharts/TmfMouseDragZoomProvider.java
+++ /dev/null
@@ -1,165 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2013, 2014 Ericsson
- *
- * All rights reserved. This program and the accompanying materials are
- * made available under the terms of the Eclipse Public License 2.0 which
- * accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Bernd Hufmann - Initial API and implementation
- **********************************************************************/
-package org.eclipse.tracecompass.tmf.ui.viewers.xycharts;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.events.MouseListener;
-import org.eclipse.swt.events.MouseMoveListener;
-import org.eclipse.swt.events.PaintEvent;
-import org.swtchart.IAxis;
-import org.swtchart.ICustomPaintListener;
-import org.swtchart.IPlotArea;
-
-/**
- * Class for providing zooming based on mouse drag with right mouse button.
- * It also notifies the viewer about a change of range.
- *
- * @author Bernd Hufmann
- * @deprecated use {@link org.eclipse.tracecompass.tmf.ui.viewers.xychart.TmfMouseDragZoomProvider}
- */
-@Deprecated
-public class TmfMouseDragZoomProvider extends TmfBaseProvider implements MouseListener, MouseMoveListener, ICustomPaintListener {
-
- // ------------------------------------------------------------------------
- // Attributes
- // ------------------------------------------------------------------------
- /** Cached start time */
- private long fStartTime;
- /** Cached end time */
- private long fEndTime;
- /** Flag indicating that an update is ongoing */
- private boolean fIsUpdate;
-
- // ------------------------------------------------------------------------
- // Constructors
- // ------------------------------------------------------------------------
- /**
- * Default constructor
- *
- * @param tmfChartViewer
- * the chart viewer reference.
- */
- public TmfMouseDragZoomProvider(ITmfChartTimeProvider tmfChartViewer) {
- super(tmfChartViewer);
- register();
- }
-
- // ------------------------------------------------------------------------
- // TmfBaseProvider
- // ------------------------------------------------------------------------
- @Override
- public void register() {
- getChart().getPlotArea().addMouseListener(this);
- getChart().getPlotArea().addMouseMoveListener(this);
- ((IPlotArea) getChart().getPlotArea()).addCustomPaintListener(this);
- }
-
- @Override
- public void deregister() {
- if ((getChartViewer().getControl() != null) && !getChartViewer().getControl().isDisposed()) {
- getChart().getPlotArea().removeMouseListener(this);
- getChart().getPlotArea().removeMouseMoveListener(this);
- ((IPlotArea) getChart().getPlotArea()).removeCustomPaintListener(this);
- }
- }
-
- @Override
- public void refresh() {
- // nothing to do
- }
-
- // ------------------------------------------------------------------------
- // MouseListener
- // ------------------------------------------------------------------------
- @Override
- public void mouseDoubleClick(MouseEvent e) {
- // Do nothing
- }
-
- @Override
- public void mouseDown(MouseEvent e) {
- if ((getChartViewer().getWindowDuration() != 0) && (e.button == 3)) {
- IAxis xAxis = getChart().getAxisSet().getXAxis(0);
- fStartTime = limitXDataCoordinate(xAxis.getDataCoordinate(e.x));
- fEndTime = fStartTime;
- fIsUpdate = true;
- }
- }
-
- @Override
- public void mouseUp(MouseEvent e) {
- if ((fIsUpdate) && (fStartTime != fEndTime)) {
- if (fStartTime > fEndTime) {
- long tmp = fStartTime;
- fStartTime = fEndTime;
- fEndTime = tmp;
- }
- ITmfChartTimeProvider viewer = getChartViewer();
- viewer.updateWindow(fStartTime + viewer.getTimeOffset(), fEndTime + viewer.getTimeOffset());
- }
-
- if (fIsUpdate) {
- getChart().redraw();
- }
- fIsUpdate = false;
- }
-
- // ------------------------------------------------------------------------
- // MouseMoveListener
- // ------------------------------------------------------------------------
- @Override
- public void mouseMove(MouseEvent e) {
- if (fIsUpdate) {
- IAxis xAxis = getChart().getAxisSet().getXAxis(0);
- fEndTime = limitXDataCoordinate(xAxis.getDataCoordinate(e.x));
-
- ITmfChartTimeProvider viewer = getChartViewer();
- if (viewer instanceof TmfXYChartViewer) {
- TmfXYChartViewer xyChartViewer = (TmfXYChartViewer) viewer;
- xyChartViewer.updateStatusLine(fStartTime, fEndTime, limitXDataCoordinate(xAxis.getDataCoordinate(e.x)));
- }
-
- getChart().redraw();
- }
- }
-
- // ------------------------------------------------------------------------
- // ICustomPaintListener
- // ------------------------------------------------------------------------
- @Override
- public void paintControl(PaintEvent e) {
- if (fIsUpdate && (fStartTime != fEndTime)) {
- IAxis xAxis = getChart().getAxisSet().getXAxis(0);
- int startX = xAxis.getPixelCoordinate(fStartTime);
- int endX = xAxis.getPixelCoordinate(fEndTime);
- int prevAlpha = e.gc.getAlpha();
- e.gc.setAlpha(64);
- e.gc.setBackground(TmfXYChartViewer.getDisplay().getSystemColor(SWT.COLOR_WIDGET_BACKGROUND));
- if (fStartTime < fEndTime) {
- e.gc.fillRectangle(startX, 0, endX - startX, e.height);
- } else {
- e.gc.fillRectangle(endX, 0, startX - endX, e.height);
- }
- e.gc.setAlpha(prevAlpha);
- e.gc.drawLine(startX, 0, startX, e.height);
- e.gc.drawLine(endX, 0, endX, e.height);
- }
- }
-
- @Override
- public boolean drawBehindSeries() {
- return false;
- }
-}
\ No newline at end of file
diff --git a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xycharts/TmfMouseSelectionProvider.java b/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xycharts/TmfMouseSelectionProvider.java
deleted file mode 100644
index eb0161a..0000000
--- a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xycharts/TmfMouseSelectionProvider.java
+++ /dev/null
@@ -1,203 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2013, 2014, 2017 Ericsson
- *
- * All rights reserved. This program and the accompanying materials are
- * made available under the terms of the Eclipse Public License 2.0 which
- * accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Bernd Hufmann - Initial API and implementation
- **********************************************************************/
-package org.eclipse.tracecompass.tmf.ui.viewers.xycharts;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.events.MouseListener;
-import org.eclipse.swt.events.MouseMoveListener;
-import org.eclipse.swt.events.PaintEvent;
-import org.swtchart.IAxis;
-import org.swtchart.ICustomPaintListener;
-import org.swtchart.IPlotArea;
-
-/**
- * Class for providing selection of ranges with the left mouse button. It also
- * notifies the viewer about a change of selection.
- *
- * @author Bernd Hufmann
- * @deprecated use {@link org.eclipse.tracecompass.tmf.ui.viewers.xychart.TmfMouseSelectionProvider}
- */
-@Deprecated
-public class TmfMouseSelectionProvider extends TmfBaseProvider implements MouseListener, MouseMoveListener, ICustomPaintListener {
-
- // ------------------------------------------------------------------------
- // Attributes
- // ------------------------------------------------------------------------
- /** Cached start time */
- private long fBeginTime;
- /** Cached end time */
- private long fEndTime;
- /** Cached cursor time*/
- private long fCursorTime;
- /** Flag indicating that an update is ongoing */
- private boolean fIsInternalUpdate;
- /** Flag indicating that the begin marker is dragged */
- private boolean fDragBeginMarker;
-
- // ------------------------------------------------------------------------
- // Constructors
- // ------------------------------------------------------------------------
- /**
- * Default constructor
- *
- * @param tmfChartViewer
- * The chart viewer reference.
- */
- public TmfMouseSelectionProvider(ITmfChartTimeProvider tmfChartViewer) {
- super(tmfChartViewer);
- register();
- }
-
- // ------------------------------------------------------------------------
- // TmfBaseProvider
- // ------------------------------------------------------------------------
- @Override
- public void register() {
- getChart().getPlotArea().addMouseListener(this);
- getChart().getPlotArea().addMouseMoveListener(this);
- ((IPlotArea) getChart().getPlotArea()).addCustomPaintListener(this);
- }
-
- @Override
- public void deregister() {
- if ((getChartViewer().getControl() != null) && !getChartViewer().getControl().isDisposed()) {
- getChart().getPlotArea().removeMouseListener(this);
- getChart().getPlotArea().removeMouseMoveListener(this);
- ((IPlotArea) getChart().getPlotArea()).removeCustomPaintListener(this);
- }
- }
-
- // ------------------------------------------------------------------------
- // MouseListener
- // ------------------------------------------------------------------------
- @Override
- public void mouseDoubleClick(MouseEvent e) {
- // Do nothing
- }
-
- @Override
- public void mouseDown(MouseEvent e) {
- if ((getChartViewer().getWindowDuration() != 0) && (e.button == 1)) {
- if ((e.stateMask & SWT.CTRL) != 0) {
- return;
- }
- fDragBeginMarker = false;
- if ((e.stateMask & SWT.SHIFT) != SWT.SHIFT) {
- IAxis xAxis = getChart().getAxisSet().getXAxis(0);
- fBeginTime = limitXDataCoordinate(xAxis.getDataCoordinate(e.x));
- fEndTime = fBeginTime;
- } else {
- long selectionBegin = fBeginTime;
- long selectionEnd = fEndTime;
- IAxis xAxis = getChart().getAxisSet().getXAxis(0);
- long time = limitXDataCoordinate(xAxis.getDataCoordinate(e.x));
- if (Math.abs(time - selectionBegin) < Math.abs(time - selectionEnd)) {
- fDragBeginMarker = true;
- fBeginTime = time;
- fEndTime = selectionEnd;
- } else {
- fBeginTime = selectionBegin;
- fEndTime = time;
- }
- }
- fIsInternalUpdate = true;
- }
- }
-
- @Override
- public void mouseUp(MouseEvent e) {
- if (fIsInternalUpdate) {
- ITmfChartTimeProvider viewer = getChartViewer();
- viewer.updateSelectionRange(fBeginTime + viewer.getTimeOffset(), fEndTime + viewer.getTimeOffset());
-
- if (viewer instanceof TmfXYChartViewer) {
- TmfXYChartViewer xyChartViewer = (TmfXYChartViewer) viewer;
- xyChartViewer.updateStatusLine(fBeginTime, fEndTime, fCursorTime);
- }
-
- fIsInternalUpdate = false;
- getChart().redraw();
- }
- }
-
- // ------------------------------------------------------------------------
- // MouseMoveListener
- // ------------------------------------------------------------------------
- @Override
- public void mouseMove(MouseEvent e) {
- IAxis xAxis = getChart().getAxisSet().getXAxis(0);
- fCursorTime = limitXDataCoordinate(xAxis.getDataCoordinate(e.x));
-
- if (fIsInternalUpdate) {
- if (fDragBeginMarker) {
- fBeginTime = limitXDataCoordinate(xAxis.getDataCoordinate(e.x));
- } else {
- fEndTime = limitXDataCoordinate(xAxis.getDataCoordinate(e.x));
- }
- getChart().redraw();
- }
-
- ITmfChartTimeProvider viewer = getChartViewer();
- if (viewer instanceof TmfXYChartViewer) {
- TmfXYChartViewer xyChartViewer = (TmfXYChartViewer) viewer;
- xyChartViewer.updateStatusLine(fBeginTime, fEndTime, fCursorTime);
- }
- }
-
- // ------------------------------------------------------------------------
- // ICustomPaintListener
- // ------------------------------------------------------------------------
- @Override
- public void paintControl(PaintEvent e) {
- ITmfChartTimeProvider viewer = getChartViewer();
-
- if (!fIsInternalUpdate) {
- fBeginTime = viewer.getSelectionBeginTime() - viewer.getTimeOffset();
- fEndTime = viewer.getSelectionEndTime() - viewer.getTimeOffset();
- }
- long windowStartTime = viewer.getWindowStartTime() - viewer.getTimeOffset();
- long windowEndTime = viewer.getWindowEndTime() - viewer.getTimeOffset();
-
- IAxis xAxis = getChart().getAxisSet().getXAxis(0);
- e.gc.setBackground(TmfXYChartViewer.getDisplay().getSystemColor(SWT.COLOR_BLUE));
- e.gc.setForeground(TmfXYChartViewer.getDisplay().getSystemColor(SWT.COLOR_BLUE));
- e.gc.setLineStyle(SWT.LINE_SOLID);
- if ((fBeginTime >= windowStartTime) && (fBeginTime <= windowEndTime)) {
- int beginX = xAxis.getPixelCoordinate(fBeginTime);
- e.gc.drawLine(beginX, 0, beginX, e.height);
- }
-
- if ((fEndTime >= windowStartTime) && (fEndTime <= windowEndTime) && (fBeginTime != fEndTime)) {
- int endX = xAxis.getPixelCoordinate(fEndTime);
- e.gc.drawLine(endX, 0, endX, e.height);
- }
- e.gc.setAlpha(64);
- if (Math.abs(fEndTime - fBeginTime) > 1) {
- e.gc.setBackground(TmfXYChartViewer.getDisplay().getSystemColor(SWT.COLOR_WIDGET_BACKGROUND));
- int beginX = xAxis.getPixelCoordinate(fBeginTime);
- int endX = xAxis.getPixelCoordinate(fEndTime);
- if (fEndTime > fBeginTime) {
- e.gc.fillRectangle(beginX + 1, 0, endX - beginX - 1, e.height);
- } else {
- e.gc.fillRectangle(endX + 1, 0, beginX - endX - 1, e.height);
- }
- }
- }
-
- @Override
- public boolean drawBehindSeries() {
- return false;
- }
-}
diff --git a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xycharts/TmfMouseWheelZoomProvider.java b/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xycharts/TmfMouseWheelZoomProvider.java
deleted file mode 100644
index c935398..0000000
--- a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xycharts/TmfMouseWheelZoomProvider.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2013, 2019 Ericsson
- *
- * All rights reserved. This program and the accompanying materials are
- * made available under the terms of the Eclipse Public License 2.0 which
- * accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Bernd Hufmann - Initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.tracecompass.tmf.ui.viewers.xycharts;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.events.MouseWheelListener;
-import org.eclipse.tracecompass.internal.tmf.ui.viewers.xycharts.TmfXyUiUtils;
-import org.swtchart.Chart;
-
-/**
- * Class for providing zooming and scrolling based on mouse wheel. For zooming,
- * it centers the zoom on mouse position. For scrolling, it will move the zoom
- * window to another position while maintaining the window size. It also
- * notifies the viewer about a change of range.
- *
- * @author Bernd Hufmann
- * @deprecated use {@link org.eclipse.tracecompass.tmf.ui.viewers.xychart.TmfMouseWheelZoomProvider}
- */
-@Deprecated
-public class TmfMouseWheelZoomProvider extends TmfBaseProvider implements MouseWheelListener {
-
- // ------------------------------------------------------------------------
- // Constructors
- // ------------------------------------------------------------------------
- /**
- * Standard constructor.
- *
- * @param tmfChartViewer
- * The parent histogram object
- */
- public TmfMouseWheelZoomProvider(ITmfChartTimeProvider tmfChartViewer) {
- super(tmfChartViewer);
- register();
- }
-
- // ------------------------------------------------------------------------
- // TmfBaseProvider
- // ------------------------------------------------------------------------
- @Override
- public void register() {
- getChart().getPlotArea().addMouseWheelListener(this);
- }
-
- @Override
- public void deregister() {
- if ((getChartViewer().getControl() != null) && !getChartViewer().getControl().isDisposed()) {
- getChart().getPlotArea().removeMouseWheelListener(this);
- }
- }
-
- @Override
- public void refresh() {
- // nothing to do
- }
-
- // ------------------------------------------------------------------------
- // MouseWheelListener
- // ------------------------------------------------------------------------
- @Override
- public synchronized void mouseScrolled(MouseEvent event) {
- final int count = event.count;
- if ((event.stateMask & SWT.CTRL) != 0) {
- final int x = event.x;
- zoom(count, x);
- } else if ((event.stateMask & SWT.SHIFT) != 0) {
- scroll(count);
- }
- }
-
- private void scroll(final int count) {
- ITmfChartTimeProvider viewer = getChartViewer();
- Chart chart = getChart();
- if ((viewer != null) && (chart != null) && (count != 0)) {
- TmfXyUiUtils.horizontalScroll(viewer, chart, count > 0);
- }
- }
-
- private void zoom(final int count, final int x) {
- ITmfChartTimeProvider viewer = getChartViewer();
- Chart chart = getChart();
- if ((viewer != null) && (chart != null) && (count != 0)) {
- TmfXyUiUtils.zoom(viewer, chart, count > 0, x);
- }
- }
-}
\ No newline at end of file
diff --git a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xycharts/TmfSimpleTooltipProvider.java b/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xycharts/TmfSimpleTooltipProvider.java
deleted file mode 100644
index b52c4f7..0000000
--- a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xycharts/TmfSimpleTooltipProvider.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2013, 2019 Ericsson
- *
- * All rights reserved. This program and the accompanying materials are
- * made available under the terms of the Eclipse Public License 2.0 which
- * accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Bernd Hufmann - Initial API and implementation
- **********************************************************************/
-package org.eclipse.tracecompass.tmf.ui.viewers.xycharts;
-
-import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.events.MouseTrackListener;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.tracecompass.tmf.core.timestamp.ITmfTimestamp;
-import org.eclipse.tracecompass.tmf.core.timestamp.TmfTimestamp;
-import org.eclipse.tracecompass.tmf.ui.viewers.TmfAbstractToolTipHandler;
-import org.swtchart.Chart;
-import org.swtchart.IAxis;
-import org.swtchart.IAxisSet;
-
-/**
- * Tool tip provider for TMF chart viewer. It displays the x and y value of the
- * current mouse position.
- *
- * @author Bernd Hufmann
- * @deprecated use {@link org.eclipse.tracecompass.tmf.ui.viewers.xychart.TmfSimpleTooltipProvider}
- */
-@Deprecated
-public class TmfSimpleTooltipProvider extends TmfBaseProvider implements MouseTrackListener {
-
- private final class XYToolTipHandler extends TmfAbstractToolTipHandler {
- @Override
- public void fill(Control control, MouseEvent event, Point pt) {
- Chart chart = getChart();
- IAxisSet axisSet = chart.getAxisSet();
- IAxis xAxis = axisSet.getXAxis(0);
- IAxis yAxis = axisSet.getYAxis(0);
-
- double xCoordinate = xAxis.getDataCoordinate(pt.x);
- double yCoordinate = yAxis.getDataCoordinate(pt.y);
-
- ITmfChartTimeProvider viewer = getChartViewer();
-
- ITmfTimestamp time = TmfTimestamp.fromNanos((long) xCoordinate + viewer.getTimeOffset());
- /* set tooltip of current data point */
- addItem(null, ToolTipString.fromString("x"), ToolTipString.fromTimestamp(time.toString(), time.toNanos())); //$NON-NLS-1$
- addItem(null, "y", Double.toString(yCoordinate)); //$NON-NLS-1$
- }
- }
-
- private TmfAbstractToolTipHandler fTooltipHandler = new XYToolTipHandler();
-
- // ------------------------------------------------------------------------
- // Constructors
- // ------------------------------------------------------------------------
- /**
- * Constructor for a tool tip provider.
- *
- * @param tmfChartViewer
- * The parent chart viewer
- */
- public TmfSimpleTooltipProvider(ITmfChartTimeProvider tmfChartViewer) {
- super(tmfChartViewer);
- register();
- }
-
- // ------------------------------------------------------------------------
- // TmfBaseProvider
- // ------------------------------------------------------------------------
- @Override
- public void register() {
- fTooltipHandler.activateHoverHelp(getChart().getPlotArea());
- }
-
- @Override
- public void deregister() {
- if ((getChartViewer().getControl() != null) && !getChartViewer().getControl().isDisposed()) {
- fTooltipHandler.deactivateHoverHelp(getChart().getPlotArea());
- }
- }
-
- @Override
- public void refresh() {
- // nothing to do
- }
-
- // ------------------------------------------------------------------------
- // MouseTrackListener
- // ------------------------------------------------------------------------
- @Override
- public void mouseEnter(MouseEvent e) {
- // Do nothing
- }
-
- @Override
- public void mouseExit(MouseEvent e) {
- // Do nothing
- }
-
- @Override
- public void mouseHover(MouseEvent e) {
- // Do nothing
- }
-}
\ No newline at end of file
diff --git a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xycharts/TmfXYChartViewer.java b/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xycharts/TmfXYChartViewer.java
deleted file mode 100644
index 8b7842d..0000000
--- a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xycharts/TmfXYChartViewer.java
+++ /dev/null
@@ -1,819 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2013, 2020 Ericsson, École Polytechnique de Montréal, Draeger
- *
- * All rights reserved. This program and the accompanying materials are
- * made available under the terms of the Eclipse Public License 2.0 which
- * accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Bernd Hufmann - Initial API and implementation
- * Geneviève Bastien - Moved some methods to TmfTimeViewer
- * Patrick Tasse - Fix setFocus
- * Ivan Grinenko - Add ability to set fixed range for Y axis.
- **********************************************************************/
-package org.eclipse.tracecompass.tmf.ui.viewers.xycharts;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.jdt.annotation.Nullable;
-import org.eclipse.jface.action.IStatusLineManager;
-import org.eclipse.jface.layout.GridDataFactory;
-import org.eclipse.jface.layout.GridLayoutFactory;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.FocusListener;
-import org.eclipse.swt.events.MouseAdapter;
-import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.events.PaintEvent;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.tracecompass.internal.tmf.ui.viewers.xycharts.TmfXYChartTimeAdapter;
-import org.eclipse.tracecompass.internal.tmf.ui.viewers.xycharts.TmfXyUiUtils;
-import org.eclipse.tracecompass.internal.tmf.ui.views.ITmfTimeNavigationProvider;
-import org.eclipse.tracecompass.internal.tmf.ui.views.ITmfTimeZoomProvider;
-import org.eclipse.tracecompass.internal.tmf.ui.views.ITmfZoomToSelectionProvider;
-import org.eclipse.tracecompass.tmf.core.signal.TmfSelectionRangeUpdatedSignal;
-import org.eclipse.tracecompass.tmf.core.signal.TmfSignalHandler;
-import org.eclipse.tracecompass.tmf.core.signal.TmfTimestampFormatUpdateSignal;
-import org.eclipse.tracecompass.tmf.core.signal.TmfWindowRangeUpdatedSignal;
-import org.eclipse.tracecompass.tmf.core.timestamp.ITmfTimePreferencesConstants;
-import org.eclipse.tracecompass.tmf.core.timestamp.TmfTimePreferences;
-import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
-import org.eclipse.tracecompass.tmf.core.trace.TmfTraceContext;
-import org.eclipse.tracecompass.tmf.core.trace.TmfTraceManager;
-import org.eclipse.tracecompass.tmf.ui.viewers.IImageSave;
-import org.eclipse.tracecompass.tmf.ui.viewers.TmfTimeViewer;
-import org.eclipse.tracecompass.tmf.ui.views.FormatTimeUtils;
-import org.eclipse.tracecompass.tmf.ui.views.FormatTimeUtils.Resolution;
-import org.eclipse.tracecompass.tmf.ui.views.FormatTimeUtils.TimeFormat;
-import org.eclipse.tracecompass.tmf.ui.widgets.timegraph.widgets.TimeGraphColorScheme;
-import org.eclipse.tracecompass.tmf.ui.widgets.timegraph.widgets.TimeGraphScale;
-import org.swtchart.Chart;
-import org.swtchart.IAxis;
-import org.swtchart.ICustomPaintListener;
-import org.swtchart.IPlotArea;
-import org.swtchart.ISeries;
-import org.swtchart.ISeriesSet;
-import org.swtchart.ITitle;
-import org.swtchart.LineStyle;
-import org.swtchart.Range;
-
-import com.google.common.annotations.VisibleForTesting;
-
-/**
- * Base class for a XY-Chart based on SWT chart. It provides a methods to define
- * zoom, selection and tool tip providers. It also provides call backs to be
- * notified by any changes caused by selection and zoom.
- *
- * @author Bernd Hufmann
- * @deprecated use {@link org.eclipse.tracecompass.tmf.ui.viewers.xychart.TmfXYChartViewer}
- */
-@Deprecated
-public abstract class TmfXYChartViewer extends TmfTimeViewer implements ITmfChartTimeProvider, IImageSave, IAdaptable {
-
- // ------------------------------------------------------------------------
- // Attributes
- // ------------------------------------------------------------------------
- private static final int DEFAULT_SCALE_HEIGHT = 22;
-
- /** The composite to house the chart and time graph scale */
- private Composite fCommonComposite;
- /** The color scheme for the chart */
- private @NonNull TimeGraphColorScheme fColorScheme = new TimeGraphColorScheme();
- /** The SWT Chart reference */
- private Chart fSwtChart;
- /** The X axis for the chart */
- private TimeGraphScale fTimeScaleCtrl;
- /** The time format */
- private @Nullable TimeFormat fTimeFormat = null;
- /** The mouse selection provider */
- private TmfBaseProvider fMouseSelectionProvider;
- /** The mouse drag zoom provider */
- private TmfBaseProvider fMouseDragZoomProvider;
- /** The mouse wheel zoom provider */
- private TmfBaseProvider fMouseWheelZoomProvider;
- /** The tooltip provider */
- private TmfBaseProvider fToolTipProvider;
- /** The middle mouse drag provider */
- private TmfBaseProvider fMouseDragProvider;
- /**
- * Whether or not to send time alignment signals. This should be set to true for
- * viewers that are part of an aligned view.
- */
- private boolean fSendTimeAlignSignals = false;
-
- private final TmfXYChartTimeAdapter fDataProvider;
-
- private AxisRange fFixedYRange = null;
-
- private IStatusLineManager fStatusLineManager;
- // ------------------------------------------------------------------------
- // Constructors
- // ------------------------------------------------------------------------
-
- /**
- * Constructs a TmfXYChartViewer.
- *
- * @param parent
- * The parent composite
- * @param title
- * The title of the viewer
- * @param xLabel
- * The label of the xAxis
- * @param yLabel
- * The label of the yAXIS
- */
- public TmfXYChartViewer(Composite parent, String title, String xLabel, String yLabel) {
- fCommonComposite = new Composite(parent, parent.getStyle()) {
- @Override
- public void redraw() {
- fSwtChart.redraw();
- fTimeScaleCtrl.redraw();
- }
- };
- fCommonComposite.addDisposeListener(e -> {
- fColorScheme.dispose();
- });
- fCommonComposite.setLayout(GridLayoutFactory.fillDefaults().spacing(0, 0).margins(0, 0).create());
- fCommonComposite.setLayoutData(GridDataFactory.fillDefaults().grab(true, true).create());
- fSwtChart = new Chart(fCommonComposite, SWT.NONE) {
- @Override
- public void addFocusListener(FocusListener listener) {
- fSwtChart.getPlotArea().addFocusListener(listener);
- }
- @Override
- public void removeFocusListener(FocusListener listener) {
- fSwtChart.getPlotArea().removeFocusListener(listener);
- }
- @Override
- public boolean setFocus() {
- return fSwtChart.getPlotArea().setFocus();
- }
- @Override
- public boolean forceFocus() {
- return fSwtChart.getPlotArea().forceFocus();
- }
- };
- fSwtChart.getAxisSet().getXAxis(0).getGrid().setStyle(LineStyle.NONE);
- ((IPlotArea) fSwtChart.getPlotArea()).addCustomPaintListener(new ICustomPaintListener() {
-
- @Override
- public void paintControl(PaintEvent e) {
- drawGridLines(e.gc);
- }
-
- @Override
- public boolean drawBehindSeries() {
- return true;
- }
- });
-
- fSwtChart.addPaintListener(e -> {
- Rectangle bounds = fSwtChart.getPlotArea().getBounds();
- int y = fTimeScaleCtrl.getLocation().y;
- fTimeScaleCtrl.setBounds(bounds.x, y, bounds.width, DEFAULT_SCALE_HEIGHT);
- fTimeScaleCtrl.redraw();
- });
-
- fTimeScaleCtrl = new TimeGraphScale(fCommonComposite, fColorScheme, SWT.BOTTOM);
- Color backgroundColor = fColorScheme.getColor(TimeGraphColorScheme.TOOL_BACKGROUND);
- fSwtChart.setBackground(backgroundColor);
- fCommonComposite.setBackground(backgroundColor);
- backgroundColor = fColorScheme.getColor(TimeGraphColorScheme.BACKGROUND);
- fSwtChart.setBackgroundInPlotArea(backgroundColor);
- fSwtChart.setForeground(fColorScheme.getColor(TimeGraphColorScheme.TOOL_FOREGROUND));
- fTimeScaleCtrl.setLayoutData(new GridData(SWT.FILL, SWT.DEFAULT, true, false));
- fTimeScaleCtrl.setHeight(DEFAULT_SCALE_HEIGHT);
- fSwtChart.getPlotArea().addMouseListener(new MouseAdapter() {
- @Override
- public void mouseDown(MouseEvent e) {
- fSwtChart.getPlotArea().setFocus();
- }
- });
-
- IAxis xAxis = fSwtChart.getAxisSet().getXAxis(0);
- IAxis yAxis = fSwtChart.getAxisSet().getYAxis(0);
-
- /* Set the title/labels, or hide them if they are not provided */
- initTitle(title, fSwtChart.getTitle());
-
- initTitle(null, fSwtChart.getTitle());
-
- xAxis.getTick().setVisible(false);
- yAxis.getTick().setForeground(fColorScheme.getColor(TimeGraphColorScheme.TOOL_FOREGROUND));
- initTitle(yLabel, yAxis.getTitle());
-
- fMouseSelectionProvider = new TmfMouseSelectionProvider(this);
- fMouseDragZoomProvider = new TmfMouseDragZoomProvider(this);
- fMouseWheelZoomProvider = new TmfMouseWheelZoomProvider(this);
- fToolTipProvider = new TmfSimpleTooltipProvider(this);
- fMouseDragProvider = new TmfMouseDragProvider(this);
-
- fSwtChart.addDisposeListener((e) -> {
- internalDispose();
- });
-
- fDataProvider = new TmfXYChartTimeAdapter(this);
- fTimeScaleCtrl.setTimeProvider(fDataProvider);
- updateTimeFormat();
- }
-
- private void initTitle(String label, ITitle titleCtrl) {
- titleCtrl.setForeground(fColorScheme.getColor(TimeGraphColorScheme.TOOL_FOREGROUND));
- if (label == null) {
- titleCtrl.setVisible(false);
- } else {
- titleCtrl.setText(label);
- }
- }
-
- // ------------------------------------------------------------------------
- // Getter/Setters
- // ------------------------------------------------------------------------
-
- /**
- * Sets the SWT Chart reference
- *
- * @param chart
- * The SWT chart to set.
- */
- protected void setSwtChart(Chart chart) {
- fSwtChart = chart;
- }
-
- /**
- * Gets the SWT Chart reference
- *
- * @return the SWT chart to set.
- * @since 3.2
- */
- public Chart getSwtChart() {
- return fSwtChart;
- }
-
- /**
- * Switches visibility of the time axis on and off.
- *
- * @param visible
- * {@code true} to make the time axis visible.
- * {@code false} to make it invisible
- * @since 6.0
- */
- public void setTimeAxisVisible(boolean visible) {
- GridData gridData = (GridData) fTimeScaleCtrl.getLayoutData();
- gridData.exclude = !visible;
- fTimeScaleCtrl.setVisible(visible);
- fCommonComposite.requestLayout();
- }
-
- /**
- * Sets a mouse selection provider. An existing provider will be disposed. Use
- * <code>null</code> to disable the mouse selection provider.
- *
- * @param provider
- * The selection provider to set
- */
- public void setSelectionProvider(TmfBaseProvider provider) {
- if (fMouseSelectionProvider != null) {
- fMouseSelectionProvider.dispose();
- }
- fMouseSelectionProvider = provider;
- }
-
- /**
- * Sets a mouse drag zoom provider. An existing provider will be disposed. Use
- * <code>null</code> to disable the mouse drag zoom provider.
- *
- * @param provider
- * The mouse drag zoom provider to set
- */
- public void setMouseDragZoomProvider(TmfBaseProvider provider) {
- if (fMouseDragZoomProvider != null) {
- fMouseDragZoomProvider.dispose();
- }
- fMouseDragZoomProvider = provider;
- }
-
- /**
- * Sets a mouse wheel zoom provider. An existing provider will be disposed. Use
- * <code>null</code> to disable the mouse wheel zoom provider.
- *
- * @param provider
- * The mouse wheel zoom provider to set
- */
- public void setMouseWheelZoomProvider(TmfBaseProvider provider) {
- if (fMouseWheelZoomProvider != null) {
- fMouseWheelZoomProvider.dispose();
- }
- fMouseWheelZoomProvider = provider;
- }
-
- /**
- * Sets a tooltip provider. An existing provider will be disposed. Use
- * <code>null</code> to disable the tooltip provider.
- *
- * @param provider
- * The tooltip provider to set
- */
- public void setTooltipProvider(TmfBaseProvider provider) {
- if (fToolTipProvider != null) {
- fToolTipProvider.dispose();
- }
- fToolTipProvider = provider;
- }
-
- /**
- * Sets a mouse drag provider. An existing provider will be disposed. Use
- * <code>null</code> to disable the mouse drag provider.
- *
- * @param provider
- * The mouse drag provider to set
- */
- public void setMouseDrageProvider(TmfBaseProvider provider) {
- if (fMouseDragProvider != null) {
- fMouseDragProvider.dispose();
- }
- fMouseDragProvider = provider;
- }
-
- // ------------------------------------------------------------------------
- // ITmfChartTimeProvider
- // ------------------------------------------------------------------------
-
- @Override
- public long getTimeOffset() {
- return getWindowStartTime() - 1;
- }
-
- // ------------------------------------------------------------------------
- // ITmfViewer interface
- // ------------------------------------------------------------------------
- @Override
- public Control getControl() {
- return fSwtChart;
- }
-
- @Override
- public void refresh() {
- fSwtChart.redraw();
- }
-
- // ------------------------------------------------------------------------
- // TmfComponent
- // ------------------------------------------------------------------------
-
- @Override
- public void dispose() {
- if (!fSwtChart.isDisposed()) {
- fSwtChart.dispose();
- }
- }
-
- private void internalDispose() {
- super.dispose();
-
- if (fMouseSelectionProvider != null) {
- fMouseSelectionProvider.dispose();
- }
-
- if (fMouseDragZoomProvider != null) {
- fMouseDragZoomProvider.dispose();
- }
-
- if (fMouseWheelZoomProvider != null) {
- fMouseWheelZoomProvider.dispose();
- }
-
- if (fToolTipProvider != null) {
- fToolTipProvider.dispose();
- }
-
- if (fMouseDragProvider != null) {
- fMouseDragProvider.dispose();
- }
- }
-
- // ------------------------------------------------------------------------
- // Operations
- // ------------------------------------------------------------------------
- /**
- * A Method to load a trace into the viewer.
- *
- * @param trace
- * A trace to apply in the viewer
- */
- @Override
- public void loadTrace(ITmfTrace trace) {
- super.loadTrace(trace);
- clearContent();
- updateContent();
- }
-
- /**
- * Resets the content of the viewer
- */
- @Override
- public void reset() {
- super.reset();
- setStartTime(0);
- setEndTime(0);
- clearContent();
- }
-
- /**
- * Method to implement to update the chart content.
- */
- protected abstract void updateContent();
-
- /**
- * Returns whether or not this chart viewer is dirty. The viewer is considered
- * dirty if it has yet to completely update its model.
- *
- * This method is meant to be used by tests in order to know when it is safe to
- * proceed.
- *
- * @return true if the time graph view has yet to completely update its model,
- * false otherwise
- * @since 2.2
- */
- @VisibleForTesting
- public boolean isDirty() {
- if (getTrace() == null) {
- return false;
- }
-
- TmfTraceContext ctx = TmfTraceManager.getInstance().getCurrentTraceContext();
- long startTime = ctx.getWindowRange().getStartTime().toNanos();
- long endTime = ctx.getWindowRange().getEndTime().toNanos();
-
- // If the chart viewer hasn't updated all the way to the end of
- // the window range then it's dirty. A refresh should happen later.
- return (getWindowStartTime() != startTime || getWindowEndTime() != endTime);
- }
-
- /**
- * Draw the grid lines
- *
- * @param bounds
- * The bounds of the control
- * @param gc
- * Graphics context
- * @since 2.0
- */
- private void drawGridLines(GC gc) {
- Rectangle bounds = fSwtChart.getPlotArea().getBounds();
- Color foreground = fSwtChart.getAxisSet().getXAxis(0).getGrid().getForeground();
- gc.setForeground(foreground);
- gc.setAlpha(foreground.getAlpha());
- gc.setLineStyle(SWT.LINE_DOT);
- for (int x : fTimeScaleCtrl.getTickList()) {
- gc.drawLine(x, 0, x, bounds.height);
- }
- gc.setAlpha(255);
- }
-
- /**
- * Sets the time format, or null to use the Time Format 'Date and Time
- * format' preference (default).
- *
- * @param timeFormat
- * the {@link TimeFormat} used to display timestamps
- * @since 5.0
- */
- protected void setTimeFormat(TimeFormat timeFormat) {
- fTimeFormat = timeFormat;
- if (fSwtChart != null) {
- updateTimeFormat();
- fSwtChart.getAxisSet().adjustRange();
- fSwtChart.redraw();
- }
- }
-
- // ------------------------------------------------------------------------
- // Signal Handler
- // ------------------------------------------------------------------------
-
- /**
- * Signal handler for handling of the time synch signal.
- *
- * @param signal
- * The time synch signal {@link TmfSelectionRangeUpdatedSignal}
- */
- @Override
- @TmfSignalHandler
- public void selectionRangeUpdated(TmfSelectionRangeUpdatedSignal signal) {
- super.selectionRangeUpdated(signal);
- if (signal != null && (signal.getSource() != this) && (getTrace() != null)) {
- if (fMouseSelectionProvider != null) {
- fMouseSelectionProvider.refresh();
- }
- }
- }
-
- /**
- * Signal handler for handling of the window range signal.
- *
- * @param signal
- * The {@link TmfWindowRangeUpdatedSignal}
- */
- @Override
- @TmfSignalHandler
- public void windowRangeUpdated(TmfWindowRangeUpdatedSignal signal) {
- super.windowRangeUpdated(signal);
- updateContent();
- }
-
- /**
- * Signal handler for handling the signal that notifies about an updated
- * timestamp format.
- *
- * @param signal
- * The trace updated signal {@link TmfTimestampFormatUpdateSignal}
- */
- @TmfSignalHandler
- public void timestampFormatUpdated(TmfTimestampFormatUpdateSignal signal) {
- updateTimeFormat();
- fSwtChart.getAxisSet().adjustRange();
- fSwtChart.redraw();
- }
-
- /**
- * Sets new fixed range for the Y axis.
- *
- * @param yRange
- * new fixed range for the Y axis or {@code null} to
- * make float again. If not {@code null} then
- * {@link IAxis#adjustRange} is not called for the Y
- * axis on updates.
- * @since 5.2
- */
- public void setFixedYRange(@Nullable AxisRange yRange) {
- fFixedYRange = yRange;
- updateContent();
- }
-
- /**
- * Gets current fixed range for the Y axis.
- *
- * @return Current fixed range or {@code null} if the range is not fixed.
- * @since 5.2
- */
- public @Nullable AxisRange getFixedYRange() {
- return fFixedYRange;
- }
-
- // ------------------------------------------------------------------------
- // IAdaptable Interface
- // ------------------------------------------------------------------------
- /**
- * @since 5.0
- */
- @SuppressWarnings("unchecked")
- @Override
- public <T> T getAdapter(Class<T> adapter) {
- if (adapter == ITmfTimeNavigationProvider.class) {
- return (T) getTimeNavigator();
- }
- if (adapter == ITmfTimeZoomProvider.class) {
- return (T) getTimeZoomProvider();
- }
- if (adapter == ITmfZoomToSelectionProvider.class ) {
- return (T) getZoomToSelectionProvider();
- }
- return null;
- }
-
- // ------------------------------------------------------------------------
- // Helper Methods
- // ------------------------------------------------------------------------
-
- /**
- * Clears the view content.
- */
- protected void clearContent() {
- if (!fSwtChart.isDisposed()) {
- ISeriesSet set = fSwtChart.getSeriesSet();
- ISeries[] series = set.getSeries();
- for (int i = 0; i < series.length; i++) {
- set.deleteSeries(series[i].getId());
- }
- for (IAxis axis : fSwtChart.getAxisSet().getAxes()) {
- axis.setRange(new Range(0, 1));
- }
- fSwtChart.redraw();
- }
- }
-
- /**
- * Returns the current or default display.
- *
- * @return the current or default display
- */
- protected static Display getDisplay() {
- Display display = Display.getCurrent();
- // may be null if outside the UI thread
- if (display == null) {
- display = Display.getDefault();
- }
- return display;
- }
-
- /**
- * Get the offset of the point area, relative to the XY chart viewer control. We
- * consider the point area to be from where the first point could be drawn to
- * where the last point could be drawn.
- *
- * @return the offset in pixels
- *
- * @since 1.0
- */
- public int getPointAreaOffset() {
-
- int pixelCoordinate = 0;
- IAxis[] xAxes = getSwtChart().getAxisSet().getXAxes();
- if (xAxes.length > 0) {
- IAxis axis = xAxes[0];
- pixelCoordinate = axis.getPixelCoordinate(axis.getRange().lower);
- }
- return getSwtChart().toControl(getSwtChart().getPlotArea().toDisplay(pixelCoordinate, 0)).x;
- }
-
- /**
- * Get the width of the point area. We consider the point area to be from where
- * the first point could be drawn to where the last point could be drawn. The
- * point area differs from the plot area because there might be a gap between
- * where the plot area start and where the fist point is drawn. This also
- * matches the width that the use can select.
- *
- * @return the width in pixels
- *
- * @since 1.0
- */
- public int getPointAreaWidth() {
- IAxis[] xAxes = getSwtChart().getAxisSet().getXAxes();
- if (xAxes.length > 0) {
- IAxis axis = xAxes[0];
- int x1 = getPointAreaOffset();
- int x2 = axis.getPixelCoordinate(axis.getRange().upper);
- x2 = getSwtChart().toControl(getSwtChart().getPlotArea().toDisplay(x2, 0)).x;
- int width = x2 - x1;
- return width;
- }
-
- return getSwtChart().getPlotArea().getSize().x;
- }
-
- /**
- * Sets whether or not to send time alignment signals. This should be set to
- * true for viewers that are part of an aligned view.
- *
- * @param sendTimeAlignSignals
- * whether or not to send time alignment signals
- * @since 1.0
- */
- public void setSendTimeAlignSignals(boolean sendTimeAlignSignals) {
- fSendTimeAlignSignals = sendTimeAlignSignals;
- }
-
- /**
- * Returns whether or not to send time alignment signals.
- *
- * @return whether or not to send time alignment signals.
- * @since 1.0
- */
- public boolean isSendTimeAlignSignals() {
- return fSendTimeAlignSignals;
- }
-
- @Override
- public void saveImage(String filename, int format) {
- getSwtChart().save(filename, format);
- }
-
- /**
- * Set the status bar manager
- *
- * @param statusLineManager
- * Status bar manager
- * @since 3.3
- */
- public void setStatusLineManager(IStatusLineManager statusLineManager) {
- if (fStatusLineManager != null && statusLineManager == null) {
- fStatusLineManager.setMessage(null);
- }
- fStatusLineManager = statusLineManager;
- }
-
- /**
- * Update the status line to include time selection
- *
- * @param startTime
- * Selection start time
- * @param endTime
- * Selection end time
- * @param cursorTime
- * Cursor time
- * @since 3.3
- */
- public void updateStatusLine(long startTime, long endTime, long cursorTime) {
- TimeFormat timeFormat = fTimeScaleCtrl.getTimeProvider().getTimeFormat().convert();
- boolean isCalendar = timeFormat == TimeFormat.CALENDAR;
-
- StringBuilder message = new StringBuilder();
- String spaces = " "; //$NON-NLS-1$
- if (cursorTime >= 0) {
- message.append("T: "); //$NON-NLS-1$
- if (isCalendar) {
- message.append(FormatTimeUtils.formatDate(cursorTime + getTimeOffset()) + ' ');
- }
- message.append(FormatTimeUtils.formatTime(cursorTime + getTimeOffset(), timeFormat, Resolution.NANOSEC));
- message.append(spaces);
- }
-
- if (startTime == endTime) {
- message.append("T1: "); //$NON-NLS-1$
- if (isCalendar) {
- message.append(FormatTimeUtils.formatDate(startTime + getTimeOffset()) + ' ');
- }
- message.append(FormatTimeUtils.formatTime(startTime + getTimeOffset(), timeFormat, Resolution.NANOSEC));
- } else {
- message.append("T1: "); //$NON-NLS-1$
- if (isCalendar) {
- message.append(FormatTimeUtils.formatDate(startTime + getTimeOffset()) + ' ');
- }
- message.append(FormatTimeUtils.formatTime(startTime + getTimeOffset(), timeFormat, Resolution.NANOSEC));
- message.append(spaces);
- message.append("T2: "); //$NON-NLS-1$
- if (isCalendar) {
- message.append(FormatTimeUtils.formatDate(endTime + getTimeOffset()) + ' ');
- }
- message.append(FormatTimeUtils.formatTime(endTime + getTimeOffset(), timeFormat, Resolution.NANOSEC));
- message.append(spaces);
- message.append("\u0394: " + FormatTimeUtils.formatDelta(endTime - startTime, timeFormat, Resolution.NANOSEC)); //$NON-NLS-1$
- }
-
- fStatusLineManager.setMessage(message.toString());
- }
-
- private ITmfTimeZoomProvider getTimeZoomProvider() {
- return (zoomIn, useMousePosition) -> {
- Chart chart = getSwtChart();
- if (chart == null) {
- return;
- }
- Point cursorDisplayLocation = getDisplay().getCursorLocation();
- Point cursorControlLocation = getSwtChart().getPlotArea().toControl(cursorDisplayLocation);
- Point cursorParentLocation = getSwtChart().getPlotArea().getParent().toControl(cursorDisplayLocation);
- Rectangle controlBounds = getSwtChart().getPlotArea().getBounds();
- // check the X axis only
- if (!controlBounds.contains(cursorParentLocation.x, controlBounds.y)) {
- return;
- }
- if (useMousePosition) {
- TmfXyUiUtils.zoom(this, chart, zoomIn, cursorControlLocation.x);
- } else {
- TmfXyUiUtils.zoom(this, chart, zoomIn);
- }
- };
- }
-
- private ITmfTimeNavigationProvider getTimeNavigator() {
- return left -> {
- Chart chart = getSwtChart();
- if (chart != null) {
- TmfXyUiUtils.horizontalScroll(this, chart, left);
- }
- };
- }
-
- private ITmfZoomToSelectionProvider getZoomToSelectionProvider() {
- return () -> {
- long selBegin = getSelectionBeginTime();
- long selEnd = getSelectionEndTime();
- if (selBegin != selEnd) {
- updateWindow(selBegin, selEnd);
- }
- };
- }
-
- private void updateTimeFormat() {
- if (fTimeFormat == null) {
- String datime = TmfTimePreferences.getPreferenceMap().get(ITmfTimePreferencesConstants.DATIME);
- if (ITmfTimePreferencesConstants.TIME_ELAPSED_FMT.equals(datime)) {
- fDataProvider.setTimeFormat(TimeFormat.RELATIVE);
- } else {
- fDataProvider.setTimeFormat(TimeFormat.CALENDAR);
- }
- } else {
- fDataProvider.setTimeFormat(fTimeFormat);
- }
- }
-}
diff --git a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xycharts/XYChartLegendImageProvider.java b/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xycharts/XYChartLegendImageProvider.java
deleted file mode 100644
index ea39f20..0000000
--- a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xycharts/XYChartLegendImageProvider.java
+++ /dev/null
@@ -1,173 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017 Ericsson
- *
- * All rights reserved. This program and the accompanying materials are
- * made available under the terms of the Eclipse Public License 2.0 which
- * accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-
-package org.eclipse.tracecompass.tmf.ui.viewers.xycharts;
-
-import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.ImageData;
-import org.eclipse.swt.graphics.PaletteData;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.tracecompass.internal.provisional.tmf.ui.viewers.xychart.BaseXYPresentationProvider;
-import org.eclipse.tracecompass.internal.tmf.ui.util.SymbolHelper;
-import org.eclipse.tracecompass.tmf.core.model.OutputElementStyle;
-import org.eclipse.tracecompass.tmf.core.model.StyleProperties;
-import org.eclipse.tracecompass.tmf.core.presentation.IYAppearance;
-import org.eclipse.tracecompass.tmf.core.presentation.RGBAColor;
-import org.eclipse.tracecompass.tmf.ui.viewers.ILegendImageProvider;
-import org.eclipse.tracecompass.tmf.ui.viewers.xycharts.linecharts.TmfCommonXAxisChartViewer;
-import org.swtchart.LineStyle;
-
-/**
- * Provides a legend image from an XY chart viewer. With a name, desired height
- * and width, an image is created.
- *
- * @author Yonni Chen
- * @since 3.2
- * @deprecated use {@link org.eclipse.tracecompass.tmf.ui.viewers.xychart.XYChartLegendImageProvider}
- */
-@Deprecated
-public class XYChartLegendImageProvider implements ILegendImageProvider {
-
- private static final @NonNull RGBAColor DEFAULT_COLOR = new RGBAColor(255, 255, 255);
- private static final int DEFAULT_SYMBOL_SIZE = 4;
-
- private final TmfCommonXAxisChartViewer fChartViewer;
-
- /**
- * Constructor
- *
- * @param chartViewer
- * XY Chart with which we create a legend image
- */
- public XYChartLegendImageProvider(TmfCommonXAxisChartViewer chartViewer) {
- fChartViewer = chartViewer;
- }
-
- @Override
- public Image getLegendImage(int imageHeight, int imageWidth, @NonNull Long id) {
- /*
- * If series exists in chart, then image legend match that series. Image will
- * make sense if series exists in chart. If it does not exists, an image will
- * still be created.
- */
- OutputElementStyle appearance = fChartViewer.getSeriesStyle(id);
- BaseXYPresentationProvider presProvider = fChartViewer.getPresentationProvider2();
- RGBAColor rgb = presProvider.getColorStyleOrDefault(appearance, StyleProperties.COLOR, DEFAULT_COLOR);
-
-
- Color lineColor = new Color(Display.getDefault(), rgb.getRed(), rgb.getGreen(), rgb.getBlue());
- Color background = Display.getDefault().getSystemColor(SWT.COLOR_WHITE);
-
- PaletteData palette = new PaletteData(background.getRGB(), lineColor.getRGB());
- ImageData imageData = new ImageData(imageWidth, imageHeight, 8, palette);
- imageData.transparentPixel = 0;
- Image image = new Image(Display.getDefault(), imageData);
- GC gc = new GC(image);
-
- gc.setBackground(background);
- gc.fillRectangle(0, 0, imageWidth, imageHeight);
- drawStyleLine(gc, lineColor, imageWidth, imageHeight, appearance);
-
- drawStyledDot(gc, lineColor, imageWidth, imageHeight, appearance);
-
- gc.dispose();
- lineColor.dispose();
- return image;
- }
-
- @Deprecated
- @Override
- public Image getLegendImage(int imageHeight, int imageWidth, @NonNull String name) {
- /*
- * If series exists in chart, then image legend match that series. Image will
- * make sense if series exists in chart. If it does not exists, an image will
- * still be created.
- */
- IYAppearance appearance = fChartViewer.getSeriesAppearance(name);
- RGBAColor rgb = appearance.getColor();
- Color lineColor = new Color(Display.getDefault(), rgb.getRed(), rgb.getGreen(), rgb.getBlue());
- Color background = Display.getDefault().getSystemColor(SWT.COLOR_WHITE);
-
- PaletteData palette = new PaletteData(background.getRGB(), lineColor.getRGB());
- ImageData imageData = new ImageData(imageWidth, imageHeight, 8, palette);
- imageData.transparentPixel = 0;
- Image image = new Image(Display.getDefault(), imageData);
- GC gc = new GC(image);
-
- gc.setBackground(background);
- gc.fillRectangle(0, 0, imageWidth, imageHeight);
- drawStyleLine(gc, lineColor, imageWidth, imageHeight, appearance.toOutputElementStyle());
-
- drawStyledDot(gc, lineColor, imageWidth, imageHeight, appearance.toOutputElementStyle());
-
- gc.dispose();
- lineColor.dispose();
- return image;
- }
-
- private void drawStyleLine(GC gc, Color lineColor, int imageWidth, int imageHeight, @NonNull OutputElementStyle appearance) {
- Color prev = gc.getForeground();
- BaseXYPresentationProvider presProvider = fChartViewer.getPresentationProvider2();
- LineStyle lineStyle = LineStyle.valueOf((String) presProvider.getStyleOrDefault(appearance, StyleProperties.SERIES_STYLE, StyleProperties.SeriesStyle.SOLID));
- if (lineStyle != LineStyle.NONE) {
- gc.setForeground(lineColor);
- gc.setLineWidth(((Number) presProvider.getFloatStyleOrDefault(appearance, StyleProperties.WIDTH, 1.0f)).intValue());
- gc.setLineStyle(lineStyle.ordinal());
- gc.drawLine(0, imageHeight / 2, imageWidth, imageHeight / 2);
- gc.setForeground(prev);
- }
- }
-
- private void drawStyledDot(GC gc, Color lineColor, int imageWidth, int imageHeight, @NonNull OutputElementStyle appearance) {
- BaseXYPresentationProvider presProvider = fChartViewer.getPresentationProvider2();
- String symbolStyle = (String) presProvider.getStyleOrDefault(appearance, StyleProperties.SYMBOL_TYPE, StyleProperties.SymbolType.NONE);
- int symbolSize = Math.round(presProvider.getFloatStyleOrDefault(appearance, StyleProperties.HEIGHT, 1.0f).floatValue() * DEFAULT_SYMBOL_SIZE);
- int centerX = imageWidth / 2;
- int centerY = imageHeight / 2;
- Color prevBg = gc.getBackground();
- Color prevFg = gc.getForeground();
- switch(symbolStyle) {
- case StyleProperties.SymbolType.CIRCLE:
- SymbolHelper.drawCircle(gc, lineColor, symbolSize, centerX, centerY);
- break;
- case StyleProperties.SymbolType.DIAMOND:
- SymbolHelper.drawDiamond(gc, lineColor, symbolSize, centerX, centerY);
- break;
- case StyleProperties.SymbolType.SQUARE:
- SymbolHelper.drawSquare(gc, lineColor, symbolSize, centerX, centerY);
- break;
- case StyleProperties.SymbolType.CROSS:
- SymbolHelper.drawCross(gc, lineColor, symbolSize, centerX, centerY);
- break;
- case StyleProperties.SymbolType.PLUS:
- SymbolHelper.drawPlus(gc, lineColor, symbolSize, centerX, centerY);
- break;
-
- case StyleProperties.SymbolType.INVERTED_TRIANGLE:
- SymbolHelper.drawInvertedTriangle(gc, lineColor, symbolSize, centerX, centerY);
- break;
- case StyleProperties.SymbolType.TRIANGLE:
- SymbolHelper.drawTriangle(gc, lineColor, symbolSize, centerX, centerY);
- break;
-
- default:
- // Default is nothing
- break;
- }
- gc.setForeground(prevFg);
- gc.setBackground(prevBg);
- }
-
-}
diff --git a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xycharts/barcharts/TmfHistogramTooltipProvider.java b/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xycharts/barcharts/TmfHistogramTooltipProvider.java
deleted file mode 100644
index 8b1ebc0..0000000
--- a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xycharts/barcharts/TmfHistogramTooltipProvider.java
+++ /dev/null
@@ -1,183 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2013, 2014 Ericsson
- *
- * All rights reserved. This program and the accompanying materials are
- * made available under the terms of the Eclipse Public License 2.0 which
- * accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Bernd Hufmann - Initial API and implementation
- **********************************************************************/
-package org.eclipse.tracecompass.tmf.ui.viewers.xycharts.barcharts;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.events.MouseMoveListener;
-import org.eclipse.swt.events.MouseTrackListener;
-import org.eclipse.swt.events.PaintEvent;
-import org.eclipse.swt.events.PaintListener;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.tracecompass.tmf.core.timestamp.TmfTimestamp;
-import org.eclipse.tracecompass.tmf.ui.viewers.xycharts.ITmfChartTimeProvider;
-import org.eclipse.tracecompass.tmf.ui.viewers.xycharts.TmfBaseProvider;
-import org.swtchart.IAxis;
-import org.swtchart.ISeries;
-
-/**
- * Tool tip provider for TMF bar chart viewer. It displays the y value of
- * position x as well as it highlights the bar of the x position.
- * It only considers the first series of the chart.
- *
- * @author Bernd Hufmann
- * @deprecated use {@link org.eclipse.tracecompass.tmf.ui.viewers.xychart.barchart.TmfHistogramTooltipProvider}
- */
-@Deprecated
-public class TmfHistogramTooltipProvider extends TmfBaseProvider implements MouseTrackListener, MouseMoveListener, PaintListener {
-
- // ------------------------------------------------------------------------
- // Attributes
- // ------------------------------------------------------------------------
- /** X coordinate for highlighting */
- private int fHighlightX;
- /** y coordinate for highlighting */
- private int fHighlightY;
- /** Flag to do highlighting or not */
- private boolean fIsHighlight;
-
- // ------------------------------------------------------------------------
- // Constructors
- // ------------------------------------------------------------------------
- /**
- * Constructor for a tool tip provider.
- *
- * @param tmfChartViewer
- * - the parent chart viewer
- */
- public TmfHistogramTooltipProvider(ITmfChartTimeProvider tmfChartViewer) {
- super(tmfChartViewer);
- register();
- }
-
- // ------------------------------------------------------------------------
- // TmfBaseProvider
- // ------------------------------------------------------------------------
- @Override
- public void register() {
- getChart().getPlotArea().addMouseTrackListener(this);
- getChart().getPlotArea().addMouseMoveListener(this);
- getChart().getPlotArea().addPaintListener(this);
- }
-
- @Override
- public void deregister() {
- if ((getChartViewer().getControl() != null) && !getChartViewer().getControl().isDisposed()) {
- getChart().getPlotArea().removeMouseTrackListener(this);
- getChart().getPlotArea().removeMouseMoveListener(this);
- getChart().getPlotArea().removePaintListener(this);
- }
- }
-
- @Override
- public void refresh() {
- // nothing to do
- }
-
- // ------------------------------------------------------------------------
- // MouseTrackListener
- // ------------------------------------------------------------------------
- @Override
- public void mouseEnter(MouseEvent e) {
- // Do nothing
- }
-
- @Override
- public void mouseExit(MouseEvent e) {
- // Do nothing
- }
-
- @Override
- public void mouseHover(MouseEvent e) {
- if (getChartViewer().getWindowDuration() != 0) {
- IAxis xAxis = getChart().getAxisSet().getXAxis(0);
- IAxis yAxis = getChart().getAxisSet().getYAxis(0);
-
- double xCoordinate = xAxis.getDataCoordinate(e.x);
-
- ISeries[] series = getChart().getSeriesSet().getSeries();
-
- if ((xCoordinate < 0) || (series.length == 0)) {
- return;
- }
-
- double y = 0.0;
- double rangeStart = 0.0;
- double rangeEnd = 0.0;
-
- // Consider first series only
- double[] xS = series[0].getXSeries();
- double[] yS = series[0].getYSeries();
-
- if ((xS == null) || (yS == null)) {
- return;
- }
-
- for (int i = 0; i < xS.length - 1; i++) {
- int pixel = xAxis.getPixelCoordinate(xS[i]);
- if (pixel <= e.x) {
- rangeStart = xS[i];
- rangeEnd = (long) xS[i + 1];
- if (xCoordinate >= rangeStart) {
- y = yS[i + 1];
- } else {
- y = yS[i];
- }
- }
- }
-
- ITmfChartTimeProvider viewer = getChartViewer();
-
- /* set tooltip of closest data point */
- StringBuffer buffer = new StringBuffer();
- buffer.append("Range=["); //$NON-NLS-1$
- buffer.append(TmfTimestamp.fromNanos((long) rangeStart + viewer.getTimeOffset()).toString());
- buffer.append(',');
- buffer.append(TmfTimestamp.fromNanos((long) rangeEnd + viewer.getTimeOffset()).toString());
- buffer.append("]\n"); //$NON-NLS-1$
- buffer.append("y="); //$NON-NLS-1$
- buffer.append((long) y);
- getChart().getPlotArea().setToolTipText(buffer.toString());
-
- fHighlightX = e.x;
- fHighlightY = yAxis.getPixelCoordinate(y);
- fIsHighlight = true;
- getChart().redraw();
- }
- }
-
- // ------------------------------------------------------------------------
- // MouseMoveListener
- // ------------------------------------------------------------------------
- @Override
- public void mouseMove(MouseEvent e) {
- fIsHighlight = false;
- getChart().redraw();
- }
-
- // ------------------------------------------------------------------------
- // PaintListener
- // ------------------------------------------------------------------------
- @Override
- public void paintControl(PaintEvent e) {
- if (fIsHighlight) {
- e.gc.setBackground(Display.getDefault().getSystemColor(
- SWT.COLOR_RED));
- e.gc.setAlpha(128);
-
- e.gc.fillOval(fHighlightX - 5, fHighlightY - 5, 10, 10);
- }
- }
-
-}
\ No newline at end of file
diff --git a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xycharts/linecharts/TmfCommonXAxisChartViewer.java b/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xycharts/linecharts/TmfCommonXAxisChartViewer.java
deleted file mode 100644
index ca10f76..0000000
--- a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xycharts/linecharts/TmfCommonXAxisChartViewer.java
+++ /dev/null
@@ -1,717 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2017, 2020 Ericsson, Draeger, Auriga
- *
- * All rights reserved. This program and the accompanying materials are
- * made available under the terms of the Eclipse Public License 2.0 which
- * accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- **********************************************************************/
-
-package org.eclipse.tracecompass.tmf.ui.viewers.xycharts.linecharts;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.concurrent.atomic.AtomicInteger;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.jdt.annotation.Nullable;
-import org.eclipse.jface.resource.ColorRegistry;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.RGBA;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.tracecompass.common.core.log.TraceCompassLog;
-import org.eclipse.tracecompass.common.core.log.TraceCompassLogUtils;
-import org.eclipse.tracecompass.common.core.log.TraceCompassLogUtils.FlowScopeLog;
-import org.eclipse.tracecompass.common.core.log.TraceCompassLogUtils.FlowScopeLogBuilder;
-import org.eclipse.tracecompass.internal.provisional.tmf.core.model.filters.TmfFilterAppliedSignal;
-import org.eclipse.tracecompass.internal.provisional.tmf.core.model.filters.TraceCompassFilter;
-import org.eclipse.tracecompass.internal.provisional.tmf.ui.viewers.xychart.BaseXYPresentationProvider;
-import org.eclipse.tracecompass.internal.tmf.core.model.filters.FetchParametersUtils;
-import org.eclipse.tracecompass.internal.tmf.ui.Activator;
-import org.eclipse.tracecompass.tmf.core.dataprovider.DataProviderParameterUtils;
-import org.eclipse.tracecompass.tmf.core.model.OutputElementStyle;
-import org.eclipse.tracecompass.tmf.core.model.StyleProperties;
-import org.eclipse.tracecompass.tmf.core.model.filters.TimeQueryFilter;
-import org.eclipse.tracecompass.tmf.core.model.timegraph.IFilterProperty;
-import org.eclipse.tracecompass.tmf.core.model.xy.ISeriesModel;
-import org.eclipse.tracecompass.tmf.core.model.xy.ITmfCommonXAxisModel;
-import org.eclipse.tracecompass.tmf.core.model.xy.ITmfXYDataProvider;
-import org.eclipse.tracecompass.tmf.core.model.xy.ITmfXyModel;
-import org.eclipse.tracecompass.tmf.core.presentation.IXYPresentationProvider;
-import org.eclipse.tracecompass.tmf.core.presentation.IYAppearance;
-import org.eclipse.tracecompass.tmf.core.presentation.RGBAColor;
-import org.eclipse.tracecompass.tmf.core.response.ITmfResponse;
-import org.eclipse.tracecompass.tmf.core.response.TmfModelResponse;
-import org.eclipse.tracecompass.tmf.core.signal.TmfSignalHandler;
-import org.eclipse.tracecompass.tmf.core.signal.TmfSignalManager;
-import org.eclipse.tracecompass.tmf.core.signal.TmfTraceClosedSignal;
-import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
-import org.eclipse.tracecompass.tmf.ui.colors.RGBAUtil;
-import org.eclipse.tracecompass.tmf.ui.signal.TmfTimeViewAlignmentInfo;
-import org.eclipse.tracecompass.tmf.ui.signal.TmfTimeViewAlignmentSignal;
-import org.eclipse.tracecompass.tmf.ui.viewers.xycharts.AxisRange;
-import org.eclipse.tracecompass.tmf.ui.viewers.xycharts.TmfChartTimeStampFormat;
-import org.eclipse.tracecompass.tmf.ui.viewers.xycharts.TmfXYChartViewer;
-import org.swtchart.IAxisSet;
-import org.swtchart.IAxisTick;
-import org.swtchart.IBarSeries;
-import org.swtchart.ILineSeries;
-import org.swtchart.ISeries;
-import org.swtchart.ISeries.SeriesType;
-import org.swtchart.ISeriesSet;
-import org.swtchart.LineStyle;
-import org.swtchart.Range;
-
-import com.google.common.collect.HashMultimap;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableMap.Builder;
-import com.google.common.collect.Multimap;
-
-/**
- * XY Chart viewer class implementation. All series in this viewer use the same
- * X axis values. They are automatically created as values are provided for a
- * key. Series by default will be displayed as a line. Each series appearance
- * can be overridden when creating it.
- *
- * @author Yonni Chen
- * @since 3.2
- * @deprecated use {@link org.eclipse.tracecompass.tmf.ui.viewers.xychart.linechart.TmfCommonXAxisChartViewer}
- */
-@Deprecated
-public abstract class TmfCommonXAxisChartViewer extends TmfXYChartViewer {
-
- private static final String DIRTY_UNDERFLOW_ERROR = "Dirty underflow error"; //$NON-NLS-1$
- private static final @NonNull RGBAColor DEFAULT_COLOR = new RGBAColor(0, 0, 0);
- private static final int DEFAULT_SYMBOL_SIZE = 4;
-
- private static final Map<String, ILineSeries.PlotSymbolType> SYMBOL_MAP;
- private static final ColorRegistry COLOR_REGISTRY = new ColorRegistry();
-
- static {
- ImmutableMap.Builder<String, ILineSeries.PlotSymbolType> builder = new Builder<>();
- builder.put(StyleProperties.SymbolType.NONE, ILineSeries.PlotSymbolType.NONE);
- builder.put(StyleProperties.SymbolType.CIRCLE, ILineSeries.PlotSymbolType.CIRCLE);
- builder.put(StyleProperties.SymbolType.CROSS, ILineSeries.PlotSymbolType.CROSS);
- builder.put(StyleProperties.SymbolType.DIAMOND, ILineSeries.PlotSymbolType.DIAMOND);
- builder.put(StyleProperties.SymbolType.INVERTED_TRIANGLE, ILineSeries.PlotSymbolType.INVERTED_TRIANGLE);
- builder.put(StyleProperties.SymbolType.TRIANGLE, ILineSeries.PlotSymbolType.TRIANGLE);
- builder.put(StyleProperties.SymbolType.PLUS, ILineSeries.PlotSymbolType.PLUS);
- builder.put(StyleProperties.SymbolType.SQUARE, ILineSeries.PlotSymbolType.SQUARE);
- SYMBOL_MAP = builder.build();
- }
- private static final double DEFAULT_MAXY = Double.MIN_VALUE;
- private static final double DEFAULT_MINY = Double.MAX_VALUE;
-
- /** Timeout between updates in the updateData thread **/
- private static final long BUILD_UPDATE_TIMEOUT = 500;
-
- private static final @NonNull Logger LOGGER = TraceCompassLog.getLogger(TmfCommonXAxisChartViewer.class);
- private static final int DEFAULT_SERIES_WIDTH = 1;
- private static final String DIMMED_SERIES_SUFFIX = ".dimmed"; //$NON-NLS-1$
-
- private final double fResolution;
- private final AtomicInteger fDirty = new AtomicInteger();
- private final Map<ITmfTrace, BaseXYPresentationProvider> fXYPresentationProvider;
- private UpdateThread fUpdateThread;
-
- /** Used for testing **/
- private int fOverrideNbPoints = 0;
-
- /**
- * Constructor
- *
- * @param parent
- * The parent composite
- * @param settings
- * See {@link TmfXYChartSettings} to know what it contains
- */
- public TmfCommonXAxisChartViewer(Composite parent, TmfXYChartSettings settings) {
- super(parent, settings.getTitle(), settings.getXLabel(), settings.getYLabel());
- getSwtChart().getTitle().setVisible(false);
- getSwtChart().getLegend().setPosition(SWT.BOTTOM);
- getSwtChart().getAxisSet().getXAxes()[0].getTitle().setVisible(false);
- fResolution = settings.getResolution();
- setTooltipProvider(new TmfCommonXLineChartTooltipProvider(this));
- fXYPresentationProvider = new HashMap<>();
- }
-
- @Override
- public void loadTrace(ITmfTrace trace) {
- super.loadTrace(trace);
- fXYPresentationProvider.computeIfAbsent(trace, t -> createPresentationProvider(trace));
- }
-
- /**
- * Create a new presentation provider for this XY viewer. Sub-classes can
- * overwrite this method to provide specific XY presentation provider
- * instances.
- *
- * @param trace
- * The trace to get the provider for
- *
- * @return A new presentation provider
- * @since 6.0
- */
- protected BaseXYPresentationProvider createPresentationProvider(ITmfTrace trace) {
- return new BaseXYPresentationProvider();
- }
-
- @Override
- public boolean isDirty() {
- /* Check the parent's or this view's own dirtiness */
- return super.isDirty() || (fDirty.get() != 0);
- }
-
- /**
- * Force the number of points to a fixed value
- *
- * @param nbPoints
- * The number of points to display, cannot be negative. 0
- * means use native resolution. any positive integer means
- * that number of points
- */
- public synchronized void setNbPoints(int nbPoints) {
- if (nbPoints < 0) {
- throw new IllegalArgumentException("Number of points cannot be negative"); //$NON-NLS-1$
- }
- fOverrideNbPoints = nbPoints;
- updateContent();
- }
-
- /**
- * Initialize the data provider of this viewer
- *
- * FIXME Make this abstract when incrementing the major version
- *
- * @param trace
- * The trace
- * @return the data provider
- * @since 4.0
- */
- protected ITmfXYDataProvider initializeDataProvider(@NonNull ITmfTrace trace) {
- throw new UnsupportedOperationException("This needs to be implemented concrete classes"); //$NON-NLS-1$
- }
-
- /**
- * Gets the presentation provider
- *
- * @return The presentation provider
- * @since 4.0
- */
- protected IXYPresentationProvider getPresentationProvider() {
- return Objects.requireNonNull(fXYPresentationProvider.get(getTrace()));
- }
-
- /**
- * Gets the presentation provider
- *
- * @return The presentation provider
- * @since 6.0
- */
- public BaseXYPresentationProvider getPresentationProvider2() {
- return Objects.requireNonNull(fXYPresentationProvider.get(getTrace()));
- }
-
- /**
- * Create map of parameters that will be used by updateData method. If a
- * viewer need a more specialized map than just the time requested it's its
- * responsibility to override this method and provide the desired instance.
- *
- * @param start
- * The starting value
- * @param end
- * The ending value
- * @param nb
- * The number of entries
- * @return Map of parameters
- * @since 5.0
- */
- protected @NonNull Map<String, Object> createQueryParameters(long start, long end, int nb) {
- Map<@NonNull String, @NonNull Object> parameters = FetchParametersUtils.timeQueryToMap(new TimeQueryFilter(start, end, nb));
- Multimap<@NonNull Integer, @NonNull String> regexesMap = getRegexes();
- if (!regexesMap.isEmpty()) {
- parameters.put(DataProviderParameterUtils.REGEX_MAP_FILTERS_KEY, regexesMap.asMap());
- }
- return parameters;
- }
-
- /**
- * Gets the appearance of a given series. If appearance doesn't exist, a new one
- * will be created by the presentation provider
- *
- * @param seriesName
- * The name of the series
- * @return An {@link IYAppearance} instance for the series
- * @since 4.0
- * @deprecated As of 6.0, use {@link #getSeriesStyle(Long)} instead
- */
- @Deprecated
- public @NonNull IYAppearance getSeriesAppearance(@NonNull String seriesName) {
- return getPresentationProvider().getAppearance(seriesName, IYAppearance.Type.LINE, DEFAULT_SERIES_WIDTH);
- }
-
- /**
- * Gets the style of a given series. If style doesn't exist, a new one will
- * be created by the presentation provider
- *
- * @param seriesId
- * The unique ID of the series
- * @return An {@link OutputElementStyle} instance for the series
- * @since 6.0
- */
- public @NonNull OutputElementStyle getSeriesStyle(@NonNull Long seriesId) {
- return getPresentationProvider().getSeriesStyle(seriesId, StyleProperties.SeriesType.LINE, DEFAULT_SERIES_WIDTH);
- }
-
- /**
- * Cancels the currently running update thread. It is automatically called when
- * the content is updated, but child viewers may want to call it manually to do
- * some operations before calling
- * {@link TmfCommonXAxisChartViewer#updateContent}
- */
- protected synchronized void cancelUpdate() {
- if (fUpdateThread != null) {
- fUpdateThread.cancel();
- }
- }
-
- @Override
- protected void updateContent() {
- ITmfTrace trace = getTrace();
- if (trace == null) {
- return;
- }
- cancelUpdate();
- try (FlowScopeLog parentScope = new FlowScopeLogBuilder(LOGGER, Level.FINE, "CommonXLineChart:ContentUpdateRequested").setCategory(getViewerId()).build()) { //$NON-NLS-1$
- /*
- * Content is not up to date, so we increment fDirty. It will be decremented at
- * the end of the update thread
- */
- fDirty.incrementAndGet();
- getDisplay().asyncExec(() -> {
- if (!trace.equals(getTrace())) {
- return;
- }
- try (FlowScopeLog scope = new FlowScopeLogBuilder(LOGGER, Level.FINE, "CommonXLineChart:CreatingUpdateThread").setParentScope(parentScope).build()) { //$NON-NLS-1$
- newUpdateThread(trace, scope);
- }
- });
- }
- }
-
- @Override
- protected void clearContent() {
- getSwtChart().getAxisSet().getXAxis(0).getTick().setFormat(null);
- super.clearContent();
- }
-
- private @NonNull String getViewerId() {
- return getClass().getName();
- }
-
- private class UpdateThread extends Thread {
-
- private final ITmfTrace fTrace;
- private final IProgressMonitor fMonitor;
- private final int fNumRequests;
- private final @NonNull FlowScopeLog fScope;
-
- public UpdateThread(ITmfTrace trace, int numRequests, @NonNull FlowScopeLog log) {
- super("Line chart update"); //$NON-NLS-1$
- fTrace = trace;
- fNumRequests = numRequests;
- fMonitor = new NullProgressMonitor();
- fScope = log;
- }
-
- @Override
- public void run() {
- try (FlowScopeLog scope = new FlowScopeLogBuilder(LOGGER, Level.FINE, "CommonXLineChart:UpdateThread", "numRequests=", fNumRequests).setParentScope(fScope).build()) { //$NON-NLS-1$ //$NON-NLS-2$
- ITmfXYDataProvider dataProvider = null;
- try (FlowScopeLog scopeDp = new FlowScopeLogBuilder(LOGGER, Level.FINE, "CommonXLineChart:InitializeDataProvider").setParentScope(fScope).build()) { //$NON-NLS-1$
- dataProvider = initializeDataProvider(fTrace);
- }
- if (dataProvider == null) {
- TraceCompassLogUtils.traceInstant(LOGGER, Level.WARNING, "Data provider for this viewer is not available"); //$NON-NLS-1$
- return;
- }
- try {
- int numRequests = fNumRequests;
- if (numRequests == 0) {
- return;
- }
- Map<String, Object> parameters = createQueryParameters(getWindowStartTime(), getWindowEndTime(), numRequests);
- updateData(dataProvider, parameters, fMonitor);
- } finally {
- /*
- * fDirty should have been incremented before creating the thread, so we
- * decrement it once it is finished
- */
- if (fDirty.decrementAndGet() < 0) {
- Activator.getDefault().logError(DIRTY_UNDERFLOW_ERROR, new Throwable());
- }
- }
- updateThreadFinished(this);
- }
- }
-
- public void cancel() {
- TraceCompassLogUtils.traceInstant(LOGGER, Level.FINE, "CommonXLineChart:UpdateThreadCanceled"); //$NON-NLS-1$
- fMonitor.setCanceled(true);
- }
-
- /**
- * This method is responsible for calling the
- * {@link UpdateThread#updateDisplay(ITmfCommonXAxisModel)} when needed for the
- * new values to be displayed.
- *
- * @param dataProvider
- * A data provider
- * @param parameters
- * A query filter
- * @param monitor
- * A monitor for canceling task
- */
- private void updateData(@NonNull ITmfXYDataProvider dataProvider, @NonNull Map<String, Object> parameters, IProgressMonitor monitor) {
- boolean isComplete = false;
- do {
- TmfModelResponse<ITmfXyModel> response = dataProvider.fetchXY(parameters, monitor);
- ITmfXyModel model = response.getModel();
- if (model != null) {
- updateDisplay(model, monitor);
- }
-
- ITmfResponse.Status status = response.getStatus();
- if (status == ITmfResponse.Status.COMPLETED) {
- /* Model is complete, no need to request again the data provider */
- isComplete = true;
- } else if (status == ITmfResponse.Status.FAILED || status == ITmfResponse.Status.CANCELLED) {
- /* Error occurred, log and return */
- TraceCompassLogUtils.traceInstant(LOGGER, Level.WARNING, response.getStatusMessage());
- isComplete = true;
- } else {
- /**
- * Status is RUNNING. Sleeping current thread to wait before request data
- * provider again
- **/
- try {
- Thread.sleep(BUILD_UPDATE_TIMEOUT);
- } catch (InterruptedException e) {
- /**
- * InterruptedException is throw by Thread.Sleep and we should retry querying
- * the data provider
- **/
- TraceCompassLogUtils.traceInstant(LOGGER, Level.INFO, e.getMessage());
- Thread.currentThread().interrupt();
- }
- }
- } while (!isComplete);
- }
-
- /**
- * Update the chart's values before refreshing the viewer
- */
- private void updateDisplay(ITmfXyModel model, IProgressMonitor monitor) {
- try (FlowScopeLog scope = new FlowScopeLogBuilder(LOGGER, Level.FINE, "TmfCommonXAxisChart:UpdateDisplayRequested").setCategory(getViewerId()).build()) { //$NON-NLS-1$
- /* Content is not up to date, increment dirtiness */
- final ITmfXyModel seriesValues = model;
- fDirty.incrementAndGet();
-
- Display.getDefault().asyncExec(() -> {
- final TmfChartTimeStampFormat tmfChartTimeStampFormat = new TmfChartTimeStampFormat(getTimeOffset());
- try (FlowScopeLog log = new FlowScopeLogBuilder(LOGGER, Level.FINE, "TmfCommonXAxisChart:UpdateDisplay").setParentScope(scope).build()) { //$NON-NLS-1$
- if (!fTrace.equals(getTrace())) {
- return;
- }
- if (getSwtChart().isDisposed()) {
- return;
- }
- if (monitor != null && monitor.isCanceled()) {
- return;
- }
- double maxy = DEFAULT_MAXY;
- double miny = DEFAULT_MINY;
- long delta = getWindowEndTime() - getWindowStartTime();
- if (delta > 0) {
- for (ISeriesModel entry : seriesValues.getSeriesData()) {
- double[] extractXValuesToDisplay = extractXValuesToDisplay(entry.getXAxis());
- List<Double> dimmedX = new ArrayList<>(extractXValuesToDisplay.length);
- List<Double> dimmedY = new ArrayList<>(extractXValuesToDisplay.length);
- List<Double> brightX = new ArrayList<>(extractXValuesToDisplay.length);
- List<Double> brightY = new ArrayList<>(extractXValuesToDisplay.length);
-
- int[] propertiesArray = entry.getProperties();
- double[] data = entry.getData();
- for (int i = 0; i < extractXValuesToDisplay.length; i++) {
- double value = data[i];
- /*
- * Find the minimal and maximum values in this series
- */
- maxy = Math.max(maxy, value);
- miny = Math.min(miny, value);
- int properties = (i < propertiesArray.length) ? propertiesArray[i] : 0;
- if ((properties & IFilterProperty.EXCLUDE) == 0) {
- if ((properties & IFilterProperty.DIMMED) == 0) {
- brightX.add(extractXValuesToDisplay[i]);
- brightY.add(value);
- } else {
- dimmedX.add(extractXValuesToDisplay[i]);
- dimmedY.add(value);
- }
- }
- }
- double[] brightXArray = new double[brightX.size()];
- double[] brightYArray = new double[brightY.size()];
- for (int i = 0; i < brightX.size(); i++) {
- brightXArray[i] = brightX.get(i);
- brightYArray[i] = brightY.get(i);
- }
- double[] dimmedXArray = new double[dimmedX.size()];
- double[] dimmedYArray = new double[dimmedY.size()];
- for (int i = 0; i < dimmedX.size(); i++) {
- dimmedXArray[i] = dimmedX.get(i);
- dimmedYArray[i] = dimmedY.get(i);
- }
-
- // Create and fill the series
- ISeriesSet seriesSet = getSwtChart().getSeriesSet();
- ISeries series = seriesSet.getSeries(entry.getName());
- ISeries dimmedSeries = seriesSet.getSeries(entry.getName() + DIMMED_SERIES_SUFFIX);
- if (brightX.isEmpty()) {
- // Remove the base series since there is
- // nothing to show
- if (series != null) {
- seriesSet.deleteSeries(entry.getName());
- }
- } else {
- if (series == null) {
- series = createSWTSeriesFromModel(entry);
- }
- series.setXSeries(brightXArray);
- series.setYSeries(brightYArray);
- }
- if (dimmedX.isEmpty()) {
- // Remove the base series since there is
- // nothing to show
- if (dimmedSeries != null) {
- seriesSet.deleteSeries(entry.getName() + DIMMED_SERIES_SUFFIX);
- }
- } else {
- if (dimmedSeries == null) {
- dimmedSeries = createDimmedSeriesFromModel(entry);
- }
- dimmedSeries.setXSeries(dimmedXArray);
- dimmedSeries.setYSeries(dimmedYArray);
- }
- }
- maxy = maxy == DEFAULT_MAXY ? 1.0 : maxy;
- } else {
- clearContent();
- delta = 1;
- }
-
- IAxisSet axisSet = getSwtChart().getAxisSet();
- IAxisTick xTick = axisSet.getXAxis(0).getTick();
- xTick.setFormat(tmfChartTimeStampFormat);
- final double start = 1.0;
- axisSet.getXAxis(0).setRange(new Range(start, start + delta));
- AxisRange fixedYRange = getFixedYRange();
- if (fixedYRange == null) {
- axisSet.getYAxis(0).adjustRange();
- } else {
- axisSet.getYAxis(0).setRange(
- new Range(fixedYRange.getLower(), fixedYRange.getUpper()));
- }
- getSwtChart().redraw();
-
- if (isSendTimeAlignSignals()) {
- /*
- * The width of the chart might have changed and its time axis might be
- * misaligned with the other views
- */
- Composite parent = TmfCommonXAxisChartViewer.this.getParent();
- if (parent == null || parent.getParent() == null) {
- return;
- }
- Point viewPos = parent.getParent().toDisplay(0, 0);
- int axisPos = getSwtChart().toDisplay(0, 0).x + getPointAreaOffset();
- int timeAxisOffset = axisPos - viewPos.x;
- TmfTimeViewAlignmentInfo timeAlignmentInfo = new TmfTimeViewAlignmentInfo(getControl().getShell(), viewPos, timeAxisOffset);
- TmfSignalManager.dispatchSignal(new TmfTimeViewAlignmentSignal(TmfCommonXAxisChartViewer.this, timeAlignmentInfo, true));
- }
-
- } finally {
- /* Content has been updated, decrement dirtiness */
- if (fDirty.decrementAndGet() < 0) {
- Activator.getDefault().logError(DIRTY_UNDERFLOW_ERROR, new Throwable());
- }
- }
- });
- }
- }
-
- /**
- * Since the XY Model returned by data provider contains directly the requested
- * time as long array, we need to convert it to double array for the SWT Chart.
- */
- private double[] extractXValuesToDisplay(long[] xValuesRequested) {
- double[] xValuesToDisplay = new double[xValuesRequested.length];
- long offset = getTimeOffset();
-
- for (int i = 0; i < xValuesRequested.length; ++i) {
- xValuesToDisplay[i] = (xValuesRequested[i] - offset);
- }
- return xValuesToDisplay;
- }
-
- private @NonNull ISeries createSWTSeriesFromModel(ISeriesModel yModel) {
- ISeriesSet seriesSet = getSwtChart().getSeriesSet();
-
- String seriesName = yModel.getName();
- OutputElementStyle appearance = getSeriesStyle(yModel.getId());
- BaseXYPresentationProvider presProvider = getPresentationProvider2();
-
- String type = (String) presProvider.getStyleOrDefault(appearance, StyleProperties.SERIES_TYPE, StyleProperties.SeriesType.LINE);
- RGBAColor rgb = presProvider.getColorStyleOrDefault(appearance, StyleProperties.COLOR, DEFAULT_COLOR);
- COLOR_REGISTRY.put(rgb.toString(), RGBAUtil.fromRGBAColor(rgb).rgb);
- Color color = COLOR_REGISTRY.get(rgb.toString());
- String symbolType = (String) presProvider.getStyle(appearance, StyleProperties.SYMBOL_TYPE);
-
- if (type.equals(StyleProperties.SeriesType.BAR)) {
- IBarSeries barSeries = (IBarSeries) seriesSet.createSeries(SeriesType.BAR, seriesName);
- barSeries.enableStack(true);
- barSeries.setBarColor(color);
- barSeries.setBarPadding(0);
- barSeries.setVisible(true);
- return barSeries;
- }
-
- /**
- * Default is line chart
- */
- ILineSeries lineSeries = (ILineSeries) seriesSet.createSeries(SeriesType.LINE, seriesName);
- lineSeries.enableArea(StyleProperties.SeriesType.AREA.equals(type));
- lineSeries.setLineStyle(LineStyle.valueOf((String) presProvider.getStyleOrDefault(appearance, StyleProperties.SERIES_STYLE, StyleProperties.SeriesStyle.SOLID)));
- lineSeries.setSymbolType(SYMBOL_MAP.getOrDefault(symbolType, ILineSeries.PlotSymbolType.NONE));
- lineSeries.setSymbolSize(Math.round(presProvider.getFloatStyleOrDefault(appearance, StyleProperties.HEIGHT, 1.0f).floatValue() * DEFAULT_SYMBOL_SIZE));
- lineSeries.setLineColor(color);
- lineSeries.setSymbolColor(color);
- lineSeries.setVisible(true);
- lineSeries.setLineWidth(((Number) presProvider.getFloatStyleOrDefault(appearance, StyleProperties.WIDTH, 1.0f)).intValue());
- return lineSeries;
- }
-
- private @NonNull ISeries createDimmedSeriesFromModel(ISeriesModel yModel) {
- ISeriesSet seriesSet = getSwtChart().getSeriesSet();
-
- String seriesName = yModel.getName() + DIMMED_SERIES_SUFFIX;
- OutputElementStyle appearance = getSeriesStyle(yModel.getId());
- BaseXYPresentationProvider presProvider = getPresentationProvider2();
-
- String type = (String) presProvider.getStyleOrDefault(appearance, StyleProperties.SERIES_TYPE, StyleProperties.SeriesType.LINE);
- RGBAColor rgbaColor = presProvider.getColorStyleOrDefault(appearance, StyleProperties.COLOR, DEFAULT_COLOR);
- float[] rgb = rgbaColor.getHSBA();
- COLOR_REGISTRY.put(rgb.toString(), new RGBA(rgb[0], rgb[1] * 0.5f, rgb[2] * 0.5f, rgb[3]).rgb);
- Color color = COLOR_REGISTRY.get(rgb.toString());
- String symbolType = (String) presProvider.getStyle(appearance, StyleProperties.SYMBOL_TYPE);
-
- if (type.equals(StyleProperties.SeriesType.BAR)) {
- IBarSeries barSeries = (IBarSeries) seriesSet.createSeries(SeriesType.BAR, seriesName);
- barSeries.enableStack(true);
- barSeries.setBarColor(color);
- barSeries.setBarPadding(0);
- barSeries.setVisible(true);
- return barSeries;
- }
-
- /**
- * Default is line chart
- */
- ILineSeries lineSeries = (ILineSeries) seriesSet.createSeries(SeriesType.LINE, seriesName);
- lineSeries.enableArea(StyleProperties.SeriesType.AREA.equals(type));
- lineSeries.setLineStyle(LineStyle.valueOf((String) presProvider.getStyleOrDefault(appearance, StyleProperties.SERIES_STYLE, StyleProperties.SeriesStyle.SOLID)));
- lineSeries.setSymbolType(SYMBOL_MAP.getOrDefault(symbolType, ILineSeries.PlotSymbolType.NONE));
- lineSeries.setSymbolSize(Math.round(presProvider.getFloatStyleOrDefault(appearance, StyleProperties.HEIGHT, 1.0f).floatValue() * DEFAULT_SYMBOL_SIZE));
- lineSeries.setLineColor(color);
- lineSeries.setSymbolColor(color);
- lineSeries.setVisible(true);
- lineSeries.setLineWidth(((Number) presProvider.getFloatStyleOrDefault(appearance, StyleProperties.WIDTH, 1.0f)).intValue());
- return lineSeries;
- }
-
- private synchronized void updateThreadFinished(UpdateThread thread) {
- if (thread == fUpdateThread) {
- fUpdateThread = null;
- }
- }
- }
-
- private synchronized void newUpdateThread(@NonNull ITmfTrace trace, @NonNull FlowScopeLog fScope) {
- if (getSwtChart().isDisposed()) {
- return;
- }
- int numRequests = fOverrideNbPoints != 0 ? fOverrideNbPoints : (int) Math.min(getWindowEndTime() - getWindowStartTime() + 1, (long) (getSwtChart().getPlotArea().getBounds().width * fResolution));
- fUpdateThread = new UpdateThread(trace, numRequests, fScope);
- fUpdateThread.start();
- }
-
- @TmfSignalHandler
- @Override
- public void traceClosed(@Nullable TmfTraceClosedSignal signal) {
- cancelUpdate();
- super.traceClosed(signal);
- if (signal != null) {
- fXYPresentationProvider.remove(signal.getTrace());
- }
- }
-
- /**
- * Set or remove the global regex filter value
- *
- * @param signal
- * the signal carrying the regex value
- * @since 4.2
- */
- @TmfSignalHandler
- public void regexFilterApplied(TmfFilterAppliedSignal signal) {
- updateContent();
- }
-
- /**
- * This method build the multimap of regexes by property that will be used to
- * filter the timegraph states
- *
- * Override this method to add other regexes with their properties. The data
- * provider should handle everything after.
- *
- * @return The multimap of regexes by property
- * @since 4.2
- */
- protected @NonNull Multimap<@NonNull Integer, @NonNull String> getRegexes() {
- Multimap<@NonNull Integer, @NonNull String> regexes = HashMultimap.create();
-
- ITmfTrace trace = getTrace();
- if (trace == null) {
- return regexes;
- }
- TraceCompassFilter globalFilter = TraceCompassFilter.getFilterForTrace(trace);
- if (globalFilter == null) {
- return regexes;
- }
- regexes.putAll(IFilterProperty.DIMMED, globalFilter.getRegexes());
-
- return regexes;
- }
-}
diff --git a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xycharts/linecharts/TmfCommonXLineChartTooltipProvider.java b/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xycharts/linecharts/TmfCommonXLineChartTooltipProvider.java
deleted file mode 100644
index 54e2ae7..0000000
--- a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xycharts/linecharts/TmfCommonXLineChartTooltipProvider.java
+++ /dev/null
@@ -1,200 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2014, 2019 École Polytechnique de Montréal and others
- *
- * All rights reserved. This program and the accompanying materials are
- * made available under the terms of the Eclipse Public License 2.0 which
- * accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Geneviève Bastien - Initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.tracecompass.tmf.ui.viewers.xycharts.linecharts;
-
-import java.text.Format;
-import java.util.Arrays;
-
-import org.eclipse.jdt.annotation.Nullable;
-import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.events.MouseTrackListener;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.RGBA;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.tracecompass.internal.tmf.ui.Messages;
-import org.eclipse.tracecompass.tmf.core.presentation.RGBAColor;
-import org.eclipse.tracecompass.tmf.core.timestamp.ITmfTimestamp;
-import org.eclipse.tracecompass.tmf.core.timestamp.TmfTimestamp;
-import org.eclipse.tracecompass.tmf.ui.viewers.TmfAbstractToolTipHandler;
-import org.eclipse.tracecompass.tmf.ui.viewers.xycharts.ITmfChartTimeProvider;
-import org.eclipse.tracecompass.tmf.ui.viewers.xycharts.TmfBaseProvider;
-import org.swtchart.Chart;
-import org.swtchart.IAxis;
-import org.swtchart.IAxisSet;
-import org.swtchart.IBarSeries;
-import org.swtchart.ILineSeries;
-import org.swtchart.ISeries;
-
-/**
- * Displays a tooltip on line charts. For each series, it shows the y value at
- * the selected x value. This tooltip assumes that all series share a common set
- * of X axis values. If the X series is not common, the tooltip text may not be
- * accurate.
- *
- * @author Geneviève Bastien
- * @deprecated use {@link org.eclipse.tracecompass.tmf.ui.viewers.xychart.linechart.TmfCommonXLineChartTooltipProvider}
- */
-@Deprecated
-public class TmfCommonXLineChartTooltipProvider extends TmfBaseProvider implements MouseTrackListener {
-
- private final class XYToolTipHandler extends TmfAbstractToolTipHandler {
- private static final String HTML_COLOR_TOOLTIP = "<span style=\"color:%s;\">%s</span>"; //$NON-NLS-1$
-
- private boolean isValid(int index, ISeries serie) {
- double[] ySeries = serie.getYSeries();
- return serie.isVisible() && ySeries != null && ySeries.length > index;
- }
-
- @Override
- public void fill(Control control, MouseEvent event, Point pt) {
- if (getChartViewer().getWindowDuration() != 0) {
- Chart chart = getChart();
- IAxisSet axisSet = chart.getAxisSet();
- IAxis xAxis = axisSet.getXAxis(0);
-
- double xCoordinate = xAxis.getDataCoordinate(pt.x);
-
- ISeries[] series = getChart().getSeriesSet().getSeries();
-
- if ((xCoordinate < 0) || (series.length == 0)) {
- return;
- }
-
- /* Find the index of the value we want */
- double[] xS = series[0].getXSeries();
- if (xS == null) {
- return;
- }
- int index = Arrays.binarySearch(xS, xCoordinate);
- index = index >= 0 ? index : -index - 1;
- int maxLen = 0;
- for (ISeries serie : series) {
- /* Make sure the series values and the value at index exist */
- if (isValid(index, serie)) {
- maxLen = Math.max(maxLen, serie.getId().length());
- }
- }
-
- TmfCommonXAxisChartViewer viewer = null;
- Format format = null;
- ITmfChartTimeProvider timeProvider = getChartViewer();
- if (timeProvider instanceof TmfCommonXAxisChartViewer) {
- viewer = (TmfCommonXAxisChartViewer) timeProvider;
- format = viewer.getSwtChart().getAxisSet().getYAxes()[0].getTick().getFormat();
- }
- ITmfTimestamp time = TmfTimestamp.fromNanos((long) xCoordinate + getChartViewer().getTimeOffset());
- addItem(null, ToolTipString.fromString(Messages.TmfCommonXLineChartTooltipProvider_time), ToolTipString.fromTimestamp(time.toString(), time.toNanos()));
- /* For each series, get the value at the index */
- for (ISeries serie : series) {
- double[] yS = serie.getYSeries();
- /* Make sure the series values and the value at index exist */
- if (isValid(index, serie)) {
- String key = serie.getId();
- Color color = getSeriesColor(serie);
- if (key != null && color != null) {
- RGBA rgba = color.getRGBA();
- RGBAColor rgbaColor = new RGBAColor(rgba.rgb.red, rgba.rgb.green, rgba.rgb.blue, rgba.alpha);
- key = String.format(HTML_COLOR_TOOLTIP, rgbaColor, key);
- }
- if (key == null) {
- key = ""; //$NON-NLS-1$
- }
- double yValue = yS[index];
- if (format == null) {
- addItem(null, ToolTipString.fromHtml(key), ToolTipString.fromDecimal(yValue));
- } else {
- addItem(null, ToolTipString.fromHtml(key), ToolTipString.fromString(format.format(yValue)));
- }
- }
- }
- }
- }
-
- private @Nullable Color getSeriesColor(ISeries series) {
- if (series instanceof IBarSeries) {
- return ((IBarSeries) series).getBarColor();
- } else if (series instanceof ILineSeries) {
- return ((ILineSeries) series).getLineColor();
- }
- return null;
- }
- }
-
- private XYToolTipHandler fToolTipHandler = new XYToolTipHandler();
-
- /**
- * Constructor for the tooltip provider
- *
- * @param tmfChartViewer
- * The parent chart viewer
- */
- public TmfCommonXLineChartTooltipProvider(ITmfChartTimeProvider tmfChartViewer) {
- super(tmfChartViewer);
- register();
- }
-
- // ------------------------------------------------------------------------
- // TmfBaseProvider
- // ------------------------------------------------------------------------
-
- @Override
- public void register() {
- fToolTipHandler.activateHoverHelp(getChart().getPlotArea());
- }
-
- @Override
- public void deregister() {
- if ((getChartViewer().getControl() != null) && !getChartViewer().getControl().isDisposed()) {
- fToolTipHandler.deactivateHoverHelp(getChart().getPlotArea());
- }
- }
-
- @Override
- public void refresh() {
- // nothing to do
- }
-
- // ------------------------------------------------------------------------
- // MouseTrackListener
- // ------------------------------------------------------------------------
-
- /**
- * @deprecated, do not extend, use as-is
- */
- @Deprecated
- @Override
- public void mouseEnter(MouseEvent e) {
- // do nothing
- }
-
- /**
- * @deprecated, do not extend, use as-is
- */
- @Deprecated
- @Override
- public void mouseExit(MouseEvent e) {
- // do nothing
- }
-
- /**
- * @deprecated, do not extend, use as-is
- */
- @Deprecated
- @Override
- public void mouseHover(MouseEvent e) {
- // do nothing
- }
-}
diff --git a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xycharts/linecharts/TmfFilteredXYChartViewer.java b/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xycharts/linecharts/TmfFilteredXYChartViewer.java
deleted file mode 100644
index dcd2ab9..0000000
--- a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xycharts/linecharts/TmfFilteredXYChartViewer.java
+++ /dev/null
@@ -1,175 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017, 2020 Ericsson
- *
- * All rights reserved. This program and the accompanying materials are
- * made available under the terms of the Eclipse Public License 2.0 which
- * accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-
-package org.eclipse.tracecompass.tmf.ui.viewers.xycharts.linecharts;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.jdt.annotation.Nullable;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.tracecompass.internal.provisional.tmf.ui.viewers.xychart.BaseXYPresentationProvider;
-import org.eclipse.tracecompass.internal.tmf.core.model.filters.FetchParametersUtils;
-import org.eclipse.tracecompass.tmf.core.dataprovider.DataProviderManager;
-import org.eclipse.tracecompass.tmf.core.dataprovider.DataProviderParameterUtils;
-import org.eclipse.tracecompass.tmf.core.model.IOutputStyleProvider;
-import org.eclipse.tracecompass.tmf.core.model.OutputElementStyle;
-import org.eclipse.tracecompass.tmf.core.model.filters.SelectionTimeQueryFilter;
-import org.eclipse.tracecompass.tmf.core.model.tree.TmfTreeDataModel;
-import org.eclipse.tracecompass.tmf.core.model.xy.ITmfTreeXYDataProvider;
-import org.eclipse.tracecompass.tmf.core.model.xy.ITmfXYDataProvider;
-import org.eclipse.tracecompass.tmf.core.presentation.IYAppearance;
-import org.eclipse.tracecompass.tmf.core.signal.TmfSignalHandler;
-import org.eclipse.tracecompass.tmf.core.signal.TmfTraceClosedSignal;
-import org.eclipse.tracecompass.tmf.core.signal.TmfTraceSelectedSignal;
-import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
-import org.eclipse.tracecompass.tmf.ui.viewers.tree.ICheckboxTreeViewerListener;
-import org.eclipse.tracecompass.tmf.ui.viewers.tree.ITmfTreeViewerEntry;
-import org.eclipse.tracecompass.tmf.ui.viewers.tree.TmfGenericTreeEntry;
-import org.swtchart.Chart;
-
-import com.google.common.collect.Iterables;
-import com.google.common.collect.Multimap;
-import com.google.common.collect.Sets;
-
-/**
- * XY chart viewer which queries and displays selected entries.
- *
- * @author Loic Prieur-Drevon
- * @since 3.2
- * @deprecated use {@link org.eclipse.tracecompass.tmf.ui.viewers.xychart.linechart.TmfFilteredXYChartViewer}
- */
-@Deprecated
-public class TmfFilteredXYChartViewer extends TmfCommonXAxisChartViewer implements ICheckboxTreeViewerListener {
-
- private static final int DEFAULT_SERIES_WIDTH = 2;
-
- private @NonNull Collection<@NonNull Long> fSelectedIds = Collections.emptyList();
-
- private final String fId;
- private final Map<BaseXYPresentationProvider, Boolean> fUseDefaultStyleValues = new HashMap<>();
-
- /**
- * Constructor
- *
- * @param parent
- * The parent composite
- * @param settings
- * See {@link TmfXYChartSettings} to know what it contains
- * @param id
- * The ITmfXYDataProvider ID.
- */
- public TmfFilteredXYChartViewer(Composite parent, TmfXYChartSettings settings, String id) {
- super(parent, settings);
- Chart chart = getSwtChart();
- // Avoid displaying chart title and axis titles (to reduce wasted space)
- chart.getLegend().setVisible(false);
- fId = id;
- }
-
- /**
- * Update the chart depending on the selected entries.
- *
- * @param entries
- * Counters to display on the chart
- */
- @Override
- public void handleCheckStateChangedEvent(Collection<ITmfTreeViewerEntry> entries) {
- cancelUpdate();
-
- Iterable<TmfGenericTreeEntry> counterEntries = Iterables.filter(entries, TmfGenericTreeEntry.class);
- Collection<@NonNull Long> selectedIds = Sets.newHashSet(Iterables.transform(counterEntries, e -> e.getModel().getId()));
- if (!selectedIds.containsAll(fSelectedIds)) {
- clearContent();
- }
- fSelectedIds = selectedIds;
- // Update the styles as well
- BaseXYPresentationProvider presProvider = getPresentationProvider2();
- for (ITmfTreeViewerEntry entry : entries) {
- if (entry instanceof TmfGenericTreeEntry) {
- TmfGenericTreeEntry<TmfTreeDataModel> genericEntry = (TmfGenericTreeEntry<TmfTreeDataModel>) entry;
- TmfTreeDataModel model = genericEntry.getModel();
- OutputElementStyle style = model.getStyle();
- if (style != null) {
- presProvider.setStyle(model.getId(), style);
- }
- }
- }
-
- updateContent();
- }
-
- @TmfSignalHandler
- @Override
- public void traceSelected(@Nullable TmfTraceSelectedSignal signal) {
- super.traceSelected(signal);
- clearContent();
- fSelectedIds.clear();
- }
-
- @TmfSignalHandler
- @Override
- public void traceClosed(@Nullable TmfTraceClosedSignal signal) {
- if (signal != null && signal.getTrace().equals(getTrace())) {
- fSelectedIds.clear();
- }
- fUseDefaultStyleValues.remove(getPresentationProvider2());
- super.traceClosed(signal);
- }
-
- @Override
- protected @NonNull Map<String, Object> createQueryParameters(long start, long end, int nb) {
- Map<@NonNull String, @NonNull Object> parameters = FetchParametersUtils.selectionTimeQueryToMap(new SelectionTimeQueryFilter(start, end, nb, fSelectedIds));
- Multimap<@NonNull Integer, @NonNull String> regexesMap = getRegexes();
- if (!regexesMap.isEmpty()) {
- parameters.put(DataProviderParameterUtils.REGEX_MAP_FILTERS_KEY, regexesMap.asMap());
- }
- return parameters;
- }
-
- /**
- * Get the IDs of the selected entries
- *
- * @return a collection of the IDs of the selected entries
- */
- public @NonNull Collection<@NonNull Long> getSelected() {
- return fSelectedIds;
- }
-
- @Override
- public @NonNull IYAppearance getSeriesAppearance(@NonNull String seriesName) {
- return getPresentationProvider().getAppearance(seriesName, IYAppearance.Type.LINE, DEFAULT_SERIES_WIDTH);
- }
-
- @Override
- public @NonNull OutputElementStyle getSeriesStyle(@NonNull Long seriesId) {
- BaseXYPresentationProvider presentationProvider = getPresentationProvider2();
- return fUseDefaultStyleValues.getOrDefault(presentationProvider, true) ? presentationProvider.getSeriesStyle(seriesId, IYAppearance.Type.LINE, DEFAULT_SERIES_WIDTH) : presentationProvider.getSeriesStyle(seriesId);
- }
-
- @Override
- protected ITmfXYDataProvider initializeDataProvider(ITmfTrace trace) {
- ITmfTreeXYDataProvider<?> dataProvider = DataProviderManager.getInstance().getDataProvider(trace, fId, ITmfTreeXYDataProvider.class);
- BaseXYPresentationProvider presentationProvider = getPresentationProvider2();
- fUseDefaultStyleValues.computeIfAbsent(presentationProvider, pp -> {
- if (dataProvider instanceof IOutputStyleProvider) {
- pp.addProvider(dataProvider);
- return false;
- }
- return true;
- });
- return dataProvider;
- }
-
-}
diff --git a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xycharts/linecharts/TmfXYChartSettings.java b/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xycharts/linecharts/TmfXYChartSettings.java
deleted file mode 100644
index 24c2a57..0000000
--- a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xycharts/linecharts/TmfXYChartSettings.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2017 Ericsson
- *
- * All rights reserved. This program and the accompanying materials are
- * made available under the terms of the Eclipse Public License 2.0 which
- * accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- **********************************************************************/
-
-package org.eclipse.tracecompass.tmf.ui.viewers.xycharts.linecharts;
-
-/**
- * Contains UI settings about an XY chart. For instance, it contains its title,
- * x and y label and resolution.
- *
- * @author Yonni Chen
- * @since 3.2
- * @deprecated use {@link org.eclipse.tracecompass.tmf.ui.viewers.xychart.linechart.TmfXYChartSettings}
- */
-@Deprecated
-public class TmfXYChartSettings {
-
- private final String fTitle;
- private final String fXLabel;
- private final String fYLabel;
- private final double fResolution;
-
- /**
- * Constructor
- *
- * @param title
- * Chart's title
- * @param xLabel
- * Label describing x axis
- * @param yLabel
- * Label describing y axis
- * @param resolution
- * Chart's resolution. Used to calculate a sampling on x axis. It
- * will be used to calculate number of nanoseconds between two points
- * of the sampling
- */
- public TmfXYChartSettings(String title, String xLabel, String yLabel, double resolution) {
- fTitle = title;
- fXLabel = xLabel;
- fYLabel = yLabel;
- fResolution = resolution;
- }
-
- /**
- * Gets the chart's title
- *
- * @return The chart's title
- */
- public String getTitle() {
- return fTitle;
- }
-
- /**
- * Gets the label describing x axis
- *
- * @return The x label
- */
- public String getXLabel() {
- return fXLabel;
- }
-
- /**
- * Gets the label describing x axis
- *
- * @return The y label
- */
- public String getYLabel() {
- return fYLabel;
- }
-
- /**
- * Gets the chart's resolution
- *
- * @return The chart's resolution
- */
- public double getResolution() {
- return fResolution;
- }
-}
diff --git a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/views/TmfChartView.java b/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/views/TmfChartView.java
deleted file mode 100644
index 90d7ef5..0000000
--- a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/views/TmfChartView.java
+++ /dev/null
@@ -1,563 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2013, 2019 Ericsson, Draeger, Auriga
- *
- * All rights reserved. This program and the accompanying materials are
- * made available under the terms of the Eclipse Public License 2.0 which
- * accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Bernd Hufmann - Initial API and implementation
- **********************************************************************/
-package org.eclipse.tracecompass.tmf.ui.views;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.jdt.annotation.Nullable;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.IStatusLineManager;
-import org.eclipse.jface.action.IToolBarManager;
-import org.eclipse.jface.action.Separator;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.SashForm;
-import org.eclipse.swt.events.FocusEvent;
-import org.eclipse.swt.events.FocusListener;
-import org.eclipse.swt.events.MouseAdapter;
-import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.events.PaintEvent;
-import org.eclipse.swt.events.PaintListener;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Sash;
-import org.eclipse.tracecompass.internal.tmf.ui.Activator;
-import org.eclipse.tracecompass.internal.tmf.ui.ITmfImageConstants;
-import org.eclipse.tracecompass.internal.tmf.ui.Messages;
-import org.eclipse.tracecompass.internal.tmf.ui.viewers.xycharts.TmfXyUiUtils;
-import org.eclipse.tracecompass.internal.tmf.ui.views.LockRangeDialog;
-import org.eclipse.tracecompass.tmf.core.signal.TmfSignalHandler;
-import org.eclipse.tracecompass.tmf.core.signal.TmfSignalManager;
-import org.eclipse.tracecompass.tmf.core.signal.TmfTraceClosedSignal;
-import org.eclipse.tracecompass.tmf.core.signal.TmfTraceOpenedSignal;
-import org.eclipse.tracecompass.tmf.core.signal.TmfTraceSelectedSignal;
-import org.eclipse.tracecompass.tmf.core.signal.TmfWindowRangeUpdatedSignal;
-import org.eclipse.tracecompass.tmf.core.timestamp.TmfTimeRange;
-import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
-import org.eclipse.tracecompass.tmf.core.trace.TmfTraceManager;
-import org.eclipse.tracecompass.tmf.ui.signal.TmfTimeViewAlignmentInfo;
-import org.eclipse.tracecompass.tmf.ui.signal.TmfTimeViewAlignmentSignal;
-import org.eclipse.tracecompass.tmf.ui.viewers.ILegendImageProvider;
-import org.eclipse.tracecompass.tmf.ui.viewers.TmfTimeViewer;
-import org.eclipse.tracecompass.tmf.ui.viewers.TmfViewer;
-import org.eclipse.tracecompass.tmf.ui.viewers.tree.AbstractSelectTreeViewer;
-import org.eclipse.tracecompass.tmf.ui.viewers.xycharts.TmfXYChartViewer;
-import org.eclipse.tracecompass.tmf.ui.viewers.xycharts.XYChartLegendImageProvider;
-import org.eclipse.tracecompass.tmf.ui.viewers.xycharts.linecharts.TmfCommonXAxisChartViewer;
-import org.eclipse.tracecompass.tmf.ui.viewers.xycharts.linecharts.TmfFilteredXYChartViewer;
-import org.eclipse.tracecompass.tmf.ui.widgets.timegraph.dialogs.TriStateFilteredCheckboxTree;
-import org.eclipse.ui.IWorkbenchActionConstants;
-import org.eclipse.ui.IWorkbenchPartSite;
-import org.eclipse.ui.contexts.IContextActivation;
-import org.eclipse.ui.contexts.IContextService;
-import org.swtchart.Chart;
-
-/**
- * Base class to be used with a chart viewer {@link TmfXYChartViewer}.
- * It is responsible to instantiate the viewer class and load the trace
- * into the viewer when the view is created.
- *
- * @author Bernd Hufmann
- * @author Mikael Ferland
- * @deprecated use {@link org.eclipse.tracecompass.tmf.ui.views.xychart.TmfChartView}
- */
-@Deprecated
-public abstract class TmfChartView extends TmfView implements ITmfTimeAligned, ITimeReset, ITmfPinnable, ITmfAllowMultiple {
-
- private static final int[] DEFAULT_WEIGHTS = {1, 3};
- private static final String TMF_VIEW_UI_CONTEXT = "org.eclipse.tracecompass.tmf.ui.view.context"; //$NON-NLS-1$
-
- // ------------------------------------------------------------------------
- // Attributes
- // ------------------------------------------------------------------------
- /** The TMF XY Chart reference */
- private TmfXYChartViewer fChartViewer;
- /** A composite that allows us to add margins */
- private Composite fXYViewerContainer;
- private TmfViewer fTmfViewer;
- private SashForm fSashForm;
- private Listener fSashDragListener;
- /** The original view title */
- private String fOriginalTabLabel;
-
- private final Action fResetScaleAction = ResetUtil.createResetAction(this);
- private Action fZoomInAction;
- private Action fZoomOutAction;
-
- private List<IContextActivation> fActiveContexts = new ArrayList<>();
- private IContextService fContextService;
-
- /** The clamp to the Y axis action */
- private @Nullable IAction fClampAction = null;
-
- // ------------------------------------------------------------------------
- // Constructors
- // ------------------------------------------------------------------------
- /**
- * Standard Constructor
- *
- * @param viewName
- * The view name
- */
- public TmfChartView(String viewName) {
- super(viewName);
- }
-
- // ------------------------------------------------------------------------
- // Accessors
- // ------------------------------------------------------------------------
- /**
- * Returns the TMF XY chart viewer implementation.
- *
- * @return the TMF XY chart viewer {@link TmfXYChartViewer}
- * @since 5.0
- */
- public TmfXYChartViewer getChartViewer() {
- return fChartViewer;
- }
-
- /**
- * Returns the left TMF viewer implementation.
- *
- * @return the left TMF viewer {@link TmfViewer}
- * @since 5.0
- */
- public TmfViewer getLeftChildViewer() {
- return fTmfViewer;
- }
-
- /**
- * Create a {@link TmfViewer} instance to be added to the left composite
- * of the sash. Default implementation provides an empty composite and
- * don't overwrite this method if not needed.
- *
- * @param parent
- * the parent control
- * @return a {@link TmfViewer} instance
- * @since 2.0
- */
- protected @NonNull TmfViewer createLeftChildViewer(Composite parent) {
- return new EmptyViewer(parent);
- }
-
- /**
- * Create the TMF XY chart viewer implementation
- *
- * @param parent
- * the parent control
- *
- * @return The TMF XY chart viewer {@link TmfXYChartViewer}
- * @since 1.0
- */
- abstract protected TmfXYChartViewer createChartViewer(Composite parent);
-
- /**
- * Returns the ITmfTrace implementation
- *
- * @return the ITmfTrace implementation {@link ITmfTrace}
- * @since 3.3
- */
- @Override
- public ITmfTrace getTrace() {
- TmfXYChartViewer chartViewer = getChartViewer();
- if (chartViewer != null) {
- return chartViewer.getTrace();
- }
- return null;
- }
-
- // ------------------------------------------------------------------------
- // Operations
- // ------------------------------------------------------------------------
- @Override
- public void createPartControl(Composite parent) {
- super.createPartControl(parent);
- IMenuManager menuManager = getViewSite().getActionBars().getMenuManager();
-
- fClampAction = createClampAction();
- menuManager.add(new Separator());
- menuManager.add(fClampAction);
-
- fSashForm = new SashForm(parent, SWT.NONE);
- fTmfViewer = createLeftChildViewer(fSashForm);
- fXYViewerContainer = new Composite(fSashForm, SWT.NONE);
- GridLayout layout = new GridLayout();
- layout.marginHeight = 0;
- layout.marginWidth = 0;
- fXYViewerContainer.setLayout(layout);
-
- fChartViewer = createChartViewer(fXYViewerContainer);
- fChartViewer.setSendTimeAlignSignals(true);
- fChartViewer.getControl().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-
- fChartViewer.getSwtChart().addMouseListener(new MouseAdapter() {
- @Override
- public void mouseDoubleClick(MouseEvent e) {
- super.mouseDoubleClick(e);
- resetStartFinishTime();
- }
- });
-
- fChartViewer.getControl().addPaintListener(new PaintListener() {
- @Override
- public void paintControl(PaintEvent e) {
- // Sashes in a SashForm are being created on layout so add the
- // drag listener here
- if (fSashDragListener == null) {
- for (Control control : fSashForm.getChildren()) {
- if (control instanceof Sash) {
- fSashDragListener = event -> TmfSignalManager.dispatchSignal(new TmfTimeViewAlignmentSignal(fSashForm, getTimeViewAlignmentInfo()));
- control.removePaintListener(this);
- control.addListener(SWT.Selection, fSashDragListener);
- // There should be only one sash
- break;
- }
- }
- }
- }
- });
- fSashForm.setWeights(DEFAULT_WEIGHTS);
- fZoomInAction = getZoomInAction();
- fZoomOutAction = getZoomOutAction();
-
- IToolBarManager toolBarManager = getViewSite().getActionBars().getToolBarManager();
- toolBarManager.appendToGroup(IWorkbenchActionConstants.MB_ADDITIONS, fResetScaleAction);
- toolBarManager.appendToGroup(IWorkbenchActionConstants.MB_ADDITIONS, fZoomInAction);
- toolBarManager.appendToGroup(IWorkbenchActionConstants.MB_ADDITIONS, fZoomOutAction);
- ITmfTrace trace = TmfTraceManager.getInstance().getActiveTrace();
- if (trace != null) {
- loadTrace();
- }
-
- IStatusLineManager statusLineManager = getViewSite().getActionBars().getStatusLineManager();
- fChartViewer.setStatusLineManager(statusLineManager);
-
- fOriginalTabLabel = getPartName();
- coupleSelectViewer();
-
- IWorkbenchPartSite site = getSite();
- fContextService = site.getWorkbenchWindow().getService(IContextService.class);
-
- TmfXYChartViewer chartViewer = getChartViewer();
- if (chartViewer != null) {
- chartViewer.getControl().addFocusListener(new FocusListener() {
- @Override
- public void focusLost(FocusEvent e) {
- deactivateContextService();
- }
- @Override
- public void focusGained(FocusEvent e) {
- activateContextService();
- }
- });
- }
- }
-
- @Override
- protected IAction createSaveAction() {
- // FIXME export tree viewer or legend.
- return SaveImageUtil.createSaveAction(getName(), this::getChartViewer);
- }
-
- @Override
- public void dispose() {
- super.dispose();
- if (fChartViewer != null) {
- fChartViewer.dispose();
- }
-
- if (fTmfViewer != null) {
- fTmfViewer.dispose();
- }
- }
-
- @Override
- public void setFocus() {
- fChartViewer.getControl().setFocus();
- /* Force activation because focus gained event is not always received */
- activateContextService();
- }
-
- /**
- * Load the trace into view.
- */
- protected void loadTrace() {
- // Initialize the tree viewer with the currently selected trace
- ITmfTrace trace = TmfTraceManager.getInstance().getActiveTrace();
- if (trace != null) {
- TmfTraceSelectedSignal signal = new TmfTraceSelectedSignal(this, trace);
- TmfViewer leftViewer = getLeftChildViewer();
- if (leftViewer instanceof TmfTimeViewer) {
- ((TmfTimeViewer) leftViewer).traceSelected(signal);
- }
- TmfXYChartViewer chartViewer = getChartViewer();
- if (chartViewer != null) {
- chartViewer.traceSelected(signal);
- }
- }
- }
-
- /**
- * @since 1.0
- */
- @Override
- public TmfTimeViewAlignmentInfo getTimeViewAlignmentInfo() {
- if (fChartViewer == null) {
- return null;
- }
-
- return new TmfTimeViewAlignmentInfo(fChartViewer.getControl().getShell(), fSashForm.toDisplay(0, 0), getTimeAxisOffset());
- }
-
- private int getTimeAxisOffset() {
- return fSashForm.getChildren()[0].getSize().x + fSashForm.getSashWidth() + fChartViewer.getPointAreaOffset();
- }
-
- /**
- * @since 1.0
- */
- @Override
- public int getAvailableWidth(int requestedOffset) {
- if (fChartViewer == null) {
- return 0;
- }
-
- int pointAreaWidth = fChartViewer.getPointAreaWidth();
- int curTimeAxisOffset = getTimeAxisOffset();
- if (pointAreaWidth <= 0) {
- pointAreaWidth = fSashForm.getBounds().width - curTimeAxisOffset;
- }
- int endOffset = curTimeAxisOffset + pointAreaWidth;
- GridLayout layout = (GridLayout) fXYViewerContainer.getLayout();
- int endOffsetWithoutMargin = endOffset + layout.marginRight;
- int availableWidth = endOffsetWithoutMargin - requestedOffset;
- availableWidth = Math.min(fSashForm.getBounds().width, Math.max(0, availableWidth));
- return availableWidth;
- }
-
- /**
- * @since 1.0
- */
- @Override
- public void performAlign(int offset, int width) {
- int total = fSashForm.getBounds().width;
- int plotAreaOffset = fChartViewer.getPointAreaOffset();
- int width1 = Math.max(0, offset - plotAreaOffset - fSashForm.getSashWidth());
- int width2 = Math.max(0, total - width1 - fSashForm.getSashWidth());
- if (width1 >= 0 && width2 > 0 || width1 > 0 && width2 >= 0) {
- fSashForm.setWeights(new int[] { width1, width2 });
- fSashForm.layout();
- }
-
- Composite composite = fXYViewerContainer;
- GridLayout layout = (GridLayout) composite.getLayout();
- int timeAxisWidth = getAvailableWidth(offset);
- int marginSize = timeAxisWidth - width;
- layout.marginRight = Math.max(0, marginSize);
- composite.layout();
- }
-
- @Override
- public void resetStartFinishTime(boolean notify) {
- TmfWindowRangeUpdatedSignal signal = new TmfWindowRangeUpdatedSignal(this, TmfTimeRange.ETERNITY, getTrace());
- if (notify) {
- broadcast(signal);
- } else {
- getChartViewer().windowRangeUpdated(signal);
- }
- }
-
- @Override
- public void setPinned(@Nullable ITmfTrace trace) {
-
- TmfViewer leftViewer = getLeftChildViewer();
- if (leftViewer instanceof ITmfPinnable) {
- ((ITmfPinnable) leftViewer).setPinned(trace);
- }
-
- ITmfPinnable chartViewer = getChartViewer();
- if (chartViewer != null) {
- chartViewer.setPinned(trace);
- }
-
- if (trace != null) {
- /* Ignore relevant inbound signals */
- TmfSignalManager.addIgnoredInboundSignal(this, TmfTraceOpenedSignal.class);
- TmfSignalManager.addIgnoredInboundSignal(this, TmfTraceSelectedSignal.class);
- setPartName(String.format("%s <%s>", fOriginalTabLabel, TmfTraceManager.getInstance().getTraceUniqueName(trace))); //$NON-NLS-1$
- } else {
- /* Handle relevant inbound signals */
- TmfSignalManager.removeIgnoredInboundSignal(this, TmfTraceOpenedSignal.class);
- TmfSignalManager.removeIgnoredInboundSignal(this, TmfTraceSelectedSignal.class);
- setPartName(fOriginalTabLabel);
- }
- if (fPinAction != null) {
- fPinAction.setPinnedTrace(trace);
- }
- }
-
- private IAction createClampAction() {
- Action action = new Action(Messages.TmfChartView_LockYAxis, IAction.AS_PUSH_BUTTON) {
- @Override
- public void run() {
- LockRangeDialog rangeDialog = new LockRangeDialog(getSite().getShell(), getChartViewer());
- rangeDialog.open();
- }
- };
- action.setChecked(false);
- return action;
- }
-
- // ------------------------------------------------------------------------
- // Helpers
- // ------------------------------------------------------------------------
- /**
- * Empty @{link TmfViewer} class.
- */
- private class EmptyViewer extends TmfViewer {
- private Composite fComposite;
- public EmptyViewer(Composite parent) {
- super(parent);
- fComposite = new Composite(parent, SWT.NONE);
- }
- @Override
- public void refresh() {
- // Do nothing
- }
- @Override
- public Control getControl() {
- return fComposite;
- }
- }
-
- /**
- * Returns whether or not this chart viewer is dirty. The viewer is considered
- * dirty if it has yet to completely update its model. This method is meant to
- * be used by tests in order to know when it is safe to proceed.
- *
- * @return true if the time graph view has yet to completely update its model,
- * false otherwise
- * @since 3.2
- */
- public boolean isDirty() {
- return fChartViewer.isDirty();
- }
-
- /**
- * Handles the trace closed signal
- *
- * @param signal
- * the signal
- * @since 3.3
- */
- @TmfSignalHandler
- public void traceClosed(final TmfTraceClosedSignal signal) {
- ITmfTrace trace = getTrace();
- if ((trace == null || signal.getTrace() == trace) && isPinned()) {
- setPinned(null);
- }
- }
-
- /**
- * Method to couple {@link AbstractSelectTreeViewer} and
- * {@link TmfFilteredXYChartViewer} so that they use the same legend and that
- * the chart listens to selected items in the tree
- */
- private void coupleSelectViewer() {
- TmfViewer tree = getLeftChildViewer();
- TmfXYChartViewer chart = getChartViewer();
- if (tree instanceof AbstractSelectTreeViewer && chart instanceof TmfFilteredXYChartViewer) {
- ILegendImageProvider legendImageProvider = new XYChartLegendImageProvider((TmfCommonXAxisChartViewer) chart);
- AbstractSelectTreeViewer selectTree = (AbstractSelectTreeViewer) tree;
- selectTree.addTreeListener((TmfFilteredXYChartViewer) chart);
- selectTree.setLegendImageProvider(legendImageProvider);
- TriStateFilteredCheckboxTree checkboxTree = selectTree.getTriStateFilteredCheckboxTree();
- checkboxTree.addPreCheckStateListener(new ManyEntriesSelectedDialogPreCheckedListener(checkboxTree));
- }
- }
-
- private void activateContextService() {
- if (fActiveContexts.isEmpty()) {
- fActiveContexts.add(fContextService.activateContext(TMF_VIEW_UI_CONTEXT));
- }
- }
-
- private void deactivateContextService() {
- fContextService.deactivateContexts(fActiveContexts);
- fActiveContexts.clear();
- }
-
- @Override
- public <T> T getAdapter(Class<T> adapter) {
- TmfXYChartViewer chart = getChartViewer();
- if (chart != null) {
- return chart.getAdapter(adapter);
- }
- return super.getAdapter(adapter);
- }
-
- private Action getZoomInAction() {
- Action zoomInAction = fZoomInAction;
- if (zoomInAction == null) {
- zoomInAction = new Action() {
- @Override
- public void run() {
- TmfXYChartViewer viewer = getChartViewer();
- if (viewer == null) {
- return;
- }
- Chart chart = viewer.getSwtChart();
- if (chart == null) {
- return;
- }
- TmfXyUiUtils.zoom(viewer, chart, true);
- }
- };
- zoomInAction.setText(Messages.TmfTimeGraphViewer_ZoomInActionNameText);
- zoomInAction.setToolTipText(Messages.TmfTimeGraphViewer_ZoomInActionToolTipText);
- zoomInAction.setImageDescriptor(Activator.getDefault().getImageDescripterFromPath(ITmfImageConstants.IMG_UI_ZOOM_IN_MENU));
- }
- return zoomInAction;
- }
-
- private Action getZoomOutAction() {
- Action zoomOutAction = fZoomOutAction;
- if (zoomOutAction == null) {
- zoomOutAction = new Action() {
- @Override
- public void run() {
- TmfXYChartViewer viewer = getChartViewer();
- if (viewer == null) {
- return;
- }
- Chart chart = viewer.getSwtChart();
- if (chart == null) {
- return;
- }
- TmfXyUiUtils.zoom(viewer, chart, false);
- }
- };
- zoomOutAction.setText(Messages.TmfTimeGraphViewer_ZoomOutActionNameText);
- zoomOutAction.setToolTipText(Messages.TmfTimeGraphViewer_ZoomOutActionToolTipText);
- zoomOutAction.setImageDescriptor(Activator.getDefault().getImageDescripterFromPath(ITmfImageConstants.IMG_UI_ZOOM_OUT_MENU));
- }
- return zoomOutAction;
- }
-}