Author: solomax
Date: Wed Jan 18 18:16:45 2017
New Revision: 1779367

URL: http://svn.apache.org/viewvc?rev=1779367&view=rev
Log:
[OPENMEETINGS-1527] more work on multiselect

Modified:
    
openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/RecordingService.java
    
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/DownloadMenuItem.java
    
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
    
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/OmTreeProvider.java
    
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/css/theme.css
    
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/RecordingService.java
    
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/DownloadMenuItem.java
    
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
    
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/OmTreeProvider.java
    
openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/theme.css

Modified: 
openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/RecordingService.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/RecordingService.java?rev=1779367&r1=1779366&r2=1779367&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/RecordingService.java
 (original)
+++ 
openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/RecordingService.java
 Wed Jan 18 18:16:45 2017
@@ -22,6 +22,7 @@ import static org.apache.openmeetings.ut
 
 import java.util.Date;
 import java.util.Map;
+import java.util.UUID;
 import java.util.concurrent.ConcurrentHashMap;
 
 import org.apache.openmeetings.core.converter.BaseConverter;
@@ -41,8 +42,8 @@ import org.apache.openmeetings.db.entity
 import org.apache.openmeetings.db.entity.room.Client;
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.util.CalendarPatterns;
-import org.apache.openmeetings.util.message.TextRoomMessage;
 import org.apache.openmeetings.util.message.RoomMessage;
+import org.apache.openmeetings.util.message.TextRoomMessage;
 import org.red5.logging.Red5LoggerFactory;
 import org.red5.server.api.IConnection;
 import org.red5.server.api.Red5;
@@ -102,7 +103,7 @@ public class RecordingService implements
 
                        Recording recording = new Recording();
 
-                       recording.setHash("");
+                       recording.setHash(UUID.randomUUID().toString());
                        recording.setName(roomRecordingName);
                        Long ownerId = client.getUserId();
                        if (ownerId != null && ownerId < 0) {
@@ -201,7 +202,7 @@ public class RecordingService implements
 
        /**
         * Start recording the published stream for the specified broadcast-Id
-        * 
+        *
         * @param conn
         * @param broadcastid
         * @param streamName
@@ -243,7 +244,7 @@ public class RecordingService implements
 
        /**
         * Stops recording the publishing stream for the specified IConnection.
-        * 
+        *
         * @param conn
         */
        public void stopRecordingShow(IConnection conn, String broadcastId, 
Long metaId) {

Modified: 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/DownloadMenuItem.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/DownloadMenuItem.java?rev=1779367&r1=1779366&r2=1779367&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/DownloadMenuItem.java
 (original)
+++ 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/DownloadMenuItem.java
 Wed Jan 18 18:16:45 2017
@@ -39,7 +39,10 @@ public class DownloadMenuItem extends Me
 
        @Override
        public boolean isEnabled() {
-               File f = tree.getLastSelected().getFile(ext);
+               File f = null;
+               if (tree.selectedCount() == 1) {
+                       f = tree.getLastSelected().getFile(ext);
+               }
                return f != null && f.exists();
        }
 

Modified: 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java?rev=1779367&r1=1779366&r2=1779367&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
 (original)
+++ 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
 Wed Jan 18 18:16:45 2017
@@ -209,6 +209,7 @@ public abstract class FileTreePanel exte
                boolean isRecording = p instanceof Recording;
                FileItem f = isRecording ? new Recording() : new 
FileExplorerItem();
                f.setName(name);
+               f.setHash(UUID.randomUUID().toString());
                f.setInsertedBy(getUserId());
                f.setInserted(new Date());
                f.setType(Type.Folder);
@@ -232,6 +233,10 @@ public abstract class FileTreePanel exte
                return selected.containsKey(f.getHash());
        }
 
+       public int selectedCount() {
+               return selected.size();
+       }
+
        public FileItem getLastSelected() {
                return lastSelected;
        }
@@ -241,6 +246,12 @@ public abstract class FileTreePanel exte
                handler.add(sizes, trees);
        }
 
