package org.eclipse.tracecompass.internal.tmf.pcap.ui.stream;
-import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Map.Entry;
import org.eclipse.jdt.annotation.Nullable;
import org.eclipse.swt.SWT;
import org.eclipse.tracecompass.internal.tmf.pcap.core.signal.TmfPacketStreamSelectedSignal;
import org.eclipse.tracecompass.internal.tmf.pcap.core.trace.PcapTrace;
import org.eclipse.tracecompass.internal.tmf.pcap.ui.Activator;
-import org.eclipse.tracecompass.tmf.core.event.aspect.TmfEventFieldAspect;
+import org.eclipse.tracecompass.tmf.core.event.aspect.ITmfEventAspect;
import org.eclipse.tracecompass.tmf.core.filter.model.ITmfFilterTreeNode;
import org.eclipse.tracecompass.tmf.core.filter.model.TmfFilterAndNode;
import org.eclipse.tracecompass.tmf.core.filter.model.TmfFilterAspectNode;
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.TmfTraceManager;
import org.eclipse.tracecompass.tmf.core.trace.TmfTraceUtils;
import org.eclipse.tracecompass.tmf.ui.project.model.TraceUtils;
import org.eclipse.tracecompass.tmf.ui.views.TmfView;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
+import com.google.common.collect.Lists;
+
/**
* Class that represents the Stream List View. Such a view lists all the
* available streams from the current experiment. <br>
if (tableMap == null) {
return;
}
- for (TmfPcapProtocol protocol : tableMap.keySet()) {
- if (!(tableMap.get(protocol).isDisposed())) {
- tableMap.get(protocol).removeAll();
+ for (Table table : tableMap.values()) {
+ if (!table.isDisposed()) {
+ table.removeAll();
}
}
}
if (tables == null) {
return;
}
- for (TmfPcapProtocol protocol : tables.keySet()) {
+ for (Entry<TmfPcapProtocol, Table> protocolEntry : tables.entrySet()) {
+ TmfPcapProtocol protocol = protocolEntry.getKey();
if (protocol == null) {
throw new IllegalStateException();
}
TmfPacketStreamBuilder builder = analysis.getBuilder(protocol);
- if (builder != null && !(tables.get(protocol).isDisposed())) {
+ Table table = protocolEntry.getValue();
+ if (builder != null && !(table.isDisposed())) {
for (TmfPacketStream stream : builder.getStreams()) {
TableItem item;
- if (stream.getID() < tables.get(protocol).getItemCount()) {
- item = tables.get(protocol).getItem(stream.getID());
+ if (stream.getID() < table.getItemCount()) {
+ item = table.getItem(stream.getID());
} else {
- item = new TableItem(tables.get(protocol), SWT.NONE);
+ item = new TableItem(table, SWT.NONE);
}
item.setText(0, String.valueOf(stream.getID()));
item.setText(1, stream.getFirstEndpoint().toString());
public void createPartControl(@Nullable Composite parent) {
// Initialize
fTableMap = new HashMap<>();
- fCurrentTrace = getActiveTrace();
+ fCurrentTrace = TmfTraceManager.getInstance().getActiveTrace();
fCurrentStream = null;
// Add a tab folder
}
// Update XML
- List<ITmfFilterTreeNode> newFilters = new ArrayList<>();
- ITmfFilterTreeNode[] oldFilters = FilterManager.getSavedFilters();
- for (int i = 0; i < oldFilters.length; i++) {
- newFilters.add(oldFilters[i]);
+ List<ITmfFilterTreeNode> filters = Lists.newArrayList(FilterManager.getSavedFilters());
+ boolean newFilter = true;
+ for (ITmfFilterTreeNode savedFilter : filters) {
+ // Use toString(explicit) equality because equals() is not implemented
+ if (savedFilter.toString(true).equals(filter.toString(true))) {
+ newFilter = false;
+ break;
+ }
}
- if (!(newFilters.contains(filter))) {
- newFilters.add(filter);
- FilterManager.setSavedFilters(newFilters.toArray(new ITmfFilterTreeNode[newFilters.size()]));
+ if (newFilter) {
+ filters.add(filter);
+ FilterManager.setSavedFilters(filters.toArray(new ITmfFilterTreeNode[filters.size()]));
}
// Update Filter View
// Third stage - protocol + or
TmfFilterContainsNode protocolFilter = new TmfFilterContainsNode(and);
- protocolFilter.setEventAspect(new TmfEventFieldAspect(stream.getProtocol().getName(), stream.getProtocol().getName()));
- protocolFilter.setTraceTypeId(TmfFilterAspectNode.EVENT_FIELD_ASPECT_ID);
+ protocolFilter.setEventAspect(ITmfEventAspect.BaseAspects.CONTENTS.forField(stream.getProtocol().getName()));
+ protocolFilter.setTraceTypeId(TmfFilterAspectNode.BASE_ASPECT_ID);
protocolFilter.setValue(EMPTY_STRING);
TmfFilterOrNode or = new TmfFilterOrNode(and);