* @author Marc-Andre Laperle
*/
public abstract class TracePackageElement extends WorkbenchAdapter {
- private TracePackageElement[] fChildren;
- private final TracePackageElement fParent;
+ private final List<TracePackageElement> fChildren;
+ private TracePackageElement fParent;
private boolean fEnabled;
private boolean fChecked;
private boolean fVisible;
fParent = parent;
fEnabled = true;
fVisible = true;
- fChildren = new TracePackageElement[0];
+ fChildren = new ArrayList<>();
+ if (parent != null) {
+ parent.addChild(this);
+ }
+ }
+
+ /**
+ * Add a child to the element.
+ *
+ * @param child
+ * the element to add as a child
+ */
+ public void addChild(TracePackageElement child) {
+ child.setParent(this);
+ fChildren.add(child);
+ }
+
+ /**
+ * Remove a child from the element.
+ *
+ * @param child
+ * the child to remove
+ */
+ public void removeChild(TracePackageElement child) {
+ fChildren.remove(child);
+ child.setParent(null);
}
/**
return fParent;
}
+ private void setParent(TracePackageElement parent) {
+ fParent = parent;
+ }
+
/**
* Get the text representation of this element to be displayed in the tree.
*
* @return the children of this element
*/
public TracePackageElement[] getChildren() {
- return fChildren;
+ return fChildren.toArray(new TracePackageElement[fChildren.size()]);
}
/**
return visibleChildren.toArray(new TracePackageElement[0]);
}
- /**
- * Set the children of this element
- *
- * @param children
- * the children of this element
- */
- public void setChildren(TracePackageElement[] children) {
- this.fChildren = children;
- }
-
/**
* Get the total size of the element including its children
*
public class TracePackageTraceElement extends TracePackageElement {
private final TmfTraceElement fTraceElement;
- private final String fImportName;
- private final String fTraceType;
+ private String fImportName;
+ private String fTraceType;
/**
* Construct an instance associated to a TmfTraceElement. For exporting.
return fTraceElement;
}
+ /**
+ * Set the import name.
+ *
+ * @param importName the import name.
+ */
+ public void setImportName(String importName) {
+ fImportName = importName;
+ }
+
/**
* @return the import name
*/
return fTraceType;
}
+ /**
+ * Set the trace type of this trace.
+ *
+ * @param traceType the trace type of this trace
+ */
+ public void setTraceType(String traceType) {
+ fTraceType = traceType;
+ }
+
@Override
public Image getImage() {
TmfNavigatorLabelProvider tmfNavigatorLabelProvider = new TmfNavigatorLabelProvider();
* when an error occurs when parsing
*/
public static TracePackageElement[] loadElementsFromManifest(InputStream inputStream) throws IOException, SAXException, ParserConfigurationException {
-
Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(inputStream);
Element rootElement = doc.getDocumentElement();
return loadElementsFromNode(rootElement);
*/
public static TracePackageElement[] loadElementsFromNode(Element rootElement) {
List<TracePackageElement> packageElements = new ArrayList<>();
- TracePackageElement element = null;
NodeList traceElements = rootElement.getElementsByTagName(ITracePackageConstants.TRACE_ELEMENT);
for (int i = 0; i < traceElements.getLength(); i++) {
Node traceNode = traceElements.item(i);
Element traceElement = (Element) traceNode;
String traceName = traceElement.getAttribute(ITracePackageConstants.TRACE_NAME_ATTRIB);
String traceType = traceElement.getAttribute(ITracePackageConstants.TRACE_TYPE_ATTRIB);
- element = new TracePackageTraceElement(null, traceName, traceType);
-
- List<TracePackageElement> children = new ArrayList<>();
+ TracePackageElement element = new TracePackageTraceElement(null, traceName, traceType);
NodeList fileElements = traceElement.getElementsByTagName(ITracePackageConstants.TRACE_FILE_ELEMENT);
for (int j = 0; j < fileElements.getLength(); j++) {
Node fileNode = fileElements.item(j);
if (fileNode.getNodeType() == Node.ELEMENT_NODE) {
Element fileElement = (Element) fileNode;
String fileName = fileElement.getAttribute(ITracePackageConstants.TRACE_FILE_NAME_ATTRIB);
- children.add(new TracePackageFilesElement(element, fileName));
+ new TracePackageFilesElement(element, fileName);
}
}
- TracePackageSupplFilesElement supplFilesElement = new TracePackageSupplFilesElement(element);
-
// Supplementary files
- List<TracePackageSupplFileElement> suppFiles = new ArrayList<>();
NodeList suppFilesElements = traceElement.getElementsByTagName(ITracePackageConstants.SUPPLEMENTARY_FILE_ELEMENT);
- for (int j = 0; j < suppFilesElements.getLength(); j++) {
- Node suppFileNode = suppFilesElements.item(j);
- if (suppFileNode.getNodeType() == Node.ELEMENT_NODE) {
- Element suppFileElement = (Element) suppFileNode;
- String fileName = suppFileElement.getAttribute(ITracePackageConstants.SUPPLEMENTARY_FILE_NAME_ATTRIB);
- TracePackageSupplFileElement supplFile = new TracePackageSupplFileElement(fileName, supplFilesElement);
- suppFiles.add(supplFile);
+ if (suppFilesElements.getLength() > 0) {
+ TracePackageSupplFilesElement supplFilesElement = new TracePackageSupplFilesElement(element);
+ for (int j = 0; j < suppFilesElements.getLength(); j++) {
+ Node suppFileNode = suppFilesElements.item(j);
+ if (suppFileNode.getNodeType() == Node.ELEMENT_NODE) {
+ Element suppFileElement = (Element) suppFileNode;
+ String fileName = suppFileElement.getAttribute(ITracePackageConstants.SUPPLEMENTARY_FILE_NAME_ATTRIB);
+ new TracePackageSupplFileElement(fileName, supplFilesElement);
+ }
}
}
- if (!suppFiles.isEmpty()) {
- supplFilesElement.setChildren(suppFiles.toArray(EMPTY_ARRAY));
- children.add(supplFilesElement);
- }
-
// bookmarks
List<Map<String, String>> bookmarkAttribs = new ArrayList<>();
NodeList bookmarksElements = traceElement.getElementsByTagName(ITracePackageConstants.BOOKMARKS_ELEMENT);
}
}
if (!bookmarkAttribs.isEmpty()) {
- children.add(new TracePackageBookmarkElement(element, bookmarkAttribs));
+ new TracePackageBookmarkElement(element, bookmarkAttribs);
}
- element.setChildren(children.toArray(EMPTY_ARRAY));
packageElements.add(element);
}
}