Author: solomax
Date: Tue Feb 21 03:30:19 2017
New Revision: 1783824

URL: http://svn.apache.org/viewvc?rev=1783824&view=rev
Log:
[OPENMEETINGS-1558] room public drive is accessible to all users

Modified:
    
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.html
    
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/FolderPanel.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/java/org/apache/openmeetings/web/room/sidebar/RoomFilePanel.java
    
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java
    
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/css/room.css
    
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.html
    
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/FolderPanel.java
    
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/OmTreeProvider.java
    
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomFilePanel.java
    
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java
    openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/room.css

Modified: 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.html
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.html?rev=1783824&r1=1783823&r2=1783824&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.html
 (original)
+++ 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.html
 Tue Feb 21 03:30:19 2017
@@ -38,10 +38,10 @@
        </script>
        <div class="file tree item drop area">
                <div class="icons clear trash-toolbar" 
wicket:id="trash-toolbar" wicket:message="title:705">
-                       <span wicket:id="upload" class="add om-icon big 
align-left clickable" wicket:message="title:702"></span>
-                       <span wicket:id="create" class="folder-create big 
om-icon align-left clickable" wicket:message="title:703"></span>
+                       <span wicket:id="upload" 
wicket:message="title:702"></span>
+                       <span wicket:id="create" 
wicket:message="title:703"></span>
                        <span wicket:id="refresh" class="refresh om-icon big 
align-left clickable" wicket:message="title:704"></span>
-                       <span wicket:id="trash" class="trash om-icon big 
align-right clickable"></span>
+                       <span wicket:id="trash"></span>
                        <div class="clear"></div>
                </div>
                <div wicket:id="tree-container" class="trees">

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=1783824&r1=1783823&r2=1783824&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
 Tue Feb 21 03:30:19 2017
@@ -43,6 +43,7 @@ import org.apache.openmeetings.web.commo
 import org.apache.openmeetings.web.common.ConfirmableAjaxBorder;
 import 
org.apache.openmeetings.web.common.ConfirmableAjaxBorder.ConfirmableBorderDialog;
 import org.apache.openmeetings.web.util.AjaxDownload;
+import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.Component;
 import org.apache.wicket.ajax.AjaxEventBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
@@ -66,6 +67,13 @@ import com.googlecode.wicket.jquery.ui.w
 
 public abstract class FileTreePanel extends Panel {
        private static final long serialVersionUID = 1L;
+       private final static String ALIGN_LEFT_CLASS = " align-left";
+       private final static String ALIGN_RIGHT_CLASS = " align-right";
+       private final static String BASE_CLASS = " om-icon big clickable";
+       private final static String UPLOAD_CLASS = "add" + BASE_CLASS + 
ALIGN_LEFT_CLASS;
+       private final static String CREATE_DIR_CLASS = "folder-create" + 
BASE_CLASS + ALIGN_LEFT_CLASS;
+       private final static String TRASH_CLASS = "trash" + BASE_CLASS + 
ALIGN_RIGHT_CLASS;
+       private final static String DISABLED_CLASS = " disabled";
        final WebMarkupContainer trees = new 
WebMarkupContainer("tree-container");
        private final WebMarkupContainer sizes = new 
WebMarkupContainer("sizes");
        private FileItem lastSelected = null;
@@ -88,13 +96,24 @@ public abstract class FileTreePanel exte
        private final ConfirmableBorderDialog trashConfirm;
        private ConfirmableAjaxBorder trashBorder;
        private final Long roomId;
+       private final OmTreeProvider tp;
+       private boolean readOnly = true;
+       private final Component createDir = new 
WebMarkupContainer("create").add(new AjaxEventBehavior("click") {
+               private static final long serialVersionUID = 1L;
+
+               @Override
+               protected void onEvent(AjaxRequestTarget target) {
+                       addFolder.open(target);
+               }
+       });
+       private final Component upload = new WebMarkupContainer("upload");
 
        public FileTreePanel(String id, Long roomId, AddFolderDialog addFolder, 
ConfirmableBorderDialog trashConfirm) {
                super(id);
                this.roomId = roomId;
                this.addFolder = addFolder;
                this.trashConfirm = trashConfirm;
-               OmTreeProvider tp = new OmTreeProvider(roomId);
+               tp = new OmTreeProvider(roomId);
                select(tp.getRoot(), null, false, false);
                form.add(tree = new FileItemTree("tree", this, tp));
                
form.add(download.setVisible(false).setOutputMarkupPlaceholderTag(true));
@@ -160,15 +179,8 @@ public abstract class FileTreePanel exte
                        }
                };
                form.add(trashToolbar);
