From 1657eaedc95c4c7c2d215a7afd0b0a2eff922ddf Mon Sep 17 00:00:00 2001
From: dfurrer <none@none>
Date: Thu, 14 Apr 2016 09:24:57 +0200
Subject: [PATCH] non-jira

---
 .../nodes/video/VideoEditController.java      |  8 ++--
 .../nodes/video/VideoPeekviewController.java  |  2 +-
 .../nodes/video/VideoRunController.java       |  6 +--
 .../org/olat/modules/video/VideoModule.java   |  1 +
 .../modules/video/_spring/videoContext.xml    |  2 +-
 .../{managers => manager}/MediaMapper.java    |  2 +-
 .../{managers => manager}/VideoManager.java   |  2 +-
 .../VideoManagerImpl.java                     |  2 +-
 .../video/models/VideoQualityVersion.java     | 11 ++++++
 .../video/service/HandbrakeTranscoder.java    |  4 +-
 .../video/service/TranscoderService.java      | 15 ++------
 .../video/ui/VideoDisplayController.java      | 17 ++++++---
 .../ui/VideoMetaDataEditFormController.java   |  2 +-
 .../video/ui/VideoPosterEditController.java   |  4 +-
 .../video/ui/VideoPosterSelectionForm.java    |  4 +-
 .../video/ui/VideoPosterUploadForm.java       |  5 +++
 .../ui/VideoQualityTableFormController.java   | 37 +++++++++++++++----
 .../video/ui/VideoRuntimeController.java      |  5 ---
 .../video/ui/VideoSettingsController.java     |  2 +-
 .../video/ui/VideoTrackEditController.java    |  2 +-
 .../repository/handlers/VideoHandler.java     |  4 +-
 21 files changed, 83 insertions(+), 54 deletions(-)
 rename src/main/java/org/olat/modules/video/{managers => manager}/MediaMapper.java (95%)
 rename src/main/java/org/olat/modules/video/{managers => manager}/VideoManager.java (98%)
 rename src/main/java/org/olat/modules/video/{managers => manager}/VideoManagerImpl.java (99%)

diff --git a/src/main/java/org/olat/course/nodes/video/VideoEditController.java b/src/main/java/org/olat/course/nodes/video/VideoEditController.java
index feffe2b50d1..cbde9381656 100644
--- a/src/main/java/org/olat/course/nodes/video/VideoEditController.java
+++ b/src/main/java/org/olat/course/nodes/video/VideoEditController.java
@@ -37,7 +37,7 @@ import org.olat.course.nodes.VideoCourseNode;
 import org.olat.course.run.userview.UserCourseEnvironment;
 import org.olat.fileresource.types.VideoFileResource;
 import org.olat.modules.ModuleConfiguration;
-import org.olat.modules.video.managers.VideoManager;
+import org.olat.modules.video.manager.VideoManager;
 import org.olat.modules.video.ui.VideoDisplayController;
 import org.olat.repository.RepositoryEntry;
 import org.olat.repository.RepositoryManager;
