This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openmeetings.git


The following commit(s) were added to refs/heads/master by this push:
     new bfee43e2e [OPENMEETINGS-2715] Trash icon is disable if only 
non-deletable items are selected
bfee43e2e is described below

commit bfee43e2eef1584139e4c4a1d76c16fdf7b33c57
Author: Maxim Solodovnik <solomax...@gmail.com>
AuthorDate: Mon Dec 12 11:43:50 2022 +0700

    [OPENMEETINGS-2715] Trash icon is disable if only non-deletable items are 
selected
---
 .../web/common/tree/FileTreePanel.java             | 25 +++++++++++++++-------
 openmeetings-web/src/main/webapp/css/raw-tree.css  |  1 +
 2 files changed, 18 insertions(+), 8 deletions(-)

diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
index 89cc385ef..54806e18e 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
@@ -37,7 +37,7 @@ import java.nio.file.Path;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.Map.Entry;
+import java.util.Objects;
 
 import org.apache.openmeetings.db.dao.file.FileItemDao;
 import org.apache.openmeetings.db.dao.record.RecordingDao;
@@ -347,14 +347,14 @@ public abstract class FileTreePanel extends Panel {
        }
 
        private void deleteAll(AjaxRequestTarget target) {
-               for (Entry<String, BaseFileItem> e : selected.entrySet()) {
-                       BaseFileItem f = e.getValue();
+               for (BaseFileItem f : selected.values()) {
                        if (!f.isReadOnly()) {
                                delete(f, target);
                        }
                }
-               updateSelected(target);
+               updateSelected(target); // update nodes
                selected.clear();
+               updateSelected(target); // update trash icon
        }
 
        void delete(BaseFileItem f, IPartialPageRequestHandler handler) {
@@ -377,9 +377,9 @@ public abstract class FileTreePanel extends Panel {
                        createDir.add(AttributeModifier.replace(ATTR_CLASS, 
CREATE_DIR_CLASS + (readOnly ? DISABLED_CLASS : "")));
                        upload.setEnabled(!readOnly);
                        upload.add(AttributeModifier.replace(ATTR_CLASS, 
UPLOAD_CLASS + (readOnly ? DISABLED_CLASS : "")));
-                       trash.add(AttributeModifier.replace(ATTR_CLASS, 
TRASH_CLASS + (readOnly ? DISABLED_CLASS : "")));
+                       updateTrash(handler);
                        if (handler != null) {
-                               handler.add(createDir, upload, trash);
+                               handler.add(createDir, upload);
                                update(handler);
                        }
                }
@@ -431,8 +431,17 @@ public abstract class FileTreePanel extends Panel {
        }
 
        private void updateSelected(AjaxRequestTarget target) {
-               for (Entry<String, BaseFileItem> e : selected.entrySet()) {
-                       updateNode(target, e.getValue());
+               for (BaseFileItem f : selected.values()) {
+                       updateNode(target, f);
+               }
+               updateTrash(target);
+       }
+
+       private void updateTrash(IPartialPageRequestHandler handler) {
+               final boolean hasDeletable = selected.values().stream().map(f 
-> f.getId()).anyMatch(Objects::nonNull);
+               trash.add(AttributeModifier.replace(ATTR_CLASS, TRASH_CLASS + 
(hasDeletable && !readOnly ? "" : DISABLED_CLASS)));
+               if (handler != null) {
+                       handler.add(trash);
                }
        }
 
diff --git a/openmeetings-web/src/main/webapp/css/raw-tree.css 
b/openmeetings-web/src/main/webapp/css/raw-tree.css
index b324d59d1..611e6ea00 100644
--- a/openmeetings-web/src/main/webapp/css/raw-tree.css
+++ b/openmeetings-web/src/main/webapp/css/raw-tree.css
@@ -183,6 +183,7 @@
 }
 .file.item .name {
        padding-top: 10px;
+       padding-inline-start: 5px;
 }
 .tree-node .file.item .errors {
        position: absolute;

Reply via email to