blob: 6ae51742381db10c04df5e39243d96ac564e939d [file] [log] [blame]
/*******************************************************************************
* 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
*/
public class CounterTreeViewer extends AbstractSelectTreeViewer {
private final class CounterTreeLabelProvider extends TreeLabelProvider {
@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(getFullPath(genericEntry));
}
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$
}
}