/******************************************************************************* * Copyright (c) 2014 Red Hat, Inc. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Red Hat - Initial API and implementation. *******************************************************************************/ package org.eclipse.linuxtools.internal.systemtap.graphing.ui.charts.listeners; import java.text.MessageFormat; import org.eclipse.linuxtools.internal.systemtap.graphing.ui.charts.BarChart; import org.eclipse.linuxtools.internal.systemtap.graphing.ui.charts.Messages; import org.eclipse.swt.events.MouseEvent; import org.eclipse.swt.widgets.Composite; import org.swtchart.IAxis; import org.swtchart.ISeries; /** * This is a specialized mouse listener for displaying the value of a category (bar) * when the user hovers over it with the mouse. The value is displayed in a * tooltip popup near the mouse. * @author aferrazz * @since 3.0 */ public class BarChartMouseMoveListener extends ToolTipChartMouseMoveListener { public BarChartMouseMoveListener(BarChart chart, Composite parent) { super(chart, parent); } @Override public void mouseMove(MouseEvent e) { super.mouseMove(e); ISeries[] allSeries = chart.getSeriesSet().getSeries(); if (allSeries.length == 0) { return; } IAxis xAxis = chart.getAxisSet().getXAxis(0); String[] categorySeries = ((BarChart) chart).getCategorySeries(); int barIndex = (int) xAxis.getDataCoordinate(e.x); if (0 <= barIndex && barIndex < categorySeries.length) { String textTip = ""; //$NON-NLS-1$ for (int i = 0; i < allSeries.length; i++) { textTip = textTip.concat((i > 0 ? "\n" : "") + MessageFormat.format(Messages.BarChartBuilder_ToolTipCoords, //$NON-NLS-1$ //$NON-NLS-2$ allSeries[i].getId(), ((BarChart) chart).getBarValue(i, barIndex))); } setTextTip(textTip); } else { tipShell.setVisible(false); } chart.redraw(); } }