+       private void updateSelected(AjaxRequestTarget target) {
+               for (Entry<String, FileItem> e : selected.entrySet()) {
+                       updateNode(target, e.getValue());
+               }
+       }
+
        void updateNode(AjaxRequestTarget target, FileItem fi) {
                if (fi != null && target != null) {
                        if (Type.Folder == fi.getType()) {
@@ -251,22 +262,61 @@ public abstract class FileTreePanel exte
                }
        }
 
+       private boolean sameParent(FileItem f1, FileItem f2) {
+               if (f1 instanceof Recording && f2 instanceof FileExplorerItem) {
+                       return false;
+               }
+               if (f1.getParentId() != null && 
f1.getParentId().equals(f2.getParentId())) {
+                       return true;
+               }
+               if (f1.getParentId() == null && f2.getParentId() == null) {
+                       if (f1.getOwnerId() != null && 
f1.getOwnerId().equals(f2.getOwnerId())) {
+                               return true;
+                       }
+                       if (f1.getRoomId() != null && 
f1.getRoomId().equals(f2.getRoomId())) {
+                               return true;
+                       }
+                       if (f1.getRoomId() == null && f2.getRoomId() == null && 
f1.getOwnerId() == null && f2.getOwnerId() == null) {
+                               return true;
+                       }
+               }
+               return false;
+       }
+
        public void select(FileItem fi, AjaxRequestTarget target, boolean 
shift, boolean ctrl) {
-               updateNode(target, lastSelected);
+               updateSelected(target);
                if (ctrl) {
                        if (isSelected(fi)) {
-                               selected.remove(fi.getId());
+                               selected.remove(fi.getHash());
                        } else {
                                selected.put(fi.getHash(), fi);
                        }
-               } else if (shift) {
-                       //search
+                       lastSelected = fi;
+               } else if (shift && lastSelected != null && 
!lastSelected.getHash().equals(fi.getHash()) && sameParent(fi, lastSelected)) {
+                       selected.clear();
+                       String lastHash = null;
+                       for (FileItem f : 
((OmTreeProvider)tree.getProvider()).getByParent(fi, fi.getParentId())) {
+                               if (lastHash == null) {
+                                       if 
(f.getHash().equals(lastSelected.getHash())) {
+                                               lastHash = fi.getHash();
+                                       }
+                                       if (f.getHash().equals(fi.getHash())) {
+                                               lastHash = 
lastSelected.getHash();
+                                       }
+                               }
+                               if (lastHash != null) {
+                                       selected.put(f.getHash(), f);
+                                       if (f.getHash().equals(lastHash)) {
+                                               break;
+                                       }
+                               }
+                       }
                } else {
                        selected.clear();
                        selected.put(fi.getHash(), fi);
+                       lastSelected = fi;
                }
-               lastSelected = fi;
-               updateNode(target, lastSelected);
+               updateSelected(target);
                if (target != null) {
                        target.add(download.setVisible(lastSelected.getType() 
== Type.Presentation || lastSelected.getType() == Type.Image));
                }

Modified: 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/OmTreeProvider.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/OmTreeProvider.java?rev=1779367&r1=1779366&r2=1779367&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/OmTreeProvider.java
 (original)
+++ 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/OmTreeProvider.java
 Wed Jan 18 18:16:45 2017
@@ -67,13 +67,13 @@ public class OmTreeProvider implements I
                }
                for (GroupUser gu : 
getBean(UserDao.class).get(getUserId()).getGroupUsers()) {
                        Group g = gu.getGroup();
-                       
+
                        Recording r = createRecRoot(String.format("%s (%s)", 
PUBLIC, g.getName()), String.format(RECORDINGS_GROUP, g.getId()));
                        r.setGroupId(g.getId());
                        roots.add(r);
                }
        }
-       
+
        static Recording createRecRoot(String name, String hash) {
                Recording r = new Recording();
                r.setType(Type.Folder);
@@ -81,7 +81,7 @@ public class OmTreeProvider implements I
                r.setHash(hash);
                return r;
        }
-       
+
        static FileExplorerItem createFileRoot(Long roomId) {
                FileExplorerItem f = new FileExplorerItem();
                f.setRoomId(roomId);
@@ -96,52 +96,52 @@ public class OmTreeProvider implements I
                }
                return f;
        }
-       
+
        public FileItem getRoot() {
                return roots.get(0);
        }
-       
+
        @Override
        public Iterator<FileItem> getRoots() {
                return roots.iterator();
        }
 
