]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - plugins/org.argeo.slc.client.ui/src/main/java/org/argeo/slc/client/ui/model/VirtualFolder.java
enhance management of context menus and commands. Remove a few bugs.
[gpl/argeo-slc.git] / plugins / org.argeo.slc.client.ui / src / main / java / org / argeo / slc / client / ui / model / VirtualFolder.java
index 5a6bc77ceb3022454a03ccf69ab669dbb377e228..1218060ebebf42ee5e66265a81fa43bea41de35d 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2007-2012 Mathieu Baudier
+ * Copyright (C) 2007-2012 Argeo GmbH
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  */
 package org.argeo.slc.client.ui.model;
 
+import java.util.List;
+
+import javax.jcr.Node;
+import javax.jcr.RepositoryException;
+
+import org.argeo.slc.SlcException;
+import org.argeo.slc.jcr.SlcNames;
+import org.argeo.slc.jcr.SlcTypes;
+
 /**
- * UI Tree component. Virtual folder to list either other folders and/or a list
- * of results. Keeps a reference to its parent that might be null if the .
+ * UI Tree component. Virtual folder to list a list of results. Keeps a
+ * reference to its parent that might be null. It also keeps a reference to all
+ * nodes that must be displayed as children of the current virtual folder.
  */
 public class VirtualFolder extends ResultParent {
-       ResultParent[] children;
+       List<Node> displayedNodes;
 
-       public VirtualFolder(VirtualFolder parent, ResultParent[] children,
+       public VirtualFolder(VirtualFolder parent, List<Node> displayedNodes,
                        String name) {
                super(name);
                setParent(parent);
-               this.children = children;
-       }
-
-       @Override
-       public synchronized void dispose() {
-               super.dispose();
+               this.displayedNodes = displayedNodes;
        }
 
        @Override
        protected void initialize() {
-               if (children != null)
-                       for (ResultParent child : children)
-                               addChild(child);
-       }
-
-       public void resetChildren(ResultParent[] children) {
-               clearChildren();
-               this.children = children;
-               initialize();
+               try {
+                       for (Node currNode : displayedNodes) {
+                               if (currNode.isNodeType(SlcTypes.SLC_TEST_RESULT)) {
+                                       SingleResultNode srn = new SingleResultNode(this, currNode,
+                                                       currNode.getProperty(SlcNames.SLC_TEST_CASE)
+                                                                       .getString());
+                                       addChild(srn);
+                               }
+                       }
+               } catch (RepositoryException re) {
+                       throw new SlcException(
+                                       "Unexpected error while initializing ParentNodeFolder : "
+                                                       + getName(), re);
+               }
        }
 }
\ No newline at end of file