Explorar o código

[fileBrowser] Added collapse and collapse all context menu options

Clément Espeute hai 2 meses
pai
achega
5b824a2289
Modificáronse 2 ficheiros con 38 adicións e 1 borrados
  1. 22 1
      hide/comp/FancyTree.hx
  2. 16 0
      hide/view/FileBrowser.hx

+ 22 - 1
hide/comp/FancyTree.hx

@@ -313,6 +313,7 @@ class FancyTree<TreeItem> extends hide.comp.Component {
 			toggleDataOpen(cur, true);
 			cur = cur.parent;
 		}
+		saveState();
 	}
 
 	public function rename(item: TreeItem) : Void {
@@ -402,6 +403,7 @@ class FancyTree<TreeItem> extends hide.comp.Component {
 			}
 			else if (currentItem != null && !isOpen(currentItem)) {
 				toggleDataOpen(currentItem, true);
+				saveState();
 			}
 			return;
 		}
@@ -417,6 +419,7 @@ class FancyTree<TreeItem> extends hide.comp.Component {
 				currentItem = currentItem.parent;
 			} else if(anyChildren && currentItem != null) {
 				toggleDataOpen(currentItem, false);
+				saveState();
 			}
 			return;
 		}
@@ -602,6 +605,7 @@ class FancyTree<TreeItem> extends hide.comp.Component {
 			var fold = element.querySelector(".caret");
 			fold.addEventListener("click", (e) -> {
 				toggleDataOpen(data);
+				saveState();
 			});
 
 			var clickHandlerClosure = dataClickHandler.bind(data);
@@ -701,6 +705,7 @@ class FancyTree<TreeItem> extends hide.comp.Component {
 
 						if (time - moveLastDragOverStart > overDragOpenDelaySec && !isOpen(data)) {
 							toggleDataOpen(data, true);
+							saveState();
 						}
 					}
 
@@ -813,7 +818,24 @@ class FancyTree<TreeItem> extends hide.comp.Component {
 		var data = itemMap.get(cast item);
 		if (data != null) {
 			toggleDataOpen(data, force);
+			saveState();
+		}
+	}
+
+	public function collapseItem(item: TreeItem) {
+		var data = itemMap.get(cast item);
+		if (data == null)
+			return;
+
+		function collapseData(data: TreeItemData<TreeItem>) {
+			toggleDataOpen(data, false);
+			for (child in data.children) {
+				collapseData(child);
+			}
 		}
+
+		collapseData(data);
+		saveState();
 	}
 
 	function toggleDataOpen(data: TreeItemData<TreeItem>, ?force: Bool) {
@@ -827,7 +849,6 @@ class FancyTree<TreeItem> extends hide.comp.Component {
 		} else {
 			openState.remove(data.uniqueName);
 		}
-		saveState();
 		queueRefresh(Flat);
 	}
 

+ 16 - 0
hide/view/FileBrowser.hx

@@ -769,6 +769,22 @@ class FileBrowser extends hide.ui.View<FileBrowserState> {
 				label: "New ...",
 				menu: newMenu,
 			});
+
+			if (!isGallery) {
+				options.push({
+					label: "Collapse",
+					click: fancyTree.collapseItem.bind(item),
+				});
+
+				options.push({
+					label: "Collapse All",
+					click: () -> {
+						for (child in root.children) {
+							fancyTree.collapseItem(child);
+						}
+					}
+				});
+			}
 		}
 
 		if (!implicitFolder) {