(no commit message)
[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 public String getName() {
48 return fTraceFolder.getName();
49 }
50
51 @Override
52 public void refreshChildren() {
53 try {
54 IResource[] resources = fTraceFolder.members();
55 for (IResource resource : resources) {
56 if (resource instanceof IFolder) {
57 LTTngTraceNode node = find(resource.getName());
58 if (node == null) {
59 node = new LTTngTraceNode(this, (IFolder) resource);
60 fChildren.add(node);
61 }
62 }
63 }
64 for (ILTTngProjectTreeNode node : fChildren) {
65 if (!exists(node.getName(), resources)) {
66 fChildren.remove(node);
67 }
68 }
69 } catch (CoreException e) {
70 }
71 }
72
73 private LTTngTraceNode find(String name) {
74 for (ILTTngProjectTreeNode node : fChildren) {
75 if (node instanceof LTTngTraceNode && node.getName().equals(name)) {
76 return (LTTngTraceNode) node;
77 }
78 }
79 return null;
80 }
81
82 private boolean exists(String name, IResource[] resources) {
83 for (IResource resource : resources) {
84 if (resource.getName().equals(name))
85 return true;
86 }
87 return false;
88 }
89
90 // ------------------------------------------------------------------------
91 // Accessors
92 // ------------------------------------------------------------------------
93
94 /**
95 * @return
96 */
97 public LTTngProjectNode getProject() {
98 return (LTTngProjectNode) getParent();
99 }
100
101 /**
102 * @return
103 */
104 public IFolder getFolder() {
105 return fTraceFolder;
106 }
107
108 /**
109 * @return
110 */
111 public LTTngTraceNode[] getTraces() {
112 LTTngTraceNode[] result = (LTTngTraceNode[]) Array.newInstance(LTTngTraceNode.class, fChildren.size());
113 return fChildren.toArray(result);
114 }
115
116 // ------------------------------------------------------------------------
117 // Modifiers
118 // ------------------------------------------------------------------------
119
120 // No longer needed: handled by the IResourceChangeListener in the View
121 public void addTrace(IFolder trace) {
122 // LTTngTraceNode node = new LTTngTraceNode(this, trace);
123 // fChildren.add(node);
124 // refresh();
125 }
126
127 }
This page took 0.033445 seconds and 5 git commands to generate.