]> 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 c69e562d9e33ae9630e4a7d6676c372b871b8c4d..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.NodeIterator;
 import javax.jcr.RepositoryException;
 
-import org.argeo.ArgeoException;
+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 {
+       List<Node> displayedNodes;
 
-       private Node node = null;
-       private boolean isPassed = true;
-
-       public VirtualFolder(VirtualFolder parent, Node node, String name) {
+       public VirtualFolder(VirtualFolder parent, List<Node> displayedNodes,
+                       String name) {
                super(name);
                setParent(parent);
-               this.node = node;
-       }
-
-       @Override
-       public synchronized void dispose() {
-               super.dispose();
+               this.displayedNodes = displayedNodes;
        }
 
-       /** Override normal behavior to initialize display */
        @Override
-       public synchronized Object[] getChildren() {
-               if (isLoaded()) {
-                       return super.getChildren();
-               } else {
-                       // initialize current object
-                       try {
-                               if (node != null) {
-                                       NodeIterator ni = node.getNodes();
-                                       while (ni.hasNext()) {
-                                               Node currNode = ni.nextNode();
-                                               if (currNode.isNodeType(SlcTypes.SLC_TEST_RESULT))
-                                                       addChild(new SingleResultNode(this, node, node
-                                                                       .getProperty(SlcNames.SLC_TEST_CASE)
-                                                                       .getString()));
-                                               else if (currNode
-                                                               .isNodeType(SlcTypes.SLC_RESULT_FOLDER))
-                                                       addChild(new VirtualFolder(this, node,
-                                                                       node.getName()));
-                                       }
+       protected void 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);
                                }
-                               return super.getChildren();
-                       } catch (RepositoryException e) {
-                               throw new ArgeoException(
-                                               "Cannot initialize WorkspaceNode UI object."
-                                                               + getName(), e);
                        }
+               } catch (RepositoryException re) {
+                       throw new SlcException(
+                                       "Unexpected error while initializing ParentNodeFolder : "
+                                                       + getName(), re);
                }
        }
-
-       // @Override
-       // public boolean refreshPassedStatus() {
-       // Object[] children = getChildren();
-       // isPassed = true;
-       // checkChildrenStatus: for (int i = 0; i <= children.length; i++) {
-       // if (children[i] instanceof VirtualFolder) {
-       //
-       // }
-       // if (!((ResultParent) children[i]).isPassed()) {
-       // isPassed = false;
-       // break checkChildrenStatus;
-       // }
-       // }
-       // return isPassed;
-       // }
-
-       @Override
-       protected void initialize() {
-               // TODO Auto-generated method stub
-       }
-
 }
\ No newline at end of file