-               trashToolbar.add(getUpload("upload"));
-               trashToolbar.add(new WebMarkupContainer("create").add(new 
AjaxEventBehavior("click") {
-                       private static final long serialVersionUID = 1L;
-
-                       @Override
-                       protected void onEvent(AjaxRequestTarget target) {
-                               addFolder.open(target);
-                       }
-               }));
+               trashToolbar.add(getUpload());
+               trashToolbar.add(createDir);
                trashToolbar.add(new WebMarkupContainer("refresh").add(new 
AjaxEventBehavior("click") {
                        private static final long serialVersionUID = 1L;
 
@@ -182,7 +194,7 @@ public abstract class FileTreePanel exte
 
                        @Override
                        protected boolean isClickable() {
-                               return !selected.isEmpty();
+                               return !readOnly && !selected.isEmpty();
                        }
 
                        @Override
@@ -200,14 +212,15 @@ public abstract class FileTreePanel exte
                updateSizes();
                form.add(sizes.add(new Label("homeSize", homeSize), new 
Label("publicSize", publicSize)).setOutputMarkupId(true));
                form.add(errorsDialog);
+               setReadOnly(false, null);
        }
 
        protected String getContainment() {
                return ".file.item.drop.area";
        }
 
-       protected Component getUpload(String id) {
-               return new WebMarkupContainer(id).setVisible(false);
+       protected Component getUpload() {
+               return upload.setVisible(false);
        }
 
        private void deleteAll(AjaxRequestTarget target) {
@@ -229,6 +242,24 @@ public abstract class FileTreePanel exte
                update(handler);
        }
 
+       public void setReadOnly(boolean readOnly, IPartialPageRequestHandler 
handler) {
+               if (this.readOnly != readOnly) {
+                       this.readOnly = readOnly;
+                       tp.refreshRoots(!readOnly);
+                       createDir.setEnabled(!readOnly);
+                       createDir.add(AttributeModifier.replace("class", new 
StringBuilder(CREATE_DIR_CLASS).append(readOnly ? DISABLED_CLASS : "")));
+                       upload.add(AttributeModifier.replace("class", new 
StringBuilder(UPLOAD_CLASS).append(readOnly ? DISABLED_CLASS : "")));
+                       trashBorder.add(AttributeModifier.replace("class", new 
StringBuilder(TRASH_CLASS).append(readOnly ? DISABLED_CLASS : "")));
+                       if (handler != null) {
+                               handler.add(createDir, upload, trashBorder);
+                       }
+               }
+       }
+
+       public boolean isReadOnly() {
+               return readOnly;
+       }
+
        protected abstract void update(AjaxRequestTarget target, FileItem f);
 
        public void createFolder(AjaxRequestTarget target, String name) {

Modified: 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java?rev=1783824&r1=1783823&r2=1783824&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java
 (original)
+++ 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java
 Tue Feb 21 03:30:19 2017
@@ -78,7 +78,7 @@ public class FolderPanel extends Panel {
                                target.add(treePanel.trees);
                        }
                } : new WebMarkupContainer("drop");
-               if (r.getId() == null) {
+               if (r.getId() == null || treePanel.isReadOnly()) {
                        drag = new WebMarkupContainer("drag");
                } else {
                        drag = new Draggable<FileItem>("drag", Model.of(r)) {
@@ -94,7 +94,7 @@ public class FolderPanel extends Panel {
                        }.setContainment(treePanel.getContainment());
                        drag.add(AttributeAppender.append("class", r instanceof 
Recording ? "recorditem" : "fileitem"));
                }
-               drag.add(r.getId() == null ? new Label("name", r.getName()) : 
new AjaxEditableLabel<String>("name", Model.of(model.getObject().getName())) {
+               drag.add(r.getId() == null || treePanel.isReadOnly() ? new 
Label("name", r.getName()) : new AjaxEditableLabel<String>("name", 
Model.of(model.getObject().getName())) {
                        private static final long serialVersionUID = 1L;
 
                        @Override

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=1783824&r1=1783823&r2=1783824&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
 Tue Feb 21 03:30:19 2017
@@ -46,29 +46,40 @@ public class OmTreeProvider implements I
        public static String RECORDINGS_GROUP = "recordings-group-%s";
        public static String FILES_MY = "files-my";
        public static String FILES_ROOM = "files-room";
+       private final Long roomId;
        private final List<FileItem> roots = new ArrayList<>();
 
        public OmTreeProvider(Long roomId) {
+               this.roomId = roomId;
+               refreshRoots(true);
+       }
+
+       public void refreshRoots(boolean all) {
+               roots.clear();
                if (roomId != null) {
-                       roots.add(createFileRoot(null));
                        roots.add(createFileRoot(roomId));
                }
-               final String PUBLIC = Application.getString(861);
-               {
-                       Recording r = createRecRoot(Application.getString(860), 
RECORDINGS_MY);
-                       r.setOwnerId(getUserId());
-                       roots.add(r);
-               }
-               {
-                       Recording r = createRecRoot(PUBLIC, RECORDINGS_PUBLIC);
-                       roots.add(r);
-               }
-               for (GroupUser gu : 
getBean(UserDao.class).get(getUserId()).getGroupUsers()) {
-                       Group g = gu.getGroup();
+               if (all) {
+                       if (roomId != null) {
+                               roots.add(createFileRoot(null));
+                       }
+                       final String PUBLIC = Application.getString(861);
+                       {
+                               Recording r = 
createRecRoot(Application.getString(860), RECORDINGS_MY);
+                               r.setOwnerId(getUserId());
+                               roots.add(r);
+                       }
+                       {
+                               Recording r = createRecRoot(PUBLIC, 
RECORDINGS_PUBLIC);
+                               roots.add(r);
+                       }
+                       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);
+                               Recording r = createRecRoot(String.format("%s 
(%s)", PUBLIC, g.getName()), String.format(RECORDINGS_GROUP, g.getId()));
+                               r.setGroupId(g.getId());
+                               roots.add(r);
+                       }
                }
        }
 

Modified: 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomFilePanel.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomFilePanel.java?rev=1783824&r1=1783823&r2=1783824&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomFilePanel.java
 (original)
+++ 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomFilePanel.java
 Tue Feb 21 03:30:19 2017
@@ -67,17 +67,16 @@ public class RoomFilePanel extends FileT
        }
 
        @Override
-       protected Component getUpload(String id) {
-               Component u = super.getUpload(id);
-               u.setVisible(true);
-               u.add(new AjaxEventBehavior("click") {
-                       private static final long serialVersionUID = 1L;
+       protected Component getUpload() {
+               return super.getUpload()
+                               .setVisible(true)
+                               .add(new AjaxEventBehavior("click") {
+                                       private static final long 
serialVersionUID = 1L;
 
-                       @Override
-                       protected void onEvent(AjaxRequestTarget target) {
-                               room.getSidebar().showUpload(target);
-                       }
-               });
-               return u;
+                                       @Override
+                                       protected void 
onEvent(AjaxRequestTarget target) {
+                                               
room.getSidebar().showUpload(target);
+                                       }
+                               });
        }
 }

Modified: 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java?rev=1783824&r1=1783823&r2=1783824&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java
 (original)
+++ 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java
 Tue Feb 21 03:30:19 2017
@@ -230,7 +230,6 @@ public class RoomSidebar extends Panel {
        public RoomSidebar(String id, final RoomPanel room) {
                super(id);
                this.room = room;
-               updateShowFiles();
 
                userTab = new OmTab() {
                        private static final long serialVersionUID = 1L;
@@ -262,7 +261,7 @@ public class RoomSidebar extends Panel {
 
                        @Override
                        public boolean isVisible() {
-                               return showFiles;
+                               return true;
                        }
 
                        @Override
@@ -308,13 +307,13 @@ public class RoomSidebar extends Panel {
                        }
                }).setOutputMarkupId(true));
                selfRights = new SelfIconsPanel("icons", room.getClient(), 
room, true);
-               add(addFolder);
-               add(toggleRight, toggleActivity, roomAction, avSettings);
        }
 
        @Override
        protected void onInitialize() {
                super.onInitialize();
+               add(addFolder);
+               add(toggleRight, toggleActivity, roomAction, avSettings);
                add(confirmKick = new ConfirmableAjaxBorder("confirm-kick", 
getString("603"), getString("605")) {
                        private static final long serialVersionUID = 1L;
 
@@ -327,6 +326,7 @@ public class RoomSidebar extends Panel {
                ConfirmableBorderDialog confirmTrash = new 
ConfirmableBorderDialog("confirm-trash", getString("80"), getString("713"), 
form);
                roomFiles = new RoomFilePanel("tree", room, addFolder, 
confirmTrash);
                add(form.add(confirmTrash), upload = new UploadDialog("upload", 
room, roomFiles));
+               updateShowFiles(null);
        }
 
        private TabListModel newTabModel() {
@@ -358,12 +358,13 @@ public class RoomSidebar extends Panel {
                return users;
        }
 
-       private void updateShowFiles() {
+       private void updateShowFiles(IPartialPageRequestHandler handler) {
                showFiles = !room.getRoom().isHidden(RoomElement.Files) && 
room.getClient().hasRight(Right.whiteBoard);
+               roomFiles.setReadOnly(!showFiles, handler);
        }
 
        public void updateUsers(IPartialPageRequestHandler handler) {
-               updateShowFiles();
+               updateShowFiles(handler);
                updateUsers();
                selfRights.setVisible(room.getRoom().isAllowUserQuestions() || 
room.getClient().hasRight(Right.moderator));
                selfRights.update(handler);

Modified: 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/css/room.css
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/css/room.css?rev=1783824&r1=1783823&r2=1783824&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/css/room.css
 (original)
+++ 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/css/room.css
 Tue Feb 21 03:30:19 2017
@@ -231,7 +231,7 @@
 .activity.mic.ui-icon {
        background-image: url(images/microphone_enable.png);
 }
-.ui-icon.disabled {
+.ui-icon.disabled, .om-icon.disabled {
        -webkit-filter: grayscale(100%); /* Safari 6.0 - 9.0 */
        filter: grayscale(100%);
        pointer-events: none;

Modified: 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.html
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.html?rev=1783824&r1=1783823&r2=1783824&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.html
 (original)
+++ 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.html
 Tue Feb 21 03:30:19 2017
@@ -38,10 +38,10 @@
        </script>
        <div class="file tree item drop area">
                <div class="icons clear trash-toolbar" 
wicket:id="trash-toolbar" wicket:message="title:705">
-                       <span wicket:id="upload" class="add om-icon big 
align-left clickable" wicket:message="title:702"></span>
-                       <span wicket:id="create" class="folder-create big 
om-icon align-left clickable" wicket:message="title:703"></span>
+                       <span wicket:id="upload" 
wicket:message="title:702"></span>
+                       <span wicket:id="create" 
wicket:message="title:703"></span>
                        <span wicket:id="refresh" class="refresh om-icon big 
align-left clickable" wicket:message="title:704"></span>
-                       <span wicket:id="trash" class="trash om-icon big 
align-right clickable"></span>
+                       <span wicket:id="trash"></span>
                        <div class="clear"></div>
                </div>
                <div wicket:id="tree-container" class="trees">

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=1783824&r1=1783823&r2=1783824&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
 Tue Feb 21 03:30:19 2017
@@ -43,6 +43,7 @@ import org.apache.openmeetings.web.commo
 import org.apache.openmeetings.web.common.ConfirmableAjaxBorder;
 import 
org.apache.openmeetings.web.common.ConfirmableAjaxBorder.ConfirmableBorderDialog;
 import org.apache.openmeetings.web.util.AjaxDownload;
+import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.Component;
 import org.apache.wicket.ajax.AjaxEventBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
@@ -66,6 +67,13 @@ import com.googlecode.wicket.jquery.ui.w
 
 public abstract class FileTreePanel extends Panel {
        private static final long serialVersionUID = 1L;
+       private final static String ALIGN_LEFT_CLASS = " align-left";
+       private final static String ALIGN_RIGHT_CLASS = " align-right";
+       private final static String BASE_CLASS = " om-icon big clickable";
+       private final static String UPLOAD_CLASS = "add" + BASE_CLASS + 
ALIGN_LEFT_CLASS;
+       private final static String CREATE_DIR_CLASS = "folder-create" + 
BASE_CLASS + ALIGN_LEFT_CLASS;
+       private final static String TRASH_CLASS = "trash" + BASE_CLASS + 
ALIGN_RIGHT_CLASS;
+       private final static String DISABLED_CLASS = " disabled";
        final WebMarkupContainer trees = new 
WebMarkupContainer("tree-container");
        private final WebMarkupContainer sizes = new 
WebMarkupContainer("sizes");
        private FileItem lastSelected = null;
@@ -88,13 +96,24 @@ public abstract class FileTreePanel exte
        private final ConfirmableBorderDialog trashConfirm;
        private ConfirmableAjaxBorder trashBorder;
        private final Long roomId;
+       private final OmTreeProvider tp;
+       private boolean readOnly = true;
+       private final Component createDir = new 
WebMarkupContainer("create").add(new AjaxEventBehavior("click") {
+               private static final long serialVersionUID = 1L;
+
+               @Override
+               protected void onEvent(AjaxRequestTarget target) {
+                       addFolder.open(target);
+               }
+       });
+       private final Component upload = new WebMarkupContainer("upload");
 
        public FileTreePanel(String id, Long roomId, AddFolderDialog addFolder, 
ConfirmableBorderDialog trashConfirm) {
                super(id);
                this.roomId = roomId;
                this.addFolder = addFolder;
                this.trashConfirm = trashConfirm;
-               OmTreeProvider tp = new OmTreeProvider(roomId);
+               tp = new OmTreeProvider(roomId);
                select(tp.getRoot(), null, false, false);
                form.add(tree = new FileItemTree("tree", this, tp));
                
form.add(download.setVisible(false).setOutputMarkupPlaceholderTag(true));
@@ -160,15 +179,8 @@ public abstract class FileTreePanel exte
                        }
                };
                form.add(trashToolbar);
-               trashToolbar.add(getUpload("upload"));
-               trashToolbar.add(new WebMarkupContainer("create").add(new 
AjaxEventBehavior("click") {
-                       private static final long serialVersionUID = 1L;
-
-                       @Override
-                       protected void onEvent(AjaxRequestTarget target) {
-                               addFolder.open(target);
-                       }
-               }));
+               trashToolbar.add(getUpload());
+               trashToolbar.add(createDir);
                trashToolbar.add(new WebMarkupContainer("refresh").add(new 
AjaxEventBehavior("click") {
                        private static final long serialVersionUID = 1L;
 
@@ -182,7 +194,7 @@ public abstract class FileTreePanel exte
 
                        @Override
                        protected boolean isClickable() {
-                               return !selected.isEmpty();
+                               return !readOnly && !selected.isEmpty();
                        }
 
                        @Override
@@ -200,14 +212,15 @@ public abstract class FileTreePanel exte
                updateSizes();
                form.add(sizes.add(new Label("homeSize", homeSize), new 
Label("publicSize", publicSize)).setOutputMarkupId(true));
                form.add(errorsDialog);
+               setReadOnly(false, null);
        }
 
        protected String getContainment() {
                return ".file.item.drop.area";
        }
 
-       protected Component getUpload(String id) {
-               return new WebMarkupContainer(id).setVisible(false);
+       protected Component getUpload() {
+               return upload.setVisible(false);
        }
 
        private void deleteAll(AjaxRequestTarget target) {
@@ -229,6 +242,24 @@ public abstract class FileTreePanel exte
                update(handler);
        }
 
+       public void setReadOnly(boolean readOnly, IPartialPageRequestHandler 
handler) {
+               if (this.readOnly != readOnly) {
+                       this.readOnly = readOnly;
+                       tp.refreshRoots(!readOnly);
+                       createDir.setEnabled(!readOnly);
+                       createDir.add(AttributeModifier.replace("class", new 
StringBuilder(CREATE_DIR_CLASS).append(readOnly ? DISABLED_CLASS : "")));
+                       upload.add(AttributeModifier.replace("class", new 
StringBuilder(UPLOAD_CLASS).append(readOnly ? DISABLED_CLASS : "")));
+                       trashBorder.add(AttributeModifier.replace("class", new 
StringBuilder(TRASH_CLASS).append(readOnly ? DISABLED_CLASS : "")));
+                       if (handler != null) {
+                               handler.add(createDir, upload, trashBorder);
+                       }
+               }
+       }
+
+       public boolean isReadOnly() {
+               return readOnly;
+       }
+
        protected abstract void update(AjaxRequestTarget target, FileItem f);
 
        public void createFolder(AjaxRequestTarget target, String name) {

Modified: 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java?rev=1783824&r1=1783823&r2=1783824&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java
 (original)
+++ 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java
 Tue Feb 21 03:30:19 2017
@@ -78,7 +78,7 @@ public class FolderPanel extends Panel {
                                target.add(treePanel.trees);
                        }
                } : new WebMarkupContainer("drop");
-               if (r.getId() == null) {
+               if (r.getId() == null || treePanel.isReadOnly()) {
                        drag = new WebMarkupContainer("drag");
                } else {
                        drag = new Draggable<FileItem>("drag", Model.of(r)) {
@@ -94,7 +94,7 @@ public class FolderPanel extends Panel {
                        }.setContainment(treePanel.getContainment());
                        drag.add(AttributeAppender.append("class", r instanceof 
Recording ? "recorditem" : "fileitem"));
                }
-               drag.add(r.getId() == null ? new Label("name", r.getName()) : 
new AjaxEditableLabel<String>("name", Model.of(model.getObject().getName())) {
+               drag.add(r.getId() == null || treePanel.isReadOnly() ? new 
Label("name", r.getName()) : new AjaxEditableLabel<String>("name", 
Model.of(model.getObject().getName())) {
                        private static final long serialVersionUID = 1L;
 
                        @Override

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=1783824&r1=1783823&r2=1783824&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
 Tue Feb 21 03:30:19 2017
@@ -46,29 +46,40 @@ public class OmTreeProvider implements I
        public static String RECORDINGS_GROUP = "recordings-group-%s";
        public static String FILES_MY = "files-my";
        public static String FILES_ROOM = "files-room";
+       private final Long roomId;
        private final List<FileItem> roots = new ArrayList<>();
 
        public OmTreeProvider(Long roomId) {
+               this.roomId = roomId;
+               refreshRoots(true);
+       }
+
+       public void refreshRoots(boolean all) {
+               roots.clear();
                if (roomId != null) {
-                       roots.add(createFileRoot(null));
                        roots.add(createFileRoot(roomId));
                }
-               final String PUBLIC = Application.getString(861);
-               {
-                       Recording r = createRecRoot(Application.getString(860), 
RECORDINGS_MY);
-                       r.setOwnerId(getUserId());
-                       roots.add(r);
-               }
-               {
-                       Recording r = createRecRoot(PUBLIC, RECORDINGS_PUBLIC);
-                       roots.add(r);
-               }
-               for (GroupUser gu : 
getBean(UserDao.class).get(getUserId()).getGroupUsers()) {
-                       Group g = gu.getGroup();
+               if (all) {
+                       if (roomId != null) {
+                               roots.add(createFileRoot(null));
+                       }
+                       final String PUBLIC = Application.getString(861);
+                       {
+                               Recording r = 
createRecRoot(Application.getString(860), RECORDINGS_MY);
+                               r.setOwnerId(getUserId());
+                               roots.add(r);
+                       }
+                       {
+                               Recording r = createRecRoot(PUBLIC, 
RECORDINGS_PUBLIC);
+                               roots.add(r);
+                       }
+                       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);
+                               Recording r = createRecRoot(String.format("%s 
(%s)", PUBLIC, g.getName()), String.format(RECORDINGS_GROUP, g.getId()));
+                               r.setGroupId(g.getId());
+                               roots.add(r);
+                       }
                }
        }
 

Modified: 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomFilePanel.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomFilePanel.java?rev=1783824&r1=1783823&r2=1783824&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomFilePanel.java
 (original)
+++ 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomFilePanel.java
 Tue Feb 21 03:30:19 2017
@@ -67,17 +67,16 @@ public class RoomFilePanel extends FileT
        }
 
        @Override
-       protected Component getUpload(String id) {
-               Component u = super.getUpload(id);
-               u.setVisible(true);
-               u.add(new AjaxEventBehavior("click") {
-                       private static final long serialVersionUID = 1L;
+       protected Component getUpload() {
+               return super.getUpload()
+                               .setVisible(true)
+                               .add(new AjaxEventBehavior("click") {
+                                       private static final long 
serialVersionUID = 1L;
 
-                       @Override
-                       protected void onEvent(AjaxRequestTarget target) {
-                               room.getSidebar().showUpload(target);
-                       }
-               });
-               return u;
+                                       @Override
+                                       protected void 
onEvent(AjaxRequestTarget target) {
+                                               
room.getSidebar().showUpload(target);
+                                       }
+                               });
        }
 }

Modified: 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java?rev=1783824&r1=1783823&r2=1783824&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java
 (original)
+++ 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java
 Tue Feb 21 03:30:19 2017
@@ -230,7 +230,6 @@ public class RoomSidebar extends Panel {
        public RoomSidebar(String id, final RoomPanel room) {
                super(id);
                this.room = room;
-               updateShowFiles();
 
                userTab = new OmTab() {
                        private static final long serialVersionUID = 1L;
@@ -262,7 +261,7 @@ public class RoomSidebar extends Panel {
 
                        @Override
                        public boolean isVisible() {
-                               return showFiles;
+                               return true;
                        }
 
                        @Override
@@ -308,13 +307,13 @@ public class RoomSidebar extends Panel {
                        }
                }).setOutputMarkupId(true));
                selfRights = new SelfIconsPanel("icons", room.getClient(), 
room, true);
-               add(addFolder);
-               add(toggleRight, toggleActivity, roomAction, avSettings);
        }
 
        @Override
        protected void onInitialize() {
                super.onInitialize();
+               add(addFolder);
+               add(toggleRight, toggleActivity, roomAction, avSettings);
                add(confirmKick = new ConfirmableAjaxBorder("confirm-kick", 
getString("603"), getString("605")) {
                        private static final long serialVersionUID = 1L;
 
@@ -327,6 +326,7 @@ public class RoomSidebar extends Panel {
                ConfirmableBorderDialog confirmTrash = new 
ConfirmableBorderDialog("confirm-trash", getString("80"), getString("713"), 
form);
                roomFiles = new RoomFilePanel("tree", room, addFolder, 
confirmTrash);
                add(form.add(confirmTrash), upload = new UploadDialog("upload", 
room, roomFiles));
+               updateShowFiles(null);
        }
 
        private TabListModel newTabModel() {
@@ -358,12 +358,13 @@ public class RoomSidebar extends Panel {
                return users;
        }
 
-       private void updateShowFiles() {
+       private void updateShowFiles(IPartialPageRequestHandler handler) {
                showFiles = !room.getRoom().isHidden(RoomElement.Files) && 
room.getClient().hasRight(Right.whiteBoard);
+               roomFiles.setReadOnly(!showFiles, handler);
        }
 
        public void updateUsers(IPartialPageRequestHandler handler) {
-               updateShowFiles();
+               updateShowFiles(handler);
                updateUsers();
                selfRights.setVisible(room.getRoom().isAllowUserQuestions() || 
room.getClient().hasRight(Right.moderator));
                selfRights.update(handler);

Modified: 
openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/room.css
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/room.css?rev=1783824&r1=1783823&r2=1783824&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/room.css 
(original)
+++ 
openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/room.css 
Tue Feb 21 03:30:19 2017
@@ -231,7 +231,7 @@
 .activity.mic.ui-icon {
        background-image: url(images/microphone_enable.png);
 }
-.ui-icon.disabled {
+.ui-icon.disabled, .om-icon.disabled {
        -webkit-filter: grayscale(100%); /* Safari 6.0 - 9.0 */
        filter: grayscale(100%);
        pointer-events: none;


Reply via email to