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 / LTTngExperimentFolderNode.java
CommitLineData
6e512b93
ASL
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
13package org.eclipse.linuxtools.lttng.ui.views.project.model;
14
15import java.lang.reflect.Array;
16
17import org.eclipse.core.resources.IFolder;
18import org.eclipse.core.resources.IResource;
19import org.eclipse.core.runtime.CoreException;
20
21/**
22 * <b><u>LTTngExperimentFolderNode</u></b>
23 * <p>
24 * TODO: Implement me. Please.
25 */
26public class LTTngExperimentFolderNode extends LTTngProjectTreeNode {
27
28 private final IFolder fExperimentFolder;
29
30 // ------------------------------------------------------------------------
31 // Constructors
32 // ------------------------------------------------------------------------
33
34 public LTTngExperimentFolderNode(IFolder folder) {
35 this(null, folder);
36 }
37
38 public LTTngExperimentFolderNode(ILTTngProjectTreeNode parent, IFolder folder) {
39 super(parent);
40 fExperimentFolder = folder;
41 }
42
43 // ------------------------------------------------------------------------
44 // LTTngProjectTreeNode
45 // ------------------------------------------------------------------------
46
d4011df2 47 @Override
6e512b93
ASL
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 LTTngExperimentNode node = find(resource.getName());
59 if (node == null) {
60 node = new LTTngExperimentNode(this, (IFolder) resource);
61 fChildren.add(node);
62 }
63 }
64 }
65 for (ILTTngProjectTreeNode 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 LTTngExperimentNode find(String name) {
78 for (ILTTngProjectTreeNode node : fChildren) {
79 if (node instanceof LTTngExperimentNode && node.getName().equals(name)) {
80 return (LTTngExperimentNode) 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 LTTngProjectNode getProject() {
102 return (LTTngProjectNode) getParent();
103 }
104
105 /**
106 * @return
107 */
108 public IFolder getFolder() {
109 return fExperimentFolder;
110 }
111
112 /**
113 * @return
114 */
115 public LTTngExperimentNode[] getExperiments() {
116 LTTngExperimentNode[] result = (LTTngExperimentNode[]) Array.newInstance(LTTngExperimentNode.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// LTTngExperimentNode node = new LTTngExperimentNode(this, experiment);
127// fChildren.add(node);
128// refresh();
129 }
130
131}
This page took 0.044042 seconds and 5 git commands to generate.