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