-       @Override
-       public Iterator<FileItem> getChildren(FileItem node) {
+       public List<FileItem> getByParent(FileItem node, Long id) {
                List<FileItem> list = new ArrayList<>();
                if (node instanceof Recording) {
                        Recording rec = (Recording)node;
                        RecordingDao dao = getBean(RecordingDao.class);
                        List<Recording> _list;
-                       if (node.getId() == null) {
+                       if (id == null) {
                                if (node.getOwnerId() == null) {
                                        _list = 
dao.getRootByPublic(rec.getGroupId());
                                } else {
                                        _list = 
dao.getRootByOwner(node.getOwnerId());
                                }
                        } else {
-                               _list = dao.getByParent(node.getId());
-                       }
-                       for (Recording r : _list) {
-                               list.add(r);
+                               _list = dao.getByParent(id);
                        }
+                       list.addAll(_list);
                } else {
                        FileExplorerItemDao dao = 
getBean(FileExplorerItemDao.class);
                        List<FileExplorerItem> _list;
-                       if (node.getId() == null) {
+                       if (id == null) {
                                if (roomId == null) {
                                        _list = dao.getByRoom(roomId);
                                } else {
                                        _list = 
dao.getByOwner(node.getOwnerId());
                                }
                        } else {
-                               _list = dao.getByParent(node.getId());
-                       }
-                       for (FileExplorerItem r : _list) {
-                               list.add(r);
+                               _list = dao.getByParent(id);
                        }
+                       list.addAll(_list);
                }
-               return list.iterator();
+               return list;
+       }
+
+       @Override
+       public Iterator<FileItem> getChildren(FileItem node) {
+               return getByParent(node, node.getId()).iterator();
        }
 
        @Override

Modified: 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/css/theme.css
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/css/theme.css?rev=1779367&r1=1779366&r2=1779367&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/css/theme.css
 (original)
+++ 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/css/theme.css
 Wed Jan 18 18:16:45 2017
@@ -63,6 +63,13 @@ html, body {
 }
 #busy_indicator span {
        vertical-align: sub;
+       padding-left: 25px;
+       line-height: 22px;
+       background-image: url(../images/ajax-loader.gif);
+       background-repeat: no-repeat;
+       background-size: 20px 20px;
+       height: 20px;
+       display: inline-block;
 }
 .clickable {
        cursor: pointer;

Modified: 
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/RecordingService.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/RecordingService.java?rev=1779367&r1=1779366&r2=1779367&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/RecordingService.java
 (original)
+++ 
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/RecordingService.java
 Wed Jan 18 18:16:45 2017
@@ -22,6 +22,7 @@ import static org.apache.openmeetings.ut
 
 import java.util.Date;
 import java.util.Map;
+import java.util.UUID;
 import java.util.concurrent.ConcurrentHashMap;
 
 import org.apache.openmeetings.core.converter.BaseConverter;
@@ -41,8 +42,8 @@ import org.apache.openmeetings.db.entity
 import org.apache.openmeetings.db.entity.room.Client;
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.util.CalendarPatterns;
-import org.apache.openmeetings.util.message.TextRoomMessage;
 import org.apache.openmeetings.util.message.RoomMessage;
+import org.apache.openmeetings.util.message.TextRoomMessage;
 import org.red5.logging.Red5LoggerFactory;
 import org.red5.server.api.IConnection;
 import org.red5.server.api.Red5;
@@ -102,7 +103,7 @@ public class RecordingService implements
 
                        Recording recording = new Recording();
 
-                       recording.setHash("");
+                       recording.setHash(UUID.randomUUID().toString());
                        recording.setName(roomRecordingName);
                        Long ownerId = client.getUserId();
                        if (ownerId != null && ownerId < 0) {
@@ -201,7 +202,7 @@ public class RecordingService implements
 
        /**
         * Start recording the published stream for the specified broadcast-Id
-        * 
+        *
         * @param conn
         * @param broadcastid
         * @param streamName
@@ -243,7 +244,7 @@ public class RecordingService implements
 
        /**
         * Stops recording the publishing stream for the specified IConnection.
-        * 
+        *
         * @param conn
         */
        public void stopRecordingShow(IConnection conn, String broadcastId, 
Long metaId) {

Modified: 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/DownloadMenuItem.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/DownloadMenuItem.java?rev=1779367&r1=1779366&r2=1779367&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/DownloadMenuItem.java
 (original)
+++ 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/DownloadMenuItem.java
 Wed Jan 18 18:16:45 2017
@@ -39,7 +39,10 @@ public class DownloadMenuItem extends Me
 
        @Override
        public boolean isEnabled() {
-               File f = tree.getLastSelected().getFile(ext);
+               File f = null;
+               if (tree.selectedCount() == 1) {
+                       f = tree.getLastSelected().getFile(ext);
+               }
                return f != null && f.exists();
        }
 

Modified: 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java?rev=1779367&r1=1779366&r2=1779367&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
 (original)
+++ 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
 Wed Jan 18 18:16:45 2017
@@ -209,6 +209,7 @@ public abstract class FileTreePanel exte
                boolean isRecording = p instanceof Recording;
                FileItem f = isRecording ? new Recording() : new 
FileExplorerItem();
                f.setName(name);
+               f.setHash(UUID.randomUUID().toString());
                f.setInsertedBy(getUserId());
                f.setInserted(new Date());
                f.setType(Type.Folder);
@@ -232,6 +233,10 @@ public abstract class FileTreePanel exte
                return selected.containsKey(f.getHash());
        }
 
+       public int selectedCount() {
+               return selected.size();
+       }
+
        public FileItem getLastSelected() {
                return lastSelected;
        }
@@ -241,6 +246,12 @@ public abstract class FileTreePanel exte
                handler.add(sizes, trees);
        }
 
+       private void updateSelected(AjaxRequestTarget target) {
+               for (Entry<String, FileItem> e : selected.entrySet()) {
+                       updateNode(target, e.getValue());
+               }
+       }
+
        void updateNode(AjaxRequestTarget target, FileItem fi) {
                if (fi != null && target != null) {
                        if (Type.Folder == fi.getType()) {
@@ -251,22 +262,61 @@ public abstract class FileTreePanel exte
                }
        }
 
+       private boolean sameParent(FileItem f1, FileItem f2) {
+               if (f1 instanceof Recording && f2 instanceof FileExplorerItem) {
+                       return false;
+               }
+               if (f1.getParentId() != null && 
f1.getParentId().equals(f2.getParentId())) {
+                       return true;
+               }
+               if (f1.getParentId() == null && f2.getParentId() == null) {
+                       if (f1.getOwnerId() != null && 
f1.getOwnerId().equals(f2.getOwnerId())) {
+                               return true;
+                       }
+                       if (f1.getRoomId() != null && 
f1.getRoomId().equals(f2.getRoomId())) {
+                               return true;
+                       }
+                       if (f1.getRoomId() == null && f2.getRoomId() == null && 
f1.getOwnerId() == null && f2.getOwnerId() == null) {
+                               return true;
+                       }
+               }
+               return false;
+       }
+
        public void select(FileItem fi, AjaxRequestTarget target, boolean 
shift, boolean ctrl) {
-               updateNode(target, lastSelected);
+               updateSelected(target);
                if (ctrl) {
                        if (isSelected(fi)) {
-                               selected.remove(fi.getId());
+                               selected.remove(fi.getHash());
                        } else {
                                selected.put(fi.getHash(), fi);
                        }
-               } else if (shift) {
-                       //search
+                       lastSelected = fi;
+               } else if (shift && lastSelected != null && 
!lastSelected.getHash().equals(fi.getHash()) && sameParent(fi, lastSelected)) {
+                       selected.clear();
+                       String lastHash = null;
+                       for (FileItem f : 
((OmTreeProvider)tree.getProvider()).getByParent(fi, fi.getParentId())) {
+                               if (lastHash == null) {
+                                       if 
(f.getHash().equals(lastSelected.getHash())) {
+                                               lastHash = fi.getHash();
+                                       }
+                                       if (f.getHash().equals(fi.getHash())) {
+                                               lastHash = 
lastSelected.getHash();
+                                       }
+                               }
+                               if (lastHash != null) {
+                                       selected.put(f.getHash(), f);
+                                       if (f.getHash().equals(lastHash)) {
+                                               break;
+                                       }
+                               }
+                       }
                } else {
                        selected.clear();
                        selected.put(fi.getHash(), fi);
+                       lastSelected = fi;
                }
-               lastSelected = fi;
-               updateNode(target, lastSelected);
+               updateSelected(target);
                if (target != null) {
                        target.add(download.setVisible(lastSelected.getType() 
== Type.Presentation || lastSelected.getType() == Type.Image));
                }

Modified: 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/OmTreeProvider.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/OmTreeProvider.java?rev=1779367&r1=1779366&r2=1779367&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/OmTreeProvider.java
 (original)
+++ 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/OmTreeProvider.java
 Wed Jan 18 18:16:45 2017
@@ -67,13 +67,13 @@ public class OmTreeProvider implements I
                }
                for (GroupUser gu : 
getBean(UserDao.class).get(getUserId()).getGroupUsers()) {
                        Group g = gu.getGroup();
-                       
+
                        Recording r = createRecRoot(String.format("%s (%s)", 
PUBLIC, g.getName()), String.format(RECORDINGS_GROUP, g.getId()));
                        r.setGroupId(g.getId());
                        roots.add(r);
                }
        }
-       
+
        static Recording createRecRoot(String name, String hash) {
                Recording r = new Recording();
                r.setType(Type.Folder);
@@ -81,7 +81,7 @@ public class OmTreeProvider implements I
                r.setHash(hash);
                return r;
        }
-       
+
        static FileExplorerItem createFileRoot(Long roomId) {
                FileExplorerItem f = new FileExplorerItem();
                f.setRoomId(roomId);
@@ -96,52 +96,52 @@ public class OmTreeProvider implements I
                }
                return f;
        }
-       
+
        public FileItem getRoot() {
                return roots.get(0);
        }
-       
+
        @Override
        public Iterator<FileItem> getRoots() {
                return roots.iterator();
        }
 
-       @Override
-       public Iterator<FileItem> getChildren(FileItem node) {
+       public List<FileItem> getByParent(FileItem node, Long id) {
                List<FileItem> list = new ArrayList<>();
                if (node instanceof Recording) {
                        Recording rec = (Recording)node;
                        RecordingDao dao = getBean(RecordingDao.class);
                        List<Recording> _list;
-                       if (node.getId() == null) {
+                       if (id == null) {
                                if (node.getOwnerId() == null) {
                                        _list = 
dao.getRootByPublic(rec.getGroupId());
                                } else {
                                        _list = 
dao.getRootByOwner(node.getOwnerId());
                                }
                        } else {
-                               _list = dao.getByParent(node.getId());
-                       }
-                       for (Recording r : _list) {
-                               list.add(r);
+                               _list = dao.getByParent(id);
                        }
+                       list.addAll(_list);
                } else {
                        FileExplorerItemDao dao = 
getBean(FileExplorerItemDao.class);
                        List<FileExplorerItem> _list;
-                       if (node.getId() == null) {
+                       if (id == null) {
                                if (roomId == null) {
                                        _list = dao.getByRoom(roomId);
                                } else {
                                        _list = 
dao.getByOwner(node.getOwnerId());
                                }
                        } else {
-                               _list = dao.getByParent(node.getId());
-                       }
-                       for (FileExplorerItem r : _list) {
-                               list.add(r);
+                               _list = dao.getByParent(id);
                        }
+                       list.addAll(_list);
                }
-               return list.iterator();
+               return list;
+       }
+
+       @Override
+       public Iterator<FileItem> getChildren(FileItem node) {
+               return getByParent(node, node.getId()).iterator();
        }
 
        @Override

Modified: 
openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/theme.css
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/theme.css?rev=1779367&r1=1779366&r2=1779367&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/theme.css 
(original)
+++ 
openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/theme.css 
Wed Jan 18 18:16:45 2017
@@ -63,6 +63,13 @@ html, body {
 }
 #busy_indicator span {
        vertical-align: sub;
+       padding-left: 25px;
+       line-height: 22px;
+       background-image: url(../images/ajax-loader.gif);
+       background-repeat: no-repeat;
+       background-size: 20px 20px;
+       height: 20px;
+       display: inline-block;
 }
 .clickable {
        cursor: pointer;


Reply via email to