tmf: Move icon and label text into ITmfProjectModelElement
[deliverable/tracecompass.git] / tmf / org.eclipse.tracecompass.tmf.ui / src / org / eclipse / tracecompass / tmf / ui / project / model / TmfProjectElement.java
CommitLineData
12c155f5 1/*******************************************************************************
60ae41e1 2 * Copyright (c) 2011, 2014 Ericsson
f28d404e 3 *
12c155f5
FC
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
f28d404e 8 *
12c155f5
FC
9 * Contributors:
10 * Francois Chouinard - Initial API and implementation
f537c959 11 * Patrick Tasse - Refactor resource change listener
12c155f5
FC
12 *******************************************************************************/
13
2bdf0193 14package org.eclipse.tracecompass.tmf.ui.project.model;
12c155f5 15
f537c959
PT
16import java.util.HashMap;
17import java.util.Map;
18
19import org.eclipse.core.resources.IFolder;
12c155f5 20import org.eclipse.core.resources.IProject;
dff70ccd 21import org.eclipse.swt.graphics.Image;
12c155f5
FC
22
23/**
f28d404e
AM
24 * The implementation of TMF project model element.
25 *
b544077e
BH
26 * @version 1.0
27 * @author Francois Chouinard
12c155f5
FC
28 */
29public class TmfProjectElement extends TmfProjectModelElement {
30
31 // ------------------------------------------------------------------------
32 // Attributes
33 // ------------------------------------------------------------------------
34
b544077e
BH
35 private TmfTraceFolder fTraceFolder = null;
36 private TmfExperimentFolder fExperimentFolder = null;
12c155f5
FC
37
38 // ------------------------------------------------------------------------
39 // Constructor
40 // ------------------------------------------------------------------------
b3e4798c 41
b544077e
BH
42 /**
43 * Constructor.
f28d404e
AM
44 *
45 * Creates the TMF project model element.
b3e4798c
AM
46 *
47 * @param name
48 * The name of the project.
49 * @param project
50 * The project reference.
51 * @param parent
52 * The parent element
b544077e 53 */
12c155f5
FC
54 public TmfProjectElement(String name, IProject project, ITmfProjectModelElement parent) {
55 super(name, project, parent);
56 }
57
58 // ------------------------------------------------------------------------
59 // TmfProjectModelElement
60 // ------------------------------------------------------------------------
61
62 @Override
63 public IProject getResource() {
b3e4798c 64 return (IProject) super.getResource();
12c155f5
FC
65 }
66
67 @Override
68 public void addChild(ITmfProjectModelElement child) {
69 super.addChild(child);
70 if (child instanceof TmfTraceFolder) {
71 fTraceFolder = (TmfTraceFolder) child;
72 return;
73 }
74 if (child instanceof TmfExperimentFolder) {
75 fExperimentFolder = (TmfExperimentFolder) child;
76 return;
77 }
78 }
79
80 // ------------------------------------------------------------------------
81 // Accessors
82 // ------------------------------------------------------------------------
11252342 83
b544077e 84 /**
f28d404e 85 * Returns the containing trace folder element.
b544077e
BH
86 * @return the TMF trace folder element.
87 */
12c155f5
FC
88 public TmfTraceFolder getTracesFolder() {
89 return fTraceFolder;
90 }
91
b544077e
BH
92 /**
93 * Returns the containing experiment folder element.
94 * @return the TMF experiment folder element.
95 */
12c155f5
FC
96 public TmfExperimentFolder getExperimentsFolder() {
97 return fExperimentFolder;
98 }
99
100 // ------------------------------------------------------------------------
f537c959 101 // TmfProjectModelElement
12c155f5
FC
102 // ------------------------------------------------------------------------
103
b3e4798c
AM
104 /**
105 * @since 2.0
106 */
12c155f5 107 @Override
b3e4798c 108 protected void refreshChildren() {
f537c959 109 IProject project = getResource();
12c155f5 110
f537c959
PT
111 // Get the children from the model
112 Map<String, ITmfProjectModelElement> childrenMap = new HashMap<>();
113 for (ITmfProjectModelElement element : getChildren()) {
114 childrenMap.put(element.getResource().getName(), element);
115 }
116
117 // Add the model folder if the corresponding resource exists and is not
118 // accounted for
339d539c 119 IFolder folder = project.getFolder(TmfTracesFolder.TRACES_FOLDER_NAME);
f537c959
PT
120 if (folder != null && folder.exists()) {
121 String name = folder.getName();
122 ITmfProjectModelElement element = childrenMap.get(name);
339d539c 123 if (element instanceof TmfTracesFolder) {
f537c959
PT
124 childrenMap.remove(name);
125 } else {
339d539c 126 element = new TmfTracesFolder(TmfTracesFolder.TRACES_FOLDER_NAME, folder, this);
b3e4798c 127 addChild(element);
f537c959 128 }
339d539c 129 ((TmfTracesFolder) element).refreshChildren();
f537c959
PT
130 }
131
132 // Add the model folder if the corresponding resource exists and is not
133 // accounted for
134 folder = project.getFolder(TmfExperimentFolder.EXPER_FOLDER_NAME);
135 if (folder != null && folder.exists()) {
136 String name = folder.getName();
137 ITmfProjectModelElement element = childrenMap.get(name);
138 if (element instanceof TmfExperimentFolder) {
139 childrenMap.remove(name);
140 } else {
141 element = new TmfExperimentFolder(TmfExperimentFolder.EXPER_FOLDER_NAME, folder, this);
b3e4798c 142 addChild(element);
f537c959
PT
143 }
144 ((TmfExperimentFolder) element).refreshChildren();
145 }
146
147 // Cleanup dangling children from the model
148 for (ITmfProjectModelElement danglingChild : childrenMap.values()) {
149 removeChild(danglingChild);
12c155f5
FC
150 }
151 }
152
153 @Override
154 public TmfProjectElement getProject() {
155 return this;
156 }
dff70ccd
AM
157
158 /**
159 * @since 2.0
160 */
161 @Override
162 public Image getIcon() {
163 return null;
164 }
12c155f5 165}
This page took 0.101587 seconds and 5 git commands to generate.