1 /*******************************************************************************
2 * Copyright (c) 2009, 2010 Ericsson
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
10 * Francois Chouinard - Initial API and implementation
11 *******************************************************************************/
13 package org
.eclipse
.linuxtools
.tmf
.ui
.views
.project
.model
;
15 import java
.util
.ArrayList
;
16 import java
.util
.List
;
18 import org
.eclipse
.core
.resources
.IFolder
;
19 import org
.eclipse
.core
.resources
.IProject
;
20 import org
.eclipse
.core
.resources
.IResource
;
21 import org
.eclipse
.core
.runtime
.CoreException
;
22 import org
.eclipse
.linuxtools
.tmf
.ui
.views
.project
.TmfProjectNature
;
25 * <b><u>TmfProjectNode</u></b>
27 * TODO: Implement me. Please.
29 public class TmfProjectNode
extends TmfProjectTreeNode
{
31 public static final String TRACE_FOLDER_NAME
= "Traces"; //$NON-NLS-1$
32 public static final String EXPER_FOLDER_NAME
= "Experiments"; //$NON-NLS-1$
34 private final IProject fProject
;
35 private boolean fIsTmfProject
;
36 private boolean fIsOpen
;
37 private TmfTraceFolderNode fTracesFolder
;
38 private TmfExperimentFolderNode fExperimentsFolder
;
40 // ------------------------------------------------------------------------
42 // ------------------------------------------------------------------------
44 public TmfProjectNode(IProject project
) {
48 public TmfProjectNode(ITmfProjectTreeNode parent
, IProject project
) {
54 // ------------------------------------------------------------------------
56 // ------------------------------------------------------------------------
59 public String
getName() {
60 return fProject
.getName();
64 public void refreshChildren() {
66 if (!(fIsOpen
&& fIsTmfProject
))
70 IResource
[] resources
= fProject
.members();
71 for (IResource resource
: resources
) {
72 if (resource
.getType() == IResource
.FOLDER
) {
73 String name
= resource
.getName();
74 if (name
.equals(TRACE_FOLDER_NAME
) && !isIncluded(true, name
, fChildren
)) {
75 fTracesFolder
= new TmfTraceFolderNode(this, (IFolder
) resource
);
76 fChildren
.add(fTracesFolder
);
78 if (name
.equals(EXPER_FOLDER_NAME
) && !isIncluded(false, name
, fChildren
)) {
79 fExperimentsFolder
= new TmfExperimentFolderNode(this, (IFolder
) resource
);
80 fChildren
.add(fExperimentsFolder
);
84 List
<ITmfProjectTreeNode
> toRemove
= new ArrayList
<ITmfProjectTreeNode
>();
85 for (ITmfProjectTreeNode node
: fChildren
) {
86 if (exists(node
.getName(), resources
)) {
87 node
.refreshChildren();
93 for (ITmfProjectTreeNode node
: toRemove
) {
94 fChildren
.remove(node
);
97 } catch (CoreException e
) {
101 private boolean isIncluded(boolean isTraces
, String name
, List
<ITmfProjectTreeNode
> list
) {
102 boolean found
= false;
103 for (ITmfProjectTreeNode node
: list
) {
104 if (node
instanceof TmfTraceFolderNode
&& isTraces
) {
105 found
|= node
.getName().equals(name
);
107 if (node
instanceof TmfExperimentFolderNode
&& !isTraces
) {
108 found
|= node
.getName().equals(name
);
114 private boolean exists(String name
, IResource
[] resources
) {
115 for (IResource resource
: resources
) {
116 if (resource
.getName().equals(name
))
122 // ------------------------------------------------------------------------
124 // ------------------------------------------------------------------------
126 public void openProject() {
131 } catch (CoreException e
) {
136 public void closeProject() {
138 fProject
.close(null);
141 } catch (CoreException e
) {
146 private boolean isTmfProject(IProject project
) {
147 boolean result
= false;
148 if (project
!= null && project
.isAccessible()) {
150 result
= project
.hasNature(TmfProjectNature
.ID
);
151 } catch (CoreException e
) {
157 public void updateState() {
158 fIsOpen
= (fProject
!= null) ? fProject
.isAccessible() : false;
162 fIsTmfProject
= isTmfProject(fProject
);
165 // ------------------------------------------------------------------------
167 // ------------------------------------------------------------------------
172 public boolean isTmfProject() {
173 return fIsTmfProject
;
179 public boolean isOpen() {
186 public IProject
getProject() {
193 public TmfTraceFolderNode
getTracesFolder() {
194 return fTracesFolder
;
200 public TmfExperimentFolderNode
getExperimentsFolder() {
201 return fExperimentsFolder
;