2010-07-12 Francois Chouinard <fchouinar@gmail.com> Contribution for Bug319428...
[deliverable/tracecompass.git] / org.eclipse.linuxtools.tmf.ui / src / org / eclipse / linuxtools / tmf / ui / views / project / model / TmfTraceFolderNode.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 import java.util.Iterator;
17
18 import org.eclipse.core.resources.IFolder;
19 import org.eclipse.core.resources.IResource;
20 import org.eclipse.core.runtime.CoreException;
21 import org.eclipse.core.runtime.IPath;
22
23 /**
24 * <b><u>TmfTraceFolderNode</u></b>
25 * <p>
26 * TODO: Implement me. Please.
27 */
28 public class TmfTraceFolderNode extends TmfProjectTreeNode {
29
30 private final IFolder fTraceFolder;
31
32 // ------------------------------------------------------------------------
33 // Constructors
34 // ------------------------------------------------------------------------
35
36 public TmfTraceFolderNode(IFolder folder) {
37 this(null, folder);
38 }
39
40 public TmfTraceFolderNode(ITmfProjectTreeNode parent, IFolder folder) {
41 super(parent);
42 fTraceFolder = folder;
43 }
44
45 // ------------------------------------------------------------------------
46 // TmfProjectTreeNode
47 // ------------------------------------------------------------------------
48
49 public String getName() {
50 return fTraceFolder.getName();
51 }
52
53 @Override
54 public void refreshChildren() {
55 try {
56 IResource[] resources = fTraceFolder.members();
57 for (IResource resource : resources) {
58 TmfTraceNode node = find(resource.getName());
59 if (node == null) {
60 node = new TmfTraceNode(this, resource);
61 fChildren.add(node);
62 }
63 }
64 Iterator<ITmfProjectTreeNode> iterator = fChildren.iterator();
65 while (iterator.hasNext()) {
66 ITmfProjectTreeNode node = iterator.next();
67 if (!exists(node.getName(), resources)) {
68 iterator.remove();
69 }
70 }
71 } catch (CoreException e) {
72 }
73 }
74
75 private TmfTraceNode find(String name) {
76 for (ITmfProjectTreeNode node : fChildren) {
77 if (node instanceof TmfTraceNode && node.getName().equals(name)) {
78 return (TmfTraceNode) node;
79 }
80 }
81 return null;
82 }
83
84 private boolean exists(String name, IResource[] resources) {
85 for (IResource resource : resources) {
86 if (resource.getName().equals(name))
87 return true;
88 }
89 return false;
90 }
91
92 // ------------------------------------------------------------------------
93 // Accessors
94 // ------------------------------------------------------------------------
95
96 /**
97 * @return
98 */
99 public TmfProjectNode getProject() {
100 return (TmfProjectNode) getParent();
101 }
102
103 /**
104 * @return
105 */
106 public IFolder getFolder() {
107 return fTraceFolder;
108 }
109
110 /**
111 * @return
112 */
113 public TmfTraceNode[] getTraces() {
114 TmfTraceNode[] result = (TmfTraceNode[]) Array.newInstance(TmfTraceNode.class, fChildren.size());
115 return fChildren.toArray(result);
116 }
117
118 /**
119 * @return
120 */
121 public TmfTraceNode getTraceForLocation(IPath location) {
122 for (ITmfProjectTreeNode node : fChildren) {
123 TmfTraceNode trace = (TmfTraceNode) node;
124 if (trace.getResource().getLocation().equals(location)) {
125 return trace;
126 }
127 }
128 return null;
129 }
130
131 // ------------------------------------------------------------------------
132 // Modifiers
133 // ------------------------------------------------------------------------
134
135 // No longer needed: handled by the IResourceChangeListener in the View
136 public void addTrace(IFolder trace) {
137 // TmfTraceNode node = new TmfTraceNode(this, trace);
138 // fChildren.add(node);
139 // refresh();
140 }
141
142 }
This page took 0.038527 seconds and 5 git commands to generate.