@@ -171,13 +171,13 @@ public class VideoEditController  extends ActivateableTabbableDefaultController
 			switch(config.getStringValue(VideoEditController.CONFIG_KEY_DESCRIPTION_SELECT)){
 
 			case "resourceDescription":
-					previewController = new VideoDisplayController(ureq, getWindowControl(), re, config.getBooleanSafe(VideoEditController.CONFIG_KEY_AUTOPLAY), config.getBooleanSafe(VideoEditController.CONFIG_KEY_COMMENTS), config.getBooleanSafe(VideoEditController.CONFIG_KEY_RATING), "", false, "");
+					previewController = new VideoDisplayController(ureq, getWindowControl(), re, config.getBooleanSafe(VideoEditController.CONFIG_KEY_AUTOPLAY), config.getBooleanSafe(VideoEditController.CONFIG_KEY_COMMENTS), config.getBooleanSafe(VideoEditController.CONFIG_KEY_RATING), "", false,false, "");
 					break;
 			case "customDescription":
-					previewController = new VideoDisplayController(ureq, getWindowControl(), re, config.getBooleanSafe(VideoEditController.CONFIG_KEY_AUTOPLAY), config.getBooleanSafe(VideoEditController.CONFIG_KEY_COMMENTS), config.getBooleanSafe(VideoEditController.CONFIG_KEY_RATING), "", true, config.getStringValue(VideoEditController.CONFIG_KEY_DESCRIPTION_CUSTOMTEXT));
+					previewController = new VideoDisplayController(ureq, getWindowControl(), re, config.getBooleanSafe(VideoEditController.CONFIG_KEY_AUTOPLAY), config.getBooleanSafe(VideoEditController.CONFIG_KEY_COMMENTS), config.getBooleanSafe(VideoEditController.CONFIG_KEY_RATING), "", true,false, config.getStringValue(VideoEditController.CONFIG_KEY_DESCRIPTION_CUSTOMTEXT));
 					break;
 			case "none":
-					previewController = new VideoDisplayController(ureq, getWindowControl(), re, config.getBooleanSafe(VideoEditController.CONFIG_KEY_AUTOPLAY), config.getBooleanSafe(VideoEditController.CONFIG_KEY_COMMENTS), config.getBooleanSafe(VideoEditController.CONFIG_KEY_RATING), "", true, "");
+					previewController = new VideoDisplayController(ureq, getWindowControl(), re, config.getBooleanSafe(VideoEditController.CONFIG_KEY_AUTOPLAY), config.getBooleanSafe(VideoEditController.CONFIG_KEY_COMMENTS), config.getBooleanSafe(VideoEditController.CONFIG_KEY_RATING), "", true,false, "");
 					break;
 			}
 			cmc = new CloseableModalController(
diff --git a/src/main/java/org/olat/course/nodes/video/VideoPeekviewController.java b/src/main/java/org/olat/course/nodes/video/VideoPeekviewController.java
index baacc298b7b..e8e00a8ea53 100644
--- a/src/main/java/org/olat/course/nodes/video/VideoPeekviewController.java
+++ b/src/main/java/org/olat/course/nodes/video/VideoPeekviewController.java
@@ -8,7 +8,7 @@ import org.olat.core.gui.control.Event;
 import org.olat.core.gui.control.WindowControl;
 import org.olat.core.gui.control.controller.BasicController;
 import org.olat.core.util.vfs.VFSContainer;
-import org.olat.modules.video.managers.MediaMapper;
+import org.olat.modules.video.manager.MediaMapper;
 
 public class VideoPeekviewController  extends BasicController implements Controller{
 
diff --git a/src/main/java/org/olat/course/nodes/video/VideoRunController.java b/src/main/java/org/olat/course/nodes/video/VideoRunController.java
index cc65bb9d790..2ad8eda1b72 100644
--- a/src/main/java/org/olat/course/nodes/video/VideoRunController.java
+++ b/src/main/java/org/olat/course/nodes/video/VideoRunController.java
@@ -121,13 +121,13 @@ public class VideoRunController extends BasicController {
 		}
 		switch(config.getStringValue(VideoEditController.CONFIG_KEY_DESCRIPTION_SELECT,"none")){
 		case "resourceDescription":
-				videoDispCtr = new VideoDisplayController(ureq, getWindowControl(), videoNode.getReferencedRepositoryEntry(), config.getBooleanSafe(VideoEditController.CONFIG_KEY_AUTOPLAY), config.getBooleanSafe(VideoEditController.CONFIG_KEY_COMMENTS), config.getBooleanSafe(VideoEditController.CONFIG_KEY_RATING), videoNode.getIdent(), false, "");
+				videoDispCtr = new VideoDisplayController(ureq, getWindowControl(), videoNode.getReferencedRepositoryEntry(), config.getBooleanSafe(VideoEditController.CONFIG_KEY_AUTOPLAY), config.getBooleanSafe(VideoEditController.CONFIG_KEY_COMMENTS), config.getBooleanSafe(VideoEditController.CONFIG_KEY_RATING), videoNode.getIdent(), false, false, "");
 				break;
 		case "customDescription":
-				videoDispCtr = new VideoDisplayController(ureq, getWindowControl(), videoNode.getReferencedRepositoryEntry(), config.getBooleanSafe(VideoEditController.CONFIG_KEY_AUTOPLAY), config.getBooleanSafe(VideoEditController.CONFIG_KEY_COMMENTS), config.getBooleanSafe(VideoEditController.CONFIG_KEY_RATING), videoNode.getIdent(), true, config.getStringValue(VideoEditController.CONFIG_KEY_DESCRIPTION_CUSTOMTEXT));
+				videoDispCtr = new VideoDisplayController(ureq, getWindowControl(), videoNode.getReferencedRepositoryEntry(), config.getBooleanSafe(VideoEditController.CONFIG_KEY_AUTOPLAY), config.getBooleanSafe(VideoEditController.CONFIG_KEY_COMMENTS), config.getBooleanSafe(VideoEditController.CONFIG_KEY_RATING), videoNode.getIdent(), true, false, config.getStringValue(VideoEditController.CONFIG_KEY_DESCRIPTION_CUSTOMTEXT));
 				break;
 		case "none":
-				videoDispCtr = new VideoDisplayController(ureq, getWindowControl(), videoNode.getReferencedRepositoryEntry(), config.getBooleanSafe(VideoEditController.CONFIG_KEY_AUTOPLAY), config.getBooleanSafe(VideoEditController.CONFIG_KEY_COMMENTS), config.getBooleanSafe(VideoEditController.CONFIG_KEY_RATING), videoNode.getIdent(), true, "");
+				videoDispCtr = new VideoDisplayController(ureq, getWindowControl(), videoNode.getReferencedRepositoryEntry(), config.getBooleanSafe(VideoEditController.CONFIG_KEY_AUTOPLAY), config.getBooleanSafe(VideoEditController.CONFIG_KEY_COMMENTS), config.getBooleanSafe(VideoEditController.CONFIG_KEY_RATING), videoNode.getIdent(), true, false, "");
 				break;
 		}
 		
diff --git a/src/main/java/org/olat/modules/video/VideoModule.java b/src/main/java/org/olat/modules/video/VideoModule.java
index 15095212ae9..ffba77cee21 100644
--- a/src/main/java/org/olat/modules/video/VideoModule.java
+++ b/src/main/java/org/olat/modules/video/VideoModule.java
@@ -27,6 +27,7 @@ import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
 /**
+ *
  * Initial date: 23.2.2016<br>
  * @author dfakae, dirk.furrer@frentix.com, http://www.frentix.com
  *
diff --git a/src/main/java/org/olat/modules/video/_spring/videoContext.xml b/src/main/java/org/olat/modules/video/_spring/videoContext.xml
index ea8badeec03..0e8381d63c0 100644
--- a/src/main/java/org/olat/modules/video/_spring/videoContext.xml
+++ b/src/main/java/org/olat/modules/video/_spring/videoContext.xml
@@ -5,7 +5,7 @@
   http://www.springframework.org/schema/beans
   http://www.springframework.org/schema/beans/spring-beans.xsd">
 
-<bean id="videoManager" class="org.olat.modules.video.managers.VideoManagerImpl">
+<bean id="videoManager" class="org.olat.modules.video.manager.VideoManagerImpl">
 </bean>
 
 <bean id="transcodingService" class="org.olat.modules.video.service.TranscoderService">
diff --git a/src/main/java/org/olat/modules/video/managers/MediaMapper.java b/src/main/java/org/olat/modules/video/manager/MediaMapper.java
similarity index 95%
rename from src/main/java/org/olat/modules/video/managers/MediaMapper.java
rename to src/main/java/org/olat/modules/video/manager/MediaMapper.java
index aeb285412fd..a5ff9222635 100644
--- a/src/main/java/org/olat/modules/video/managers/MediaMapper.java
+++ b/src/main/java/org/olat/modules/video/manager/MediaMapper.java
@@ -1,4 +1,4 @@
-package org.olat.modules.video.managers;
+package org.olat.modules.video.manager;
 
 import javax.servlet.http.HttpServletRequest;
 
diff --git a/src/main/java/org/olat/modules/video/managers/VideoManager.java b/src/main/java/org/olat/modules/video/manager/VideoManager.java
similarity index 98%
rename from src/main/java/org/olat/modules/video/managers/VideoManager.java
rename to src/main/java/org/olat/modules/video/manager/VideoManager.java
index 918b0d94fd1..bc2575fcefb 100644
--- a/src/main/java/org/olat/modules/video/managers/VideoManager.java
+++ b/src/main/java/org/olat/modules/video/manager/VideoManager.java
@@ -17,7 +17,7 @@
  * frentix GmbH, http://www.frentix.com
  * <p>
  */
-package org.olat.modules.video.managers;
+package org.olat.modules.video.manager;
 
 import java.io.File;
 import java.io.IOException;
diff --git a/src/main/java/org/olat/modules/video/managers/VideoManagerImpl.java b/src/main/java/org/olat/modules/video/manager/VideoManagerImpl.java
similarity index 99%
rename from src/main/java/org/olat/modules/video/managers/VideoManagerImpl.java
rename to src/main/java/org/olat/modules/video/manager/VideoManagerImpl.java
index 8d51498daa8..ce64b5fed63 100644
--- a/src/main/java/org/olat/modules/video/managers/VideoManagerImpl.java
+++ b/src/main/java/org/olat/modules/video/manager/VideoManagerImpl.java
@@ -1,4 +1,4 @@
-package org.olat.modules.video.managers;
+package org.olat.modules.video.manager;
 
 import java.awt.image.BufferedImage;
 import java.io.File;
diff --git a/src/main/java/org/olat/modules/video/models/VideoQualityVersion.java b/src/main/java/org/olat/modules/video/models/VideoQualityVersion.java
index 15740f4b6dc..af619fe8c9d 100644
--- a/src/main/java/org/olat/modules/video/models/VideoQualityVersion.java
+++ b/src/main/java/org/olat/modules/video/models/VideoQualityVersion.java
@@ -1,9 +1,12 @@
 package org.olat.modules.video.models;
 
+import java.io.File;
+
 import org.olat.core.commons.services.image.Size;
 
 public class VideoQualityVersion{
 	// Properties
+	File file;
 	String type;
 	String fileSize;
 	Size dimension;
@@ -56,4 +59,12 @@ public class VideoQualityVersion{
 	public void setIsTransforming(boolean isTranscoding) {
 		this.isTransforming = isTranscoding;
 	}
+	
+	public File getFile(){
+		return file;
+	}
+	
+	public void setFile(File file){
+		this.file = file;
+	}
 }
\ No newline at end of file
diff --git a/src/main/java/org/olat/modules/video/service/HandbrakeTranscoder.java b/src/main/java/org/olat/modules/video/service/HandbrakeTranscoder.java
index b6a3d94692b..f61c7e54f8b 100644
--- a/src/main/java/org/olat/modules/video/service/HandbrakeTranscoder.java
+++ b/src/main/java/org/olat/modules/video/service/HandbrakeTranscoder.java
@@ -8,7 +8,7 @@ import org.olat.core.CoreSpringFactory;
 import org.olat.core.logging.OLog;
 import org.olat.core.logging.Tracing;
 import org.olat.fileresource.FileResourceManager;
-import org.olat.modules.video.managers.VideoManager;
+import org.olat.modules.video.manager.VideoManager;
 import org.olat.resource.OLATResource;
 
 public class HandbrakeTranscoder implements Transcoder {
@@ -37,7 +37,6 @@ public class HandbrakeTranscoder implements Transcoder {
 		pb.redirectErrorStream(true);
 		pb.inheritIO();
 
-
 		 try {
 				logger.info("+--------------------------HANDBRAKE STARTS TRANSCODING------------------------------------+");
 	            Runtime.getRuntime().exec("HandBrakeCLI "+" -i "+file.getAbsolutePath()+" -o "+optimizedFolder.getAbsolutePath()+"/optimized_"+file.getName()+" --optimize"+" --preset Normal");
@@ -49,7 +48,6 @@ public class HandbrakeTranscoder implements Transcoder {
 	     }
 	}
 
-
 	private boolean transcodeVideoRessourceLow(OLATResource video) {
 		// TODO Auto-generated method stub
 		return false;
diff --git a/src/main/java/org/olat/modules/video/service/TranscoderService.java b/src/main/java/org/olat/modules/video/service/TranscoderService.java
index fcefed9019b..ecc58ea10a8 100644
--- a/src/main/java/org/olat/modules/video/service/TranscoderService.java
+++ b/src/main/java/org/olat/modules/video/service/TranscoderService.java
@@ -1,7 +1,6 @@
 package org.olat.modules.video.service;
 
-import java.util.ServiceLoader;
-
+import org.olat.core.CoreSpringFactory;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
@@ -12,24 +11,16 @@ public class TranscoderService{
 	private static String transcodingProvider;
 
     private static TranscoderService service;
-    private static ServiceLoader<Transcoder> loader;
 
     private TranscoderService() {
-    		loader = ServiceLoader.load(Transcoder.class);
     }
 
     public static synchronized TranscoderService getInstance() {
         if (service == null) {
-            service = new TranscoderService();
+            service =  CoreSpringFactory.getImpl(TranscoderService.class);
         }
         return service;
     }
     
-//    public static Transcoder getTrascoder(){
-//    	
-//        for (Transcoder transcoder : loader) {
-//        	return transcoder;
-//        }
-//        
-//    }
+
 }
diff --git a/src/main/java/org/olat/modules/video/ui/VideoDisplayController.java b/src/main/java/org/olat/modules/video/ui/VideoDisplayController.java
index b58135da6f7..0bde5202259 100644
--- a/src/main/java/org/olat/modules/video/ui/VideoDisplayController.java
+++ b/src/main/java/org/olat/modules/video/ui/VideoDisplayController.java
@@ -43,8 +43,8 @@ import org.olat.core.util.vfs.VFSContainer;
 import org.olat.core.util.vfs.VFSItem;
 import org.olat.core.util.vfs.VFSLeaf;
 import org.olat.fileresource.FileResourceManager;
-import org.olat.modules.video.managers.MediaMapper;
-import org.olat.modules.video.managers.VideoManager;
+import org.olat.modules.video.manager.MediaMapper;
+import org.olat.modules.video.manager.VideoManager;
 import org.olat.repository.RepositoryEntry;
 import org.olat.resource.OLATResource;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -65,11 +65,15 @@ public class VideoDisplayController extends BasicController {
 	public static final Event ENDED_EVENT = new Event("videoEnded");
 
 
+	public VideoDisplayController(UserRequest ureq, WindowControl wControl, RepositoryEntry entry, boolean autoWidth) {
+		this(ureq, wControl, entry, false, false, false, null, false, autoWidth, null);
+	}
+	
 	public VideoDisplayController(UserRequest ureq, WindowControl wControl, RepositoryEntry entry) {
-		this(ureq, wControl, entry, false, false, false, null, false, null);
+		this(ureq, wControl, entry, false, false, false, null, false, false, null);
 	}
 
-	public VideoDisplayController(UserRequest ureq, WindowControl wControl, RepositoryEntry entry, Boolean autoplay, Boolean showComments, Boolean showRating, String OresSubPath, boolean customDescription, String descriptionText) {
+	public VideoDisplayController(UserRequest ureq, WindowControl wControl, RepositoryEntry entry, Boolean autoplay, Boolean showComments, Boolean showRating, String OresSubPath, boolean customDescription, boolean autoWidth, String descriptionText) {
 		super(ureq, wControl);
 
 		mainVC = createVelocityContainer("video_run");
@@ -96,7 +100,10 @@ public class VideoDisplayController extends BasicController {
 			mainVC.contextPut("movie", filename);
 			mainVC.contextPut("mediaUrl", mediaUrl);
 			Size realSize = movieService.getSize(video, extension);
-			if(realSize != null) {
+			if(autoWidth){
+				mainVC.contextPut("height", 480);
+				mainVC.contextPut("width", "100%");
+			} else if(realSize != null) {
 				mainVC.contextPut("height", realSize.getHeight());
 				mainVC.contextPut("width", realSize.getWidth());
 			} else {
diff --git a/src/main/java/org/olat/modules/video/ui/VideoMetaDataEditFormController.java b/src/main/java/org/olat/modules/video/ui/VideoMetaDataEditFormController.java
index ec0a40d5cd7..0141476929f 100644
--- a/src/main/java/org/olat/modules/video/ui/VideoMetaDataEditFormController.java
+++ b/src/main/java/org/olat/modules/video/ui/VideoMetaDataEditFormController.java
@@ -12,7 +12,7 @@ import org.olat.core.gui.components.form.flexible.elements.StaticTextElement;
 import org.olat.core.gui.components.form.flexible.impl.FormBasicController;
 import org.olat.core.gui.control.Controller;
 import org.olat.core.gui.control.WindowControl;
-import org.olat.modules.video.managers.VideoManager;
+import org.olat.modules.video.manager.VideoManager;
 import org.olat.resource.OLATResource;
 import org.springframework.beans.factory.annotation.Autowired;
 
diff --git a/src/main/java/org/olat/modules/video/ui/VideoPosterEditController.java b/src/main/java/org/olat/modules/video/ui/VideoPosterEditController.java
index fb32293e5b0..248fe5b132c 100644
--- a/src/main/java/org/olat/modules/video/ui/VideoPosterEditController.java
+++ b/src/main/java/org/olat/modules/video/ui/VideoPosterEditController.java
@@ -17,8 +17,8 @@ import org.olat.core.helpers.Settings;
 import org.olat.core.util.vfs.VFSContainer;
 import org.olat.core.util.vfs.VFSLeaf;
 import org.olat.fileresource.FileResourceManager;
-import org.olat.modules.video.managers.MediaMapper;
-import org.olat.modules.video.managers.VideoManager;
+import org.olat.modules.video.manager.MediaMapper;
+import org.olat.modules.video.manager.VideoManager;
 import org.olat.resource.OLATResource;
 import org.springframework.beans.factory.annotation.Autowired;
 
diff --git a/src/main/java/org/olat/modules/video/ui/VideoPosterSelectionForm.java b/src/main/java/org/olat/modules/video/ui/VideoPosterSelectionForm.java
index 167d3135cf1..d53c92ed8ef 100644
--- a/src/main/java/org/olat/modules/video/ui/VideoPosterSelectionForm.java
+++ b/src/main/java/org/olat/modules/video/ui/VideoPosterSelectionForm.java
@@ -27,8 +27,8 @@ import org.olat.core.util.vfs.VFSContainer;
 import org.olat.core.util.vfs.VFSLeaf;
 import org.olat.core.util.vfs.VFSManager;
 import org.olat.fileresource.FileResourceManager;
-import org.olat.modules.video.managers.MediaMapper;
-import org.olat.modules.video.managers.VideoManager;
+import org.olat.modules.video.manager.MediaMapper;
+import org.olat.modules.video.manager.VideoManager;
 import org.olat.resource.OLATResource;
 
 public class VideoPosterSelectionForm extends BasicController {
diff --git a/src/main/java/org/olat/modules/video/ui/VideoPosterUploadForm.java b/src/main/java/org/olat/modules/video/ui/VideoPosterUploadForm.java
index e6452a2dd77..2c9ede1dd63 100644
--- a/src/main/java/org/olat/modules/video/ui/VideoPosterUploadForm.java
+++ b/src/main/java/org/olat/modules/video/ui/VideoPosterUploadForm.java
@@ -18,6 +18,11 @@ import org.olat.core.util.vfs.VFSContainer;
 import org.olat.core.util.vfs.VFSManager;
 import org.olat.fileresource.FileResourceManager;
 import org.olat.resource.OLATResource;
+/**
+ * Videoposter upload form for create a 
+ * @author dfakae
+ *
+ */
 
 public class VideoPosterUploadForm extends FormBasicController {
 	private OLATResource videoResource;
diff --git a/src/main/java/org/olat/modules/video/ui/VideoQualityTableFormController.java b/src/main/java/org/olat/modules/video/ui/VideoQualityTableFormController.java
index 16bfed07885..c9e1b4d2159 100644
--- a/src/main/java/org/olat/modules/video/ui/VideoQualityTableFormController.java
+++ b/src/main/java/org/olat/modules/video/ui/VideoQualityTableFormController.java
@@ -6,10 +6,12 @@ import java.util.List;
 import org.apache.commons.io.FileUtils;
 import org.olat.core.commons.services.image.Size;
 import org.olat.core.gui.UserRequest;
+import org.olat.core.gui.components.form.flexible.FormItem;
 import org.olat.core.gui.components.form.flexible.FormItemContainer;
 import org.olat.core.gui.components.form.flexible.elements.FlexiTableElement;
 import org.olat.core.gui.components.form.flexible.elements.FormLink;
 import org.olat.core.gui.components.form.flexible.impl.FormBasicController;
+import org.olat.core.gui.components.form.flexible.impl.FormEvent;
 import org.olat.core.gui.components.form.flexible.impl.FormLayoutContainer;
 import org.olat.core.gui.components.form.flexible.impl.elements.table.DefaultFlexiColumnModel;
 import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableColumnModel;
@@ -17,27 +19,37 @@ import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTable
 import org.olat.core.gui.components.link.Link;
 import org.olat.core.gui.control.Controller;
 import org.olat.core.gui.control.WindowControl;
-import org.olat.modules.video.managers.VideoManager;
+import org.olat.core.gui.control.generic.closablewrapper.CloseableModalController;
+import org.olat.modules.video.manager.VideoManager;
 import org.olat.modules.video.models.VideoQualityTableModel;
-import org.olat.modules.video.models.VideoQualityVersion;
 import org.olat.modules.video.models.VideoQualityTableModel.QualityTableCols;
+import org.olat.modules.video.models.VideoQualityVersion;
+import org.olat.repository.RepositoryEntry;
 import org.olat.resource.OLATResource;
 import org.springframework.beans.factory.annotation.Autowired;
 
-
+/**
+ * table to show the different available qualityversions of a video ressource 
+ * @author Dirk Furrer
+ *
+ */
 public class VideoQualityTableFormController extends FormBasicController {
 
 	private FlexiTableElement tableEl;
 	private VideoQualityTableModel tableModel;
+	private FormLink viewButton;
+	private CloseableModalController cmc;
 
 	@Autowired
 	private VideoManager videoManager;
 	private OLATResource videoResource;
+	private RepositoryEntry videoEntry;
 
 
-	public VideoQualityTableFormController(UserRequest ureq, WindowControl wControl, OLATResource videoResource) {
+	public VideoQualityTableFormController(UserRequest ureq, WindowControl wControl, RepositoryEntry videoEntry) {
 		super(ureq, wControl, LAYOUT_VERTICAL);
-		this.videoResource = videoResource;
+		this.videoResource = videoEntry.getOlatResource();
+		this.videoEntry = videoEntry;
 		initForm(ureq);
 	}
 
@@ -58,15 +70,14 @@ public class VideoQualityTableFormController extends FormBasicController {
 		tableModel = new VideoQualityTableModel(columnsModel, getTranslator());
 
 		List<QualityTableRow> rows = new ArrayList<QualityTableRow>();
-
 		Size origSize = videoManager.getVideoSize(videoResource);
-
-		FormLink viewButton = uifactory.addFormLink("view", "viewQuality", "quality.view", "qulaity.view", null, Link.LINK);
 		
+		viewButton = uifactory.addFormLink("view", "viewQuality", "quality.view", "qulaity.view", null, Link.LINK);
 		rows.add(new QualityTableRow("original", origSize.getWidth() +"x"+ origSize.getHeight(),  FileUtils.byteCountToDisplaySize(videoManager.getVideoFile(videoResource).length()), "mp4",viewButton));
 		
 		List<VideoQualityVersion> versions = videoManager.getQualityVersions(videoResource);
 		for(VideoQualityVersion version:versions){
+			viewButton = uifactory.addFormLink(version.getType(), "viewQuality", "quality.view", "qulaity.view", null, Link.LINK);
 			rows.add(new QualityTableRow(version.getType(), version.getDimension().getWidth() +"x"+ version.getDimension().getHeight(),  version.getFileSize(), version.getFormat(),viewButton));
 		}
 		
@@ -74,6 +85,16 @@ public class VideoQualityTableFormController extends FormBasicController {
 		tableEl = uifactory.addTableElement(getWindowControl(), "qualities", tableModel, getTranslator(), generalCont);
 		tableEl.setCustomizeColumns(false);
 	}
+	
+	@Override
+	protected void formInnerEvent(UserRequest ureq, FormItem source, FormEvent event) {
+		if(source == viewButton){
+			
+			VideoDisplayController videoDispController = new VideoDisplayController(ureq, getWindowControl(), videoEntry, true);
+			cmc = new CloseableModalController(getWindowControl(), "close", videoDispController.getInitialComponent());
+			cmc.activate();
+		}
+	}
 
 	@Override
 	protected void formOK(UserRequest ureq) {
diff --git a/src/main/java/org/olat/modules/video/ui/VideoRuntimeController.java b/src/main/java/org/olat/modules/video/ui/VideoRuntimeController.java
index b3f6ff5bef0..2452b229e64 100644
--- a/src/main/java/org/olat/modules/video/ui/VideoRuntimeController.java
+++ b/src/main/java/org/olat/modules/video/ui/VideoRuntimeController.java
@@ -28,11 +28,9 @@ import org.olat.core.gui.components.link.LinkFactory;
 import org.olat.core.gui.control.Controller;
 import org.olat.core.gui.control.Event;
 import org.olat.core.gui.control.WindowControl;
-import org.olat.modules.video.managers.VideoManager;
 import org.olat.repository.RepositoryEntry;
 import org.olat.repository.model.RepositoryEntrySecurity;
 import org.olat.repository.ui.RepositoryEntryRuntimeController;
-import org.springframework.beans.factory.annotation.Autowired;
 
 /**
  *
@@ -46,9 +44,6 @@ public class VideoRuntimeController extends RepositoryEntryRuntimeController {
 
 	private Link settingsLink;
 
-	@Autowired
-	private VideoManager videoManager;
-
 	public VideoRuntimeController(UserRequest ureq, WindowControl wControl,
 			RepositoryEntry re, RepositoryEntrySecurity reSecurity, RuntimeControllerCreator runtimeControllerCreator) {
 		super(ureq, wControl, re, reSecurity, runtimeControllerCreator);
diff --git a/src/main/java/org/olat/modules/video/ui/VideoSettingsController.java b/src/main/java/org/olat/modules/video/ui/VideoSettingsController.java
index 9a90b3ec685..249d69a4037 100644
--- a/src/main/java/org/olat/modules/video/ui/VideoSettingsController.java
+++ b/src/main/java/org/olat/modules/video/ui/VideoSettingsController.java
@@ -101,7 +101,7 @@ public class VideoSettingsController extends BasicController {
 
 	private void doOpenQualityConfig(UserRequest ureq) {
 		if(qualityEditController == null) {
-			qualityEditController = new VideoQualityTableFormController(ureq, getWindowControl(), entry.getOlatResource());
+			qualityEditController = new VideoQualityTableFormController(ureq, getWindowControl(), entry);
 		}
 		mainVC.put("segmentCmp", qualityEditController.getInitialComponent());
 	}
diff --git a/src/main/java/org/olat/modules/video/ui/VideoTrackEditController.java b/src/main/java/org/olat/modules/video/ui/VideoTrackEditController.java
index 01b309d883d..0cf711f67d0 100644
--- a/src/main/java/org/olat/modules/video/ui/VideoTrackEditController.java
+++ b/src/main/java/org/olat/modules/video/ui/VideoTrackEditController.java
@@ -23,7 +23,7 @@ import org.olat.core.gui.control.Event;
 import org.olat.core.gui.control.WindowControl;
 import org.olat.core.gui.control.generic.closablewrapper.CloseableModalController;
 import org.olat.core.util.vfs.VFSLeaf;
-import org.olat.modules.video.managers.VideoManager;
+import org.olat.modules.video.manager.VideoManager;
 import org.olat.modules.video.models.VideoTracksTableModel;
 import org.olat.modules.video.models.VideoTracksTableModel.TrackTableCols;
 import org.olat.resource.OLATResource;
diff --git a/src/main/java/org/olat/repository/handlers/VideoHandler.java b/src/main/java/org/olat/repository/handlers/VideoHandler.java
index e887c2275a0..d210de184b8 100644
--- a/src/main/java/org/olat/repository/handlers/VideoHandler.java
+++ b/src/main/java/org/olat/repository/handlers/VideoHandler.java
@@ -60,7 +60,7 @@ import org.olat.fileresource.types.FileResource;
 import org.olat.fileresource.types.ResourceEvaluation;
 import org.olat.fileresource.types.VideoFileResource;
 import org.olat.modules.video.VideoModule;
-import org.olat.modules.video.managers.VideoManager;
+import org.olat.modules.video.manager.VideoManager;
 import org.olat.modules.video.models.VideoMetadata;
 import org.olat.modules.video.ui.VideoDisplayController;
 import org.olat.modules.video.ui.VideoRuntimeController;
@@ -74,7 +74,7 @@ import org.olat.resource.OLATResourceManager;
 import org.springframework.beans.factory.annotation.Autowired;
 
 
-/**
+/** 
  * Initial Date:  Mar 27, 2015
  *
  * @author Dirk Furrer
-- 
GitLab