blob: 14ef14cad24f5919831af2783bb6fe0e9d0cb91a [file] [log] [blame]
/*******************************************************************************
* 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.widgets.timegraph.model;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.tracecompass.tmf.core.model.timegraph.TimeGraphEntryModel;
import org.eclipse.tracecompass.tmf.ui.widgets.timegraph.model.ITimeEvent;
import org.eclipse.tracecompass.tmf.ui.widgets.timegraph.model.TimeGraphEntry;
/**
* An entry for use in the time graph views
*
* @author Matthew Khouzam
*/
public class TimeGraphLineEntry extends TimeGraphEntry {
/**
* Constructor
*
* @param name
* the name of the entry
* @param startTime
* the start time
* @param endTime
* the end time
*/
public TimeGraphLineEntry(String name, long startTime, long endTime) {
super(name, startTime, endTime);
}
/**
* Constructor
*
* @param model
* model
*
* TODO: change to interface
*/
public TimeGraphLineEntry(@NonNull TimeGraphEntryModel model) {
super(model);
}
@Override
public void addEvent(ITimeEvent event) {
if (isValidEvent(event)) {
super.addEvent(event);
}
}
@Override
public void addZoomedEvent(ITimeEvent event) {
if (isValidEvent(event)) {
super.addZoomedEvent(event);
}
}
@Override
public void setEventList(List<ITimeEvent> eventList) {
sanitizeList(eventList, super::setEventList);
}
@Override
public void updateZoomedEvent(ITimeEvent event) {
if (isValidEvent(event)) {
super.updateZoomedEvent(event);
}
}
@Override
public void setZoomedEventList(List<ITimeEvent> eventList) {
sanitizeList(eventList, super::setZoomedEventList);
}
@Override
public DisplayStyle getStyle() {
return DisplayStyle.LINE;
}
private static boolean isValidEvent(ITimeEvent event) {
return (event instanceof TimeLineEvent);
}
private static void sanitizeList(List<ITimeEvent> sourceList, Consumer<List<ITimeEvent>> listConsumer) {
if (sourceList != null) {
// Sets a filtered list
List<ITimeEvent> events = new ArrayList<>();
for (ITimeEvent event : sourceList) {
if (isValidEvent(event)) {
events.add(event);
}
}
listConsumer.accept(events);
} else {
listConsumer.accept(null);
}
}
}