/******************************************************************************* * Copyright (c) 2013, 2014 Ericsson * * 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: * Matthew Khouzam - Initial API and implementation *******************************************************************************/ package fr.inria.linuxtools.internal.tmf.ui.project.wizards.importtrace; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.jface.viewers.Viewer; import fr.inria.linuxtools.tmf.core.project.model.TmfTraceType; import fr.inria.linuxtools.tmf.core.project.model.TraceTypeHelper; /** * Trace type content provider, a helper for showing trace types * * @author Matthew Khouzam * @since 2.0 */ public class TraceTypeContentProvider implements ITreeContentProvider { private final List<String> fTraceCategory = new ArrayList<>(); private final Map<String, List<TraceTypeHelper>> fTraceType = new HashMap<>(); /** * Default Constructor */ public TraceTypeContentProvider() { fTraceType.clear(); fTraceCategory.clear(); for (String category : TmfTraceType.getTraceCategories()) { List<TraceTypeHelper> value = TmfTraceType.getTraceTypes(category); if (!value.isEmpty()) { fTraceCategory.add(category); fTraceType.put(category, value); } } } @Override public void dispose() { } @Override public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { // Do nothing } @Override public Object[] getElements(Object inputElement) { return fTraceCategory.toArray(new String[0]); } @Override public Object[] getChildren(Object parentElement) { if (parentElement instanceof String) { final List<TraceTypeHelper> children = fTraceType.get(parentElement); if (children != null) { return children.toArray(new TraceTypeHelper[0]); } } return null; } @Override public Object getParent(Object element) { if (element instanceof TraceTypeHelper) { for (String key : fTraceCategory) { List<TraceTypeHelper> traceSet = fTraceType.get(key); if (traceSet != null) { if (traceSet.contains(element)) { return key; } } } } return null; } @Override public boolean hasChildren(Object element) { if (element instanceof String) { String key = (String) element; return fTraceType.containsKey(key); } return false; } }