Added TMF statistics feature (Bug 360572)
[deliverable/tracecompass.git] / org.eclipse.linuxtools.tmf.ui / src / org / eclipse / linuxtools / tmf / ui / views / project / model / TmfExperimentFolderNode.java
1 /*******************************************************************************
2 * Copyright (c) 2009, 2010 Ericsson
3 *
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
8 *
9 * Contributors:
10 * Francois Chouinard - Initial API and implementation
11 *******************************************************************************/
12
13 package org.eclipse.linuxtools.tmf.ui.views.project.model;
14
15 import java.lang.reflect.Array;
16
17 import org.eclipse.core.resources.IFolder;
18 import org.eclipse.core.resources.IResource;
19 import org.eclipse.core.runtime.CoreException;
20
21 /**
22 * <b><u>TmfExperimentFolderNode</u></b>
23 * <p>
24 * TODO: Implement me. Please.
25 */
26 public class TmfExperimentFolderNode extends TmfProjectTreeNode {
27
28 private final IFolder fExperimentFolder;
29
30 // ------------------------------------------------------------------------
31 // Constructors
32 // ------------------------------------------------------------------------
33
34 public TmfExperimentFolderNode(IFolder folder) {
35 this(null, folder);
36 }
37
38 public TmfExperimentFolderNode(ITmfProjectTreeNode parent, IFolder folder) {
39 super(parent);
40 fExperimentFolder = folder;
41 }
42
43 // ------------------------------------------------------------------------
44 // TmfProjectTreeNode
45 // ------------------------------------------------------------------------
46
47 @Override
48 public String getName() {
49 return fExperimentFolder.getName();
50 }
51
52 @Override
53 public void refreshChildren() {
54 try {
55 IResource[] resources = fExperimentFolder.members();
56 for (IResource resource : resources) {
57 if (resource instanceof IFolder) {
58 TmfExperimentNode node = find(resource.getName());
59 if (node == null) {
60 node = new TmfExperimentNode(this, (IFolder) resource);
61 fChildren.add(node);
62 }
63 }
64 }
65 for (ITmfProjectTreeNode node : fChildren) {
66 if (exists(node.getName(), resources)) {
67 node.refreshChildren();
68 }
69 else {
70 fChildren.remove(node);
71 }
72 }
73 } catch (CoreException e) {
74 }
75 }
76
77 private TmfExperimentNode find(String name) {
78 for (ITmfProjectTreeNode node : fChildren) {
79 if (node instanceof TmfExperimentNode && node.getName().equals(name)) {
80 return (TmfExperimentNode) node;
81 }
82 }
83 return null;
84 }
85
86 private boolean exists(String name, IResource[] resources) {
87 for (IResource resource : resources) {
88 if (resource.getName().equals(name))
89 return true;
90 }
91 return false;
92 }
93
94 // ------------------------------------------------------------------------
95 // Accessors
96 // ------------------------------------------------------------------------
97
98 /**
99 * @return
100 */
101 public TmfProjectNode getProject() {
102 return (TmfProjectNode) getParent();
103 }
104
105 /**
106 * @return
107 */
108 public IFolder getFolder() {
109 return fExperimentFolder;
110 }
111
112 /**
113 * @return
114 */
115 public TmfExperimentNode[] getExperiments() {
116 TmfExperimentNode[] result = (TmfExperimentNode[]) Array.newInstance(TmfExperimentNode.class, fChildren.size());
117 return fChildren.toArray(result);
118 }
119
120 // ------------------------------------------------------------------------
121 // Modifiers
122 // ------------------------------------------------------------------------
123
124 // No longer needed: handled by the IResourceChangeListener in the View
125 public void addExperiment(IFolder experiment) {
126 // TmfExperimentNode node = new TmfExperimentNode(this, experiment);
127 // fChildren.add(node);
128 // refresh();
129 }
130
131 }
This page took 0.033038 seconds and 5 git commands to generate.