lttng: Rename lttng2 feature/plugins to lttng2.control
[deliverable/tracecompass.git] / org.eclipse.linuxtools.tmf.ui / src / org / eclipse / linuxtools / tmf / ui / project / model / TmfNavigatorContentProvider.java
CommitLineData
12c155f5 1/*******************************************************************************
60ae41e1 2 * Copyright (c) 2010, 2014 Ericsson
013a5f1c 3 *
12c155f5
FC
4 * All rights reserved. This program and the accompanying materials are
5 * made available under the terms of the Eclipse Public License v1.0 which
6 * accompanies this distribution, and is available at
7 * http://www.eclipse.org/legal/epl-v10.html
013a5f1c 8 *
12c155f5
FC
9 * Contributors:
10 * Francois Chouinard - Initial API and implementation
1169a815 11 * Bernd Hufmann - Implement getParent()
12c155f5
FC
12 *******************************************************************************/
13
14package org.eclipse.linuxtools.tmf.ui.project.model;
15
12c155f5
FC
16import java.util.Set;
17
12c155f5
FC
18import org.eclipse.core.resources.IProject;
19import org.eclipse.core.resources.IResource;
12c155f5
FC
20import org.eclipse.jface.viewers.Viewer;
21import org.eclipse.ui.IMemento;
22import org.eclipse.ui.navigator.ICommonContentExtensionSite;
12c155f5
FC
23import org.eclipse.ui.navigator.IPipelinedTreeContentProvider;
24import org.eclipse.ui.navigator.PipelinedShapeModification;
25import org.eclipse.ui.navigator.PipelinedViewerUpdate;
26
27/**
013a5f1c 28 * The TMF project content provider for the tree viewer in the project explorer view.
12c155f5 29 * <p>
b544077e
BH
30 * @version 1.0
31 * @author Francois Chouinard
12c155f5 32 */
013a5f1c 33public class TmfNavigatorContentProvider implements IPipelinedTreeContentProvider {
12c155f5
FC
34
35 // ------------------------------------------------------------------------
36 // ICommonContentProvider
37 // ------------------------------------------------------------------------
11252342 38
12c155f5
FC
39 @Override
40 public Object[] getElements(Object inputElement) {
41 return null;
42 }
43
44 @Override
45 public Object getParent(Object element) {
1169a815
BH
46 if (element instanceof IProject) {
47 IProject project = (IProject) element;
48 return project.getParent();
49 }
50
51 if (element instanceof TmfTraceFolder) {
52 TmfTraceFolder folder = (TmfTraceFolder) element;
53 // Return the corresponding IProject as parent because from CNF point of view the IProject is the parent.
54 // The IProject is needed e.g. for link with Editor to work correctly.
55 return folder.getParent().getResource();
56 }
57
58 if (element instanceof TmfTraceElement) {
59 TmfTraceElement traceElement = (TmfTraceElement) element;
60 return traceElement.getParent();
61 }
62
63 if (element instanceof TmfExperimentFolder) {
64 TmfExperimentFolder folder = (TmfExperimentFolder) element;
65 // Return the corresponding IProject as parent because from CNF point of view the IProject is the parent.
66 // The IProject is needed e.g. for link with Editor to work correctly.
67 return folder.getParent().getResource();
68 }
69
70 if (element instanceof TmfExperimentElement) {
71 TmfExperimentElement expElement = (TmfExperimentElement) element;
72 return expElement.getParent();
73 }
12c155f5
FC
74 return null;
75 }
76
77 @Override
78 public boolean hasChildren(Object element) {
79 if (element instanceof IProject) {
80 IProject project = (IProject) element;
81 return project.isAccessible();
82 }
c068a752
GB
83 if (element instanceof TmfProjectModelElement) {
84 TmfProjectModelElement modelElement = (TmfProjectModelElement) element;
85 return modelElement.hasChildren();
12c155f5
FC
86 }
87 return false;
88 }
89
90 @Override
91 public void dispose() {
92 }
93
94 @Override
95 public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
96 }
013a5f1c 97
12c155f5
FC
98 @Override
99 public void restoreState(IMemento aMemento) {
100 }
013a5f1c 101
12c155f5
FC
102 @Override
103 public void saveState(IMemento aMemento) {
104 }
105
106 @Override
107 public void init(ICommonContentExtensionSite aConfig) {
108 }
109
110 // ------------------------------------------------------------------------
111 // ICommonContentProvider - getChildren()
112 // ------------------------------------------------------------------------
11252342 113
12c155f5
FC
114 @Override
115 public synchronized Object[] getChildren(Object parentElement) {
116
117 // Tracing project level
118 if (parentElement instanceof IProject) {
f537c959
PT
119 TmfProjectElement element = TmfProjectRegistry.getProject((IProject) parentElement, true);
120 return element.getChildren().toArray();
12c155f5
FC
121 }
122
f537c959
PT
123 // Other project model elements
124 if (parentElement instanceof ITmfProjectModelElement) {
125 return ((ITmfProjectModelElement) parentElement).getChildren().toArray();
c068a752
GB
126 }
127
12c155f5
FC
128 return new Object[0];
129 }
130
12c155f5
FC
131 // ------------------------------------------------------------------------
132 // IPipelinedTreeContentProvider
133 // ------------------------------------------------------------------------
134
135 @Override
12c155f5
FC
136 public void getPipelinedChildren(Object parent, Set currentChildren) {
137 customizeTmfElements(getChildren(parent), currentChildren);
138 }
139
140 @Override
12c155f5
FC
141 public void getPipelinedElements(Object input, Set currentElements) {
142 customizeTmfElements(getElements(input), currentElements);
143 }
144
145 /**
146 * Add/replace the ITmfProjectElement to the list of children
013a5f1c 147 *
12c155f5
FC
148 * @param elements
149 * the list returned by getChildren()
150 * @param children
151 * the current children
152 */
abbdd66a
AM
153 private static void customizeTmfElements(Object[] elements,
154 Set<Object> children) {
12c155f5
FC
155 if (elements != null && children != null) {
156 for (Object element : elements) {
157 if (element instanceof ITmfProjectModelElement) {
158 ITmfProjectModelElement tmfElement = (ITmfProjectModelElement) element;
159 IResource resource = tmfElement.getResource();
160 if (resource != null) {
161 children.remove(resource);
162 }
163 children.add(element);
164 }
165 else if (element != null) {
166 children.add(element);
167 }
168 }
169 }
170 }
171
172 @Override
173 public Object getPipelinedParent(Object anObject, Object aSuggestedParent) {
bfa12ff0 174 return aSuggestedParent;
12c155f5
FC
175 }
176
177 @Override
178 public PipelinedShapeModification interceptAdd(PipelinedShapeModification anAddModification) {
bfa12ff0 179 return anAddModification;
12c155f5
FC
180 }
181
182 @Override
183 public PipelinedShapeModification interceptRemove(PipelinedShapeModification aRemoveModification) {
184 return null;
185 }
186
187 @Override
188 public boolean interceptRefresh(PipelinedViewerUpdate aRefreshSynchronization) {
189 return false;
190 }
191
192 @Override
193 public boolean interceptUpdate(PipelinedViewerUpdate anUpdateSynchronization) {
194 return false;
195 }
12c155f5 196}
This page took 0.054542 seconds and 5 git commands to generate.