blob: f1c7ab20553336bfbc0d62ebcaa1b13c7a9ca709 [file] [log] [blame]
/*******************************************************************************
* 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
*/
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"; //$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;
}
}