From 2341e54edbc4dfb82cf58a452982cf431280ef5e Mon Sep 17 00:00:00 2001
From: srosse <none@none>
Date: Tue, 9 Jul 2013 09:36:45 +0200
Subject: [PATCH] OO-531: replce the SelectionTree of the file chooser by the
 MenuTree

---
 .../filechooser/FileChoosenEvent.java         |  2 ++
 .../filechooser/FileChooserController.java    | 31 +++++++++----------
 .../filechooser/_content/filechooserajax.html |  4 +--
 .../control/generic/folder/FolderHelper.java  |  7 +++--
 .../generic/folder/FolderTreeModel.java       | 14 +++++----
 5 files changed, 29 insertions(+), 29 deletions(-)

diff --git a/src/main/java/org/olat/core/commons/controllers/filechooser/FileChoosenEvent.java b/src/main/java/org/olat/core/commons/controllers/filechooser/FileChoosenEvent.java
index 2fd8409c862..02801b80ef0 100644
--- a/src/main/java/org/olat/core/commons/controllers/filechooser/FileChoosenEvent.java
+++ b/src/main/java/org/olat/core/commons/controllers/filechooser/FileChoosenEvent.java
@@ -35,6 +35,8 @@ import org.olat.core.util.vfs.VFSItem;
  */
 
 public class FileChoosenEvent extends Event {
+
+	private static final long serialVersionUID = 6650009491560019373L;
 	public static final String COMMAND = "fileSelected";
 	private VFSItem selectedItem;
 
diff --git a/src/main/java/org/olat/core/commons/controllers/filechooser/FileChooserController.java b/src/main/java/org/olat/core/commons/controllers/filechooser/FileChooserController.java
index 04dffe26743..838863d4140 100644
--- a/src/main/java/org/olat/core/commons/controllers/filechooser/FileChooserController.java
+++ b/src/main/java/org/olat/core/commons/controllers/filechooser/FileChooserController.java
@@ -22,8 +22,10 @@ package org.olat.core.commons.controllers.filechooser;
 import org.olat.core.gui.UserRequest;
 import org.olat.core.gui.components.Component;
 import org.olat.core.gui.components.link.Link;
-import org.olat.core.gui.components.tree.SelectionTree;
+import org.olat.core.gui.components.link.LinkFactory;
+import org.olat.core.gui.components.tree.MenuTree;
 import org.olat.core.gui.components.tree.TreeEvent;
+import org.olat.core.gui.components.velocity.VelocityContainer;
 import org.olat.core.gui.control.Event;
 import org.olat.core.gui.control.WindowControl;
 import org.olat.core.gui.control.controller.BasicController;
@@ -59,7 +61,8 @@ import org.olat.core.util.vfs.filters.VFSItemFilter;
 public class FileChooserController extends BasicController {
 
 	private Link cancelLink, selectLink;
-	private SelectionTree selectionTree;
+	private MenuTree selectionTree;
+	private VelocityContainer mainVC;
 	private FolderTreeModel treeModel;
 
 	private VFSItem selectedItem;
@@ -88,11 +91,16 @@ public class FileChooserController extends BasicController {
 		this.onlyLeafsSelectable = onlyLeafsSelectable;
 
 		treeModel = new FolderTreeModel(ureq.getLocale(), rootContainer,  false, true, !onlyLeafsSelectable, false, customItemFilter);
-		selectionTree = new SelectionTree("stTree", getTranslator());
+		selectionTree = new MenuTree("stTree");
 		selectionTree.setTreeModel(treeModel);
 		selectionTree.addListener(this);
-		selectionTree.setFormButtonKey("select");
-		putInitialPanel(selectionTree);
+		
+		mainVC = createVelocityContainer("filechooserajax");
+		mainVC.put("treeCtr", selectionTree);
+		selectLink = LinkFactory.createButton("select", mainVC, this);
+		cancelLink = LinkFactory.createButton("cancel", mainVC, this);
+		
+		putInitialPanel(mainVC);
 	}
 
 	/**
@@ -118,16 +126,9 @@ public class FileChooserController extends BasicController {
 			}
 		} else if (source == selectionTree) {
 			TreeEvent te = (TreeEvent) event;
-			if (te.getCommand().equals(TreeEvent.COMMAND_TREENODE_CLICKED)) {
+			if (te.getCommand().equals(MenuTree.COMMAND_TREENODE_CLICKED)) {
 				String selectedPath = treeModel.getSelectedPath(selectionTree.getSelectedNode());
 				selectedItem = rootContainer.resolve(selectedPath);
-				if (selectedItem != null) {
-					fireEvent(ureq, new FileChoosenEvent(selectedItem));
-				} else {
-					fireEvent(ureq, Event.FAILED_EVENT);
-				}
-			} else if (te.getCommand().equals(TreeEvent.COMMAND_CANCELLED)) {
-				fireEvent(ureq, Event.CANCELLED_EVENT);
 			}
 		}
 	}
@@ -135,9 +136,5 @@ public class FileChooserController extends BasicController {
 	@Override
 	protected void doDispose() {
 		// Controllers auto disposed by basic controller. NULL composite objects to help GC
-		cancelLink = null;
-		selectLink = null;
-		treeModel = null;
-		selectionTree = null;
 	}
 }
\ No newline at end of file
diff --git a/src/main/java/org/olat/core/commons/controllers/filechooser/_content/filechooserajax.html b/src/main/java/org/olat/core/commons/controllers/filechooser/_content/filechooserajax.html
index ae947b65b6d..16d3c6c4348 100644
--- a/src/main/java/org/olat/core/commons/controllers/filechooser/_content/filechooserajax.html
+++ b/src/main/java/org/olat/core/commons/controllers/filechooser/_content/filechooserajax.html
@@ -1,8 +1,6 @@
 #if($showTitle)
 	<h4>$r.translate("filechooser.tree.select.title")</h4>
-	<p>
-		$r.translate("filechooser.tree.select.intro")
-	</p>
+	<p>$r.translate("filechooser.tree.select.intro")</p>
 #end
 $r.render("treeCtr")
 <div class="b_button_group">
diff --git a/src/main/java/org/olat/core/gui/control/generic/folder/FolderHelper.java b/src/main/java/org/olat/core/gui/control/generic/folder/FolderHelper.java
index 3dbd1149005..6b8f7461e68 100644
--- a/src/main/java/org/olat/core/gui/control/generic/folder/FolderHelper.java
+++ b/src/main/java/org/olat/core/gui/control/generic/folder/FolderHelper.java
@@ -30,6 +30,7 @@ package org.olat.core.gui.control.generic.folder;
 
 import java.util.HashSet;
 import java.util.Locale;
+import java.util.Set;
 import java.util.StringTokenizer;
 
 import org.olat.core.gui.translator.Translator;
@@ -46,14 +47,14 @@ import org.olat.core.util.Util;
 public class FolderHelper {
 	
 	private static final String FILETYPES =  "avi bat bmp css doc docx dvi exe gif gz htm html jpeg jpg log midi mov mp3 mpeg mpg pdf png ppt pptx ps ra ram readme rtf tar tgz txt wav xls xlsx xml xsl zip";
-	private static HashSet knownFileTypes;
+	private static Set<String> knownFileTypes;
 
 	static {
 		// initialize known filetypes for faster access
-		FolderHelper.knownFileTypes = new HashSet();
+		FolderHelper.knownFileTypes = new HashSet<String>();
 		StringTokenizer st = new StringTokenizer(FILETYPES, " ");
 		while (st.hasMoreElements()) {
-			FolderHelper.knownFileTypes.add(st.nextElement());
+			FolderHelper.knownFileTypes.add(st.nextToken());
 		}
 	}
 	
diff --git a/src/main/java/org/olat/core/gui/control/generic/folder/FolderTreeModel.java b/src/main/java/org/olat/core/gui/control/generic/folder/FolderTreeModel.java
index 4d47e0787cc..1aa96326711 100644
--- a/src/main/java/org/olat/core/gui/control/generic/folder/FolderTreeModel.java
+++ b/src/main/java/org/olat/core/gui/control/generic/folder/FolderTreeModel.java
@@ -48,6 +48,8 @@ import org.olat.core.util.vfs.filters.VFSItemFilter;
  */
 public class FolderTreeModel extends GenericTreeModel {
 
+	private static final long serialVersionUID = 7930807550759664872L;
+	
 	private boolean foldersOnly = false;
 	private boolean selectableFiles = false;
 	private boolean selectableFolders = true;
@@ -96,19 +98,19 @@ public class FolderTreeModel extends GenericTreeModel {
 	}
 
 	private boolean buildTree(TreeNode tParent, VFSContainer parentContainer, String parentPath) {
-		List children = parentContainer.getItems(fileFilter);
+		List<VFSItem> children = parentContainer.getItems(fileFilter);
 		if (children.size() == 0) return false;
 
 		// sort the children
-		Collections.sort(children, new Comparator(){
+		Collections.sort(children, new Comparator<VFSItem>(){
 			final Collator c = collator;
-			public int compare(final Object o1, final Object o2) {
-				return c.compare(((VFSItem)o1).getName(), ((VFSItem)o2).getName());
+			public int compare(final VFSItem o1, final VFSItem o2) {
+				return c.compare(o1.getName(), o2.getName());
 			}});
 
 		boolean addedAtLeastOneChild = false;
-		for (Iterator iter = children.iterator(); iter.hasNext();) {
-			VFSItem child = (VFSItem) iter.next();
+		for (Iterator<VFSItem> iter = children.iterator(); iter.hasNext();) {
+			VFSItem child = iter.next();
 			String childName = child.getName();
 			if (child instanceof VFSContainer) {
 				// container node
-- 
GitLab