You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2016/08/11 06:12:30 UTC

svn commit: r1755907 [3/3] - in /openmeetings/application: branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/ branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/ branches/3.2.x/open...

Modified: openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/conference/whiteboard/base/baseDrawImage.lzx
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/conference/whiteboard/base/baseDrawImage.lzx?rev=1755907&r1=1755906&r2=1755907&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/conference/whiteboard/base/baseDrawImage.lzx (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/conference/whiteboard/base/baseDrawImage.lzx Thu Aug 11 06:12:30 2016
@@ -9,7 +9,7 @@
   with the License.  You may obtain a copy of the License at
   
       http://www.apache.org/licenses/LICENSE-2.0
-    	  
+  
   Unless required by applicable law or agreed to in writing,
   software distributed under the License is distributed on an
   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@@ -22,136 +22,110 @@
 
 <class name="baseDrawImage" extends="baseDrawLetter">
 	
-  	<!-- attribute shows if this image is loaded as part of a wml-file-object
+	<!-- attribute shows if this image is loaded as part of a wml-file-object
 		if true it will send a onwmlLoaderSend message and NO extra loading bar
 		if false it will show a loading abr for that image
 	-->
 	<attribute name="isWmlLoaderImage" value="false" type="boolean" />
-    
-    <!-- indicates if this client is still loading an old image for the screenViwer -->
-    <attribute name="isScreenImageLoading" value="false" type="boolean" />
-    <attribute name="screenImageRefNumber" value="1" type="number" />
-    <attribute name="screenImageRef1" value="null" />
-    <attribute name="screenImageRef2" value="null" />
-	
-    <event name="setNewScreenUserName" />
-  	
-  	<!-- invoked by clicking on the confirmation dialog after 
-  		clicking on an image in the Library -->
-  	<method name="addNewSyncImage" args="urlname,posx,posy,baseurl,fileName,moduleName,parentPath,room,domain">
-  		if ($debug) Debug.write("urlname: ",urlname);
-  		var now = new Date();
-  		//This invokes a Method which is in the remoteWhiteboard.lzx
-  		this.startNewObjectSyncProcess.isStarting = true;
-  		this.startNewObjectSyncProcess.uniqueObjectSyncName = fileName + now.getTime();
-  		this.startNewObjectSyncProcess.doCall();
-  		this.addNewImage(urlname,posx,posy,baseurl,fileName,
-  			moduleName,parentPath,room,domain,
-  			this.startNewObjectSyncProcess.uniqueObjectSyncName,false);
-  	</method>
-  	
-  	<!-- standard add Function -->
-  	<method name="addNewImage" args="urlname,posx,posy,baseurl,fileName,moduleName,parentPath,room,domain,uniqueObjectSyncName,isLocalSync">
-  		if ($debug) Debug.write("urlname posx: ",urlname,posx);
-  		this.addImageToLayer(this,'image'+this.getCounter(),urlname,
-  			posx,posy,0,0,
-  			true,
-  			baseurl,fileName,moduleName,parentPath,room,domain,uniqueObjectSyncName,isLocalSync);
-  	</method>
-  	
+	
+	<!-- indicates if this client is still loading an old image for the screenViwer -->
+	<attribute name="isScreenImageLoading" value="false" type="boolean" />
+	<attribute name="screenImageRefNumber" value="1" type="number" />
+	<attribute name="screenImageRef1" value="null" />
+	<attribute name="screenImageRef2" value="null" />
+	
+	<event name="setNewScreenUserName" />
+	
+	<!-- invoked by clicking on the confirmation dialog after 
+		clicking on an image in the Library -->
+	<method name="addNewSyncImage" args="urlname,posx,posy,baseurl,fileName,moduleName,parentPath,room,domain">
+		if ($debug) Debug.write("urlname: ",urlname);
+		var now = new Date();
+		//This invokes a Method which is in the remoteWhiteboard.lzx
+		this.startNewObjectSyncProcess.isStarting = true;
+		this.startNewObjectSyncProcess.uniqueObjectSyncName = fileName + now.getTime();
+		this.startNewObjectSyncProcess.doCall();
+		this.addNewImage(urlname,posx,posy,baseurl,fileName,
+			moduleName,parentPath,room,domain,
+			this.startNewObjectSyncProcess.uniqueObjectSyncName,false);
+	</method>
+	
+	<!-- standard add Function -->
+	<method name="addNewImage" args="urlname,posx,posy,baseurl,fileName,moduleName,parentPath,room,domain,uniqueObjectSyncName,isLocalSync">
+		if ($debug) Debug.write("urlname posx: ",urlname,posx);
+		this.addImageToLayer(this,'image'+this.getCounter(),urlname,
+			posx,posy,0,0,
+			true,
+			baseurl,fileName,moduleName,parentPath,room,domain,uniqueObjectSyncName,isLocalSync);
+	</method>
+	
 	<!--
 		alterModus => this is added by the mod not remotely
-		
 	 -->
-  	<method name="addImageToLayer" args="obj,nameing,urlname,posx,posy,width,height,alterModus,baseurl,fileName,moduleName,parentPath,room,domain,uniqueObjectSyncName,isLocalSync">
-        <![CDATA[
-            if ($debug) Debug.write("addImageToLayer ",urlname);
-        	
+	<method name="addImageToLayer" args="obj,nameing,urlname,posx,posy,width,height,alterModus,baseurl,fileName,moduleName,parentPath,room,domain,uniqueObjectSyncName,isLocalSync">
+		<![CDATA[
+			if ($debug) Debug.write("addImageToLayer ",urlname);
+			
 			var downloadurl = canvas.getUrl() + urlname + "?uid=" + canvas.publicSID;
-	  		if ($debug) Debug.write("addImageToLayer urlname : ", downloadurl);
+			if ($debug) Debug.write("addImageToLayer urlname : ", downloadurl);
 			if ($debug) Debug.write("alterModus: ",alterModus);
 			
-	  		this.currentlayer = new lz.imageForDrawView(obj,{
-	  			src: downloadurl,refObj:this,name:nameing,x:posx,y:posy,
-	  			remotewidth:width,remoteheight:height,
-	  			downloadurl:urlname,alterModus:alterModus,
-	  			baseurl:baseurl,fileName:fileName,moduleName:moduleName,
-	  			parentPath:parentPath,room:room,domain:domain,
-	  			uniqueObjectSyncName:uniqueObjectSyncName,
-	  			isLocalSync:isLocalSync});	
+			this.currentlayer = new lz.imageForDrawView(obj,{
+				src: downloadurl,refObj:this,name:nameing,x:posx,y:posy,
+				remotewidth:width,remoteheight:height,
+				downloadurl:urlname,alterModus:alterModus,
+				baseurl:baseurl,fileName:fileName,moduleName:moduleName,
+				parentPath:parentPath,room:room,domain:domain,
+				uniqueObjectSyncName:uniqueObjectSyncName,
+				isLocalSync:isLocalSync});	
 			
-			//Add Layer to global Layer  	
-		    return this.currentlayer;
+			//Add Layer to global Layer	
+			return this.currentlayer;
 		]]>
-  	</method>
-  	
-  	<!--
-  	    @deprecated
-  	 -->
-  	<method name="addImageToLayerRecorded" args="obj,nameing,urlname,posx,posy,width,height,alterModus,baseurl,fileName,moduleName,parentPath,room,domain">
-        <![CDATA[
-			//only show if it is not part of wml-file-object
-			if (!this.isWmlLoaderImage) {
-				this.loadimageDataWinRef = new lz.loadWhiteboardWindow(canvas.main_content._content.inner,{refObj:this});
-				this.loadimageDataWinRef.setMessage(canvas.getLabelName(this.imageLoadMessageId));
-			}
-			var src = baseurl+'?fileName='+fileName+'&moduleName='+moduleName+'&parentPath='+parentPath+'&room_id='+room+'&sid='+canvas.sessionId;
-	
-			this.currentlayer = new lz.imageForDrawView(obj,{
-				src:src,refObj:this,name:nameing,x:posx,y:posy,
-				downloadurl:urlname,remotewidth:width,remoteheight:height,
-				alterModus:alterModus,baseurl:baseurl,fileName:fileName,
-				moduleName:moduleName,parentPath:parentPath,
-				room:room,domain:domain,recorderModus:true});
+	</method>
 
-			this.parent.parent.isloadingImage.sendEvent(this.currentlayer);
-			//this.parent._loading.setAttribute('visible',true);
-			//Add Layer to global Layer  	
-		    return this.currentlayer;
-		]]>
-  	</method>
-  	
-  	<method name="incomingScreenSharing" args="value">
-        <![CDATA[
+
+	<method name="incomingScreenSharing" args="value">
+		<![CDATA[
 		//only do if last image has been loading successfully
-            if (!this.isScreenImageLoading){
-                this.isScreenImageLoading = true;
-                var downloadurl = canvas.getUrl() + 'ScreenViewHandler?'
-                    +'fileName='+encodeURIComponent(value.fileName)
-                    +'&room='+hib.currentroomid
-                    +'&domain='+hib.conferencedomain
-                    +'&sid='+canvas.sessionId;
-            
-                //Debug.write("incomingScreenSharing URL: ",downloadurl);
-                if (this.screenImageRefNumber==1){
-                    this.screenImageRef1 = new lz.imageForScreenViewer(this,{visible:false,src:downloadurl,refObj:this,name:'screen1',x:0,y:0,downloadurl:downloadurl});
-                    this.screenImageRefNumber = 2;
-                } else if (this.screenImageRefNumber==2){
-                    this.screenImageRef2 = new lz.imageForScreenViewer(this,{visible:false,src:downloadurl,refObj:this,name:'screen2',x:0,y:0,downloadurl:downloadurl});
-                    this.screenImageRefNumber = 1;
-                }
-                this.setNewScreenUserName.sendEvent('Screen of User: '+value.user.firstname+','+value.user.lastname);
-            } else {
-                //Debug.write("frame dropped!");
-                Debug.warn("frame dropped!");
-                (new lz.singletonErrorPopupHolder()).setError(canvas.getLabelName(240));
-            }
+			if (!this.isScreenImageLoading){
+				this.isScreenImageLoading = true;
+				var downloadurl = canvas.getUrl() + 'ScreenViewHandler?'
+					+'fileName='+encodeURIComponent(value.fileName)
+					+'&room='+hib.currentroomid
+					+'&domain='+hib.conferencedomain
+					+'&sid='+canvas.sessionId;
+			
+				//Debug.write("incomingScreenSharing URL: ",downloadurl);
+				if (this.screenImageRefNumber==1){
+					this.screenImageRef1 = new lz.imageForScreenViewer(this,{visible:false,src:downloadurl,refObj:this,name:'screen1',x:0,y:0,downloadurl:downloadurl});
+					this.screenImageRefNumber = 2;
+				} else if (this.screenImageRefNumber==2){
+					this.screenImageRef2 = new lz.imageForScreenViewer(this,{visible:false,src:downloadurl,refObj:this,name:'screen2',x:0,y:0,downloadurl:downloadurl});
+					this.screenImageRefNumber = 1;
+				}
+				this.setNewScreenUserName.sendEvent('Screen of User: '+value.user.firstname+','+value.user.lastname);
+			} else {
+				//Debug.write("frame dropped!");
+				Debug.warn("frame dropped!");
+				(new lz.singletonErrorPopupHolder()).setError(canvas.getLabelName(240));
+			}
 		]]>
-  	</method>   
-    
-    <!--
-    TODO: Make new Base Class including the Screen sharing Functions
-     -->
-    <method name="toggleVisibleScreenSharing">
-        if (this.screenImageRefNumber==1){
-            if (this.screenImageRef1) this.screenImageRef1.destroy();
-            this.screenImageRef2.setAttribute('visible',true);
-        } else if (this.screenImageRefNumber==2){
-            this.screenImageRef1.setAttribute('visible',true);
-            if (this.screenImageRef2) this.screenImageRef2.destroy();
-        }
-        this.isScreenImageLoading = false;
-    </method> 
+	</method>   
+	
+	<!--
+	TODO: Make new Base Class including the Screen sharing Functions
+	 -->
+	<method name="toggleVisibleScreenSharing">
+		if (this.screenImageRefNumber==1){
+			if (this.screenImageRef1) this.screenImageRef1.destroy();
+			this.screenImageRef2.setAttribute('visible',true);
+		} else if (this.screenImageRefNumber==2){
+			this.screenImageRef1.setAttribute('visible',true);
+			if (this.screenImageRef2) this.screenImageRef2.destroy();
+		}
+		this.isScreenImageLoading = false;
+	</method> 
 	
 	<!--
 		actionObject => attributes neccessary for loading image
@@ -163,48 +137,48 @@
 	<!-- method adds a new Image to the Layer,
 	but without making an Update-Event, 
 	Image added by remote host -->	
-  	<method name="addImageToLayerHistorySynced" args="actionObject,refObj">
-  		if ($debug) Debug.write("addImageToLayerHistory: ",actionObject,refObj);
-  		//start sync process using the remote uniqueObjectSyncName as identifier
-  		//This invokes a Method which is in the remoteWhiteboard.lzx
-  		this.startNewObjectSyncProcess.isStarting = false;
-  		this.startNewObjectSyncProcess.uniqueObjectSyncName = actionObject[8];
-  		this.startNewObjectSyncProcess.doCall();
-  		this.addImageToLayer(refObj,actionObject[actionObject.length-1],actionObject[1],
-		  		actionObject[actionObject.length-5],actionObject[actionObject.length-4],
-		  		actionObject[actionObject.length-3],actionObject[actionObject.length-2],
-		  		false,
-		  		actionObject[2],actionObject[3],actionObject[4],actionObject[5],
-		  		actionObject[6],actionObject[7],actionObject[8],false);
-		  		
-  		this.doSWFDocumentStatus(this.currentlayer,actionObject[actionObject.length-7]);
-  	</method>
-  			
-  	<!--- 
+	<method name="addImageToLayerHistorySynced" args="actionObject,refObj">
+		if ($debug) Debug.write("addImageToLayerHistory: ",actionObject,refObj);
+		//start sync process using the remote uniqueObjectSyncName as identifier
+		//This invokes a Method which is in the remoteWhiteboard.lzx
+		this.startNewObjectSyncProcess.isStarting = false;
+		this.startNewObjectSyncProcess.uniqueObjectSyncName = actionObject[8];
+		this.startNewObjectSyncProcess.doCall();
+		this.addImageToLayer(refObj,actionObject[actionObject.length-1],actionObject[1],
+				actionObject[actionObject.length-5],actionObject[actionObject.length-4],
+				actionObject[actionObject.length-3],actionObject[actionObject.length-2],
+				false,
+				actionObject[2],actionObject[3],actionObject[4],actionObject[5],
+				actionObject[6],actionObject[7],actionObject[8],false);
+				
+		this.doSWFDocumentStatus(this.currentlayer,actionObject[actionObject.length-7]);
+	</method>
+			
+	<!--- 
 		invoke by the initial Loading process in remoteWhiteboard.lzx, 
 		does not invoke any Update Handler
 		once this object is loaded, it will throw an Update event of kind
 		addImageToLayerHistoryToLocalLoaded		
-  	 -->
-  	<method name="addImageToLayerHistoryToLocal" args="actionObject,refObj">
-  		if ($debug) Debug.write("addImageToLayerHistoryToLocal: ",actionObject,refObj);
-  		this.addImageToLayer(refObj,actionObject[actionObject.length-1],actionObject[1],
-		  		actionObject[actionObject.length-5],actionObject[actionObject.length-4],
-		  		actionObject[actionObject.length-3],actionObject[actionObject.length-2],
-		  		false,
-		  		actionObject[2],actionObject[3],actionObject[4],actionObject[5],
-		  		actionObject[6],actionObject[7],actionObject[8],true);
-  	</method>
-  	
-  	<!-- 
-  		this handler is implemented also in remoteWhiteboard.lzx to sync a Local Object list
-  		but throws NO Update Event, cause its only needed Locally, the whole Sync Process
-  		has a different Sync-Object for Loading the complete Object List from the Sever.
-  		Each Object is loaded Locally, once all Objects are loaded the Complete-Event is broadcasted
-  		to the server, but every Item on the List is only controlled locally
-  	-->
-  	<handler name="addImageToLayerHistoryToLocalLoaded" args="objRef">
-  		if ($debug) Debug.write("addImageToLayerHistoryToLocal: ",objRef);
+	 -->
+	<method name="addImageToLayerHistoryToLocal" args="actionObject,refObj">
+		if ($debug) Debug.write("addImageToLayerHistoryToLocal: ",actionObject,refObj);
+		this.addImageToLayer(refObj,actionObject[actionObject.length-1],actionObject[1],
+				actionObject[actionObject.length-5],actionObject[actionObject.length-4],
+				actionObject[actionObject.length-3],actionObject[actionObject.length-2],
+				false,
+				actionObject[2],actionObject[3],actionObject[4],actionObject[5],
+				actionObject[6],actionObject[7],actionObject[8],true);
+	</method>
+	
+	<!-- 
+		this handler is implemented also in remoteWhiteboard.lzx to sync a Local Object list
+		but throws NO Update Event, cause its only needed Locally, the whole Sync Process
+		has a different Sync-Object for Loading the complete Object List from the Sever.
+		Each Object is loaded Locally, once all Objects are loaded the Complete-Event is broadcasted
+		to the server, but every Item on the List is only controlled locally
+	-->
+	<handler name="addImageToLayerHistoryToLocalLoaded" args="objRef">
+		if ($debug) Debug.write("addImageToLayerHistoryToLocal: ",objRef);
 		this.syncImageRefObj = objRef;
 		
 		this.registerNewImage(this.syncImageRefObj.src,
@@ -214,29 +188,15 @@
 			this.syncImageRefObj.moduleName,this.syncImageRefObj.parentPath,
 			this.syncImageRefObj.room,this.syncImageRefObj.domain,
 			false,this.syncImageRefObj.uniqueObjectSyncName,this.getSWFDocumentStatus(),
-                this.getZIndex());
-  	</handler>
-  	
-  	<!--- @keywords deprecated
-  	TODO: uniqueObjectSyncName missing
-  	 -->
-  	<method name="addImageToLayerHistoryRecorded" args="actionObject,refObj,isWmlLoader">
-		this.isWmlLoaderImage = isWmlLoader;
-  		this.addImageToLayerRecorded(refObj,
-  			actionObject[actionObject.length-1],actionObject[1],
-  			actionObject[actionObject.length-5],actionObject[actionObject.length-4],
-  			actionObject[actionObject.length-3],actionObject[actionObject.length-2],
-  			false,
-  			actionObject[2],actionObject[3],actionObject[4],actionObject[5],
-  			actionObject[6],actionObject[7]);
-  	</method>
-  	
-  	<method name="registerNewImage" args="urlname,posx,posy,width,height,baseurl,fileName,moduleName,parentPath,room,domain,doCallUpdate,uniqueObjectSyncName,swfObj,zIndex">
+				this.getZIndex());
+	</handler>
+
+	<method name="registerNewImage" args="urlname,posx,posy,width,height,baseurl,fileName,moduleName,parentPath,room,domain,doCallUpdate,uniqueObjectSyncName,swfObj,zIndex">
 		if ($debug) Debug.write("registerNewImage doCallUpdate: ",doCallUpdate);
 		if ($debug) Debug.write("registerNewImage swfObj: ",swfObj);
 		var actionObject = new Array();
-	    actionObject.push('image');
-	    actionObject.push(urlname);
+		actionObject.push('image');
+		actionObject.push(urlname);
 		actionObject.push(baseurl);
 		actionObject.push(fileName);
 		actionObject.push(moduleName);
@@ -247,15 +207,23 @@
 		actionObject.push(zIndex);//-8
 		actionObject.push(swfObj);//-7
 		actionObject.push(this.counter);//-6
-	    actionObject.push(posx);//-5
-	    actionObject.push(posy);//-4
-	    actionObject.push(width);//-3
-	    actionObject.push(height);//-2
-	    actionObject.push(this.currentlayer.name);//-1
-	    this.baseactionobjectList.push(actionObject);	
-	    this.checkStepLayers();
-	    if (doCallUpdate) this.onsharedMessage('draw',actionObject);	
-  	</method>
+		actionObject.push(posx);//-5
+		actionObject.push(posy);//-4
+		actionObject.push(width);//-3
+		actionObject.push(height);//-2
+		actionObject.push(this.currentlayer.name);//-1
+		this.checkStepLayers();
+		for (var i = this.baseactionobjectList.length - 1; i > -1; --i) {
+			var l = this.baseactionobjectList[i];
+			if (this.currentlayer.name == l[l.length - 1]) {
+				this.baseactionobjectList.splice(i, 1);
+				break;
+			}
+		}
+		this.baseactionobjectList.push(actionObject);
+		if ($debug) Debug.write(" :: -image- baseactionobjectList.push :: ", this.baseactionobjectList.length, this.baseactionobjectList);
+		if (doCallUpdate) this.onsharedMessage('draw',actionObject);	
+	</method>
 	
 	<!-- 
 		adds the Image to the Layers and throws a onsharedMessage,
@@ -277,13 +245,13 @@
 			this.syncImageRefObj.moduleName,this.syncImageRefObj.parentPath,
 			this.syncImageRefObj.room,this.syncImageRefObj.domain,
 			true,this.syncImageRefObj.uniqueObjectSyncName,this.getSWFDocumentStatus(),
-                this.getZIndex());		
+				this.getZIndex());		
 	
 	</method>
 	
 	<!--- @keywords deprecated
-  	TODO: check Recorder Modus
-  	 -->
+	TODO: check Recorder Modus
+	 -->
 	<method name="storeTempValsAndLoadSyncListRecording" args="objRef">
 		if ($debug) Debug.write("########### storeTempValsAndLoadSyncListRecording: ",objRef);
 		this.syncImageRefObj = objRef;
@@ -301,29 +269,29 @@
 			this.syncImageRefObj.moduleName,this.syncImageRefObj.parentPath,
 			this.syncImageRefObj.room,this.syncImageRefObj.domain,
 			false,this.syncImageRefObj.uniqueObjectSyncName,this.getSWFDocumentStatus(),
-                this.getZIndex());	
+				this.getZIndex());	
 		//This invokes a Method which is in the remoteWhiteboard.lzx
 		this.sendCompletedObjectSyncEvent.uniqueObjectSyncName = this.syncImageRefObj.uniqueObjectSyncName;
 		this.sendCompletedObjectSyncEvent.doCall();
 	</method>
-    
-    <!--- @keywords deprecated
-    TODO: Check recorder Modus
-     -->
-    <method name="doRegisterAfterLoadingOrRecording">
-    	if ($debug) Debug.write("########### doRegisterAfterLoadingOrRecording");
+	
+	<!--- @keywords deprecated
+	TODO: Check recorder Modus
+	 -->
+	<method name="doRegisterAfterLoadingOrRecording">
+		if ($debug) Debug.write("########### doRegisterAfterLoadingOrRecording");
 		this.imageSyncMessageText = canvas.getLabelName(this.imageSyncMessageId);
 		//now send notifications to connected clients
 		this.setAttribute('drawmodus','image');
 		this.registerNewImage(this.syncImageRefObj.src,
-		              this.syncImageRefObj.x,this.syncImageRefObj.y,
-		              this.syncImageRefObj.width,this.syncImageRefObj.height,
-		              this.syncImageRefObj.baseurl,this.syncImageRefObj.fileName,
-		              this.syncImageRefObj.moduleName,this.syncImageRefObj.parentPath,
-		              this.syncImageRefObj.room,this.syncImageRefObj.domain,
-		              false,this.syncImageRefObj.uniqueObjectSyncName,this.getSWFDocumentStatus(),
-                      this.getZIndex());		
-    </method>
+					  this.syncImageRefObj.x,this.syncImageRefObj.y,
+					  this.syncImageRefObj.width,this.syncImageRefObj.height,
+					  this.syncImageRefObj.baseurl,this.syncImageRefObj.fileName,
+					  this.syncImageRefObj.moduleName,this.syncImageRefObj.parentPath,
+					  this.syncImageRefObj.room,this.syncImageRefObj.domain,
+					  false,this.syncImageRefObj.uniqueObjectSyncName,this.getSWFDocumentStatus(),
+					  this.getZIndex());		
+	</method>
 	
 </class>
 

Modified: openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/conference/whiteboard/base/drawViewNew.lzx
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/conference/whiteboard/base/drawViewNew.lzx?rev=1755907&r1=1755906&r2=1755907&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/conference/whiteboard/base/drawViewNew.lzx (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/conference/whiteboard/base/drawViewNew.lzx Thu Aug 11 06:12:30 2016
@@ -53,7 +53,7 @@
 	        		parent.redrawRectItemByScaling(this);
 	        	} else if  (this.name.indexOf('ellipse')>=0) {
 	        		parent.redrawEllipseItemByScaling(this);
-	        	}	        	
+	        	}
 	        }
         ]]>
     </handler>
@@ -70,11 +70,11 @@
 	        		parent.redrawRectItemByScaling(this);
 	        	} else if  (this.name.indexOf('ellipse')>=0) {
 	        		parent.redrawEllipseItemByScaling(this);
-	        	}	
+	        	}
 	        }  	
-        ]]>   
+        ]]>
     </handler>
-    <!-- 
+    <!--
     <dragstate name="dragger" drag_axis="both"
 	    drag_min_x="0"
 	    drag_max_x="$once{parent.width - this.width}"

Modified: openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/conference/whiteboard/base/remoteWhiteboard.lzx
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/conference/whiteboard/base/remoteWhiteboard.lzx?rev=1755907&r1=1755906&r2=1755907&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/conference/whiteboard/base/remoteWhiteboard.lzx (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/conference/whiteboard/base/remoteWhiteboard.lzx Thu Aug 11 06:12:30 2016
@@ -222,7 +222,8 @@
 		if ($debug) Debug.write("[store actionObject] ",actionObject);
 		
 		this.baseactionobjectList.push(actionObject);
-			
+		if ($debug) Debug.write(" :: baseactionobjectList.push :: ", this.baseactionobjectList.length, this.baseactionobjectList);
+		
 	]]>
 	</method>
 	

Modified: openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/conference/whiteboard/base/whiteboardVideoPlayer.lzx
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/conference/whiteboard/base/whiteboardVideoPlayer.lzx?rev=1755907&r1=1755906&r2=1755907&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/conference/whiteboard/base/whiteboardVideoPlayer.lzx (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/conference/whiteboard/base/whiteboardVideoPlayer.lzx Thu Aug 11 06:12:30 2016
@@ -75,7 +75,7 @@
 				+ canvas.publicSID + '&preview=true';
 			parent._content._preview.imagePreview.setAttribute("src", downloadurl)
 			parent._content._preview.bringToFront();
-							
+
 			if (parent.sendInit) {
 				parent.parent.sendNewVideoRemote(parent);
 			}
@@ -120,7 +120,7 @@
 			this._content.playVideoStream(this.recordingName, 0);
 		}
 	]]>
-	</method>   
+	</method>
 	
 	<!---
 		calculates the new x, y, width and height of the video so that it is 100% 
@@ -170,34 +170,34 @@
 	
 	<method name="setDuration">
 	<![CDATA[
-	   if ($debug) Debug.write("setDuration ",this.deltaInSeconds);
-	   var tString = "";
-	   if (this.deltaInSeconds > 60) {
-		   var minutes = Math.floor(this.deltaInSeconds / 60);
-		   var restSeconds = Math.round(this.deltaInSeconds) - (minutes * 60);
-		   tString = minutes + " min " + restSeconds + " sec";
-	   } else {
-		   tString = Math.round(this.deltaInSeconds) + " sec";
-	   }
-	   this._progress._progressbar._duration.setAttribute("text",tString);
+		if ($debug) Debug.write("setDuration ",this.deltaInSeconds);
+		var tString = "";
+		if (this.deltaInSeconds > 60) {
+			var minutes = Math.floor(this.deltaInSeconds / 60);
+			var restSeconds = Math.round(this.deltaInSeconds) - (minutes * 60);
+			tString = minutes + " min " + restSeconds + " sec";
+		} else {
+			tString = Math.round(this.deltaInSeconds) + " sec";
+		}
+		this._progress._progressbar._duration.setAttribute("text",tString);
 	]]>
 	</method>
 	
 	<method name="calcProgressBar">
 	<![CDATA[
-	   if ($debug) Debug.write("calcProgressBar ",this.currentTime);
-	   this._progress._progressbar._pointer.setAttribute("visibility","visible");
-	   var tString = "";
-	   if (this.currentTime > 60) {
-	   	   var minutes = Math.floor(this.currentTime / 60);
-	   	   var restSeconds = Math.round(this.currentTime) - (minutes * 60);
-	   	   tString = minutes + " min " + restSeconds + " sec";
-	   } else {
-	   	   tString = Math.round(this.currentTime) + " sec";
-	   }
-	   var tNewX = Math.round((this._progress._progressbar.width / this.deltaInSeconds) * this.currentTime);
-	   this._progress._progressbar._time.setAttribute("text", tString);
-	   this._progress._progressbar._pointer.setAttribute("x", tNewX);
+		if ($debug) Debug.write("calcProgressBar ", this.currentTime);
+		this._progress._progressbar._pointer.setAttribute("visibility","visible");
+		var tString = "";
+		if (this.currentTime > 60) {
+				var minutes = Math.floor(this.currentTime / 60);
+				var restSeconds = Math.round(this.currentTime) - (minutes * 60);
+				tString = minutes + " min " + restSeconds + " sec";
+		} else {
+				tString = Math.round(this.currentTime) + " sec";
+		}
+		var tNewX = Math.round((this._progress._progressbar.width / this.deltaInSeconds) * this.currentTime);
+		this._progress._progressbar._time.setAttribute("text", tString);
+		this._progress._progressbar._pointer.setAttribute("x", tNewX);
 	]]>
 	</method> 
 	
@@ -214,7 +214,7 @@
 	
 	<method name="toggleStream">
 		if (canvas.ismoderator &amp;&amp; this.isPaused) {
-   			this.startStreamPlay();
+				this.startStreamPlay();
 		}
 	</method>
 	
@@ -223,7 +223,7 @@
 		<attribute name="timerDelegateStarted" value="false" type="boolean"/>
 		
 		<handler name="oninit">
-			this.timerDelegate = new LzDelegate( this, "calcProgressBar" );
+			this.timerDelegate = new LzDelegate(this, "calcProgressBar");
 		</handler>
 		
 		<method name="playVideoStream" args="streamName, delay">
@@ -253,11 +253,11 @@
 		</handler>
 		
 		<method name="calcProgressBar" args="tObjRef">
-			//if ($debug) Debug.write("calcProgressBar updateRecordingStreamTime",this._ns.time)
+			if ($debug) Debug.write("calcProgressBar:: updateRecordingStreamTime", this.timerDelegateStarted, this._ns.time)
 			parent.currentTime = this._ns.time;
 			parent.calcProgressBar();
 			if (this.timerDelegateStarted) {
-				lz.Timer.addTimer( this.timerDelegate , 1000 );
+				lz.Timer.addTimer(this.timerDelegate , 1000);
 			}
 		</method>
 		<view name="_preview" x="0" y="0" width="0" height="0" >
@@ -265,7 +265,7 @@
 			<handler name="onclick">
 				if ($debug) Debug.write("onclick -- toggleStream");
 				parent.parent.toggleStream();
-			</handler>		   
+			</handler>
 			<view width="60" height="40" valign="middle" opacity="0.7" align="center" bgcolor="0xFFFFFF">
 				<view resource="lz_recorder_play" valign="middle" align="center" />
 			</view>

Modified: openmeetings/application/branches/3.2.x/openmeetings-util/pom.xml
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-util/pom.xml?rev=1755907&r1=1755906&r2=1755907&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-util/pom.xml (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-util/pom.xml Thu Aug 11 06:12:30 2016
@@ -44,6 +44,24 @@
 			</plugin>
 		</plugins>
 	</build>
+	<profiles>
+		<profile>
+			<id>Jenkins</id>
+			<build>
+				<plugins>
+					<plugin>
+						<groupId>org.apache.maven.plugins</groupId>
+						<artifactId>maven-surefire-plugin</artifactId>
+						<configuration>
+							<excludes>
+								<exclude>**/TestStoredFile.java</exclude>
+							</excludes>
+						</configuration>
+					</plugin>
+				</plugins>
+			</build>
+		</profile>
+	</profiles>
 	<dependencies>
 		<dependency>
 			<groupId>org.red5</groupId>

Copied: openmeetings/application/branches/3.2.x/openmeetings-util/src/test/java/org/apache/openmeetings/util/TestStoredFile.java (from r1755906, openmeetings/application/branches/3.2.x/openmeetings-util/src/test/java/org/apache/openmeetings/util/crypt/TestStoredFile.java)
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-util/src/test/java/org/apache/openmeetings/util/TestStoredFile.java?p2=openmeetings/application/branches/3.2.x/openmeetings-util/src/test/java/org/apache/openmeetings/util/TestStoredFile.java&p1=openmeetings/application/branches/3.2.x/openmeetings-util/src/test/java/org/apache/openmeetings/util/crypt/TestStoredFile.java&r1=1755906&r2=1755907&rev=1755907&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-util/src/test/java/org/apache/openmeetings/util/crypt/TestStoredFile.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-util/src/test/java/org/apache/openmeetings/util/TestStoredFile.java Thu Aug 11 06:12:30 2016
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.openmeetings.util.crypt;
+package org.apache.openmeetings.util;
 
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.assertFalse;

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=1755907&r1=1755906&r2=1755907&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 Thu Aug 11 06:12:30 2016
@@ -225,7 +225,8 @@ public abstract class FileTreePanel exte
 	}
 
 	public void update(IPartialPageRequestHandler handler) {
-		handler.add(trees);
+		updateSizes();
+		handler.add(sizes, trees);
 	}
 
 	void updateNode(AjaxRequestTarget target, FileItem fi) {

Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java?rev=1755907&r1=1755906&r2=1755907&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java Thu Aug 11 06:12:30 2016
@@ -170,7 +170,7 @@ public class RoomPanel extends BasePanel
 			public void onDrop(AjaxRequestTarget target, Component component) {
 				Object o = component.getDefaultModelObject();
 				if (activeWbId > -1 && o instanceof FileItem) {
-					sendFileToWb((FileItem)o);
+					sendFileToWb((FileItem)o, false);
 				}
 			}
 		};
@@ -529,13 +529,13 @@ public class RoomPanel extends BasePanel
 		return publishingUser;
 	}
 
-	public void sendFileToWb(FileItem fi) {
+	public void sendFileToWb(FileItem fi, boolean clean) {
 		if (activeWbId > -1) {
 			if (fi.getType() == FileItem.Type.WmlFile) {
 				getBean(ConferenceLibrary.class).sendToWhiteboard(getClient().getUid(), activeWbId, fi);
 			} else {
 				String url = urlFor(new RoomResourceReference(), new PageParameters().add("id", fi.getId())).toString();
-				getBean(ScopeApplicationAdapter.class).sendToWhiteboard(getClient().getUid(), activeWbId, fi, url);
+				getBean(ScopeApplicationAdapter.class).sendToWhiteboard(getClient().getUid(), activeWbId, fi, url, clean);
 			}
 		}
 	}

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=1755907&r1=1755906&r2=1755907&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 Thu Aug 11 06:12:30 2016
@@ -18,6 +18,14 @@
  */
 package org.apache.openmeetings.web.room.sidebar;
 
+import static org.apache.openmeetings.util.OmFileHelper.getHumanSize;
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
+
+import org.apache.openmeetings.core.data.file.FileUtils;
+import org.apache.openmeetings.db.dao.file.FileExplorerItemDao;
+import org.apache.openmeetings.db.dao.record.RecordingDao;
+import org.apache.openmeetings.db.dto.record.RecordingContainerData;
 import org.apache.openmeetings.db.entity.file.FileItem;
 import org.apache.openmeetings.web.common.tree.FileTreePanel;
 import org.apache.openmeetings.web.room.RoomPanel;
@@ -36,14 +44,21 @@ public class RoomFilePanel extends FileT
 	
 	@Override
 	public void updateSizes() {
-		// TODO Auto-generated method stub
-		
+		FileExplorerItemDao dao = getBean(FileExplorerItemDao.class);
+		FileUtils utils = getBean(FileUtils.class);
+		RecordingContainerData sizeData = getBean(RecordingDao.class).getContainerData(getUserId());
+		long userSize = utils.getSize(dao.getByOwner(getUserId()));
+		long roomSize = utils.getSize(dao.getByRoom(room.getRoom().getId()));
+		if (sizeData != null) {
+			userSize += sizeData.getUserHomeSize();
+			roomSize += sizeData.getPublicFileSize();
+		}
+		homeSize.setObject(getHumanSize(userSize));
+		publicSize.setObject(getHumanSize(roomSize));
 	}
 	
 	@Override
 	protected void update(AjaxRequestTarget target, FileItem f) {
-		// TODO Auto-generated method stub
-		
 	}
 	
 	@Override

Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.html
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.html?rev=1755907&r1=1755906&r2=1755907&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.html (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.html Thu Aug 11 06:12:30 2016
@@ -31,7 +31,12 @@
 		</div>
 		<div wicket:id="feedback"></div>
 		<span wicket:id="progress">[progressbar]</span>
-		<div style="margin-top: 30px;"><input wicket:id="to-wb" type="checkbox"/><label wicket:for="to-wb"><wicket:message key="1312"/></label></div>
+		<div style="margin-top: 30px;">
+			<input wicket:id="to-wb" type="checkbox"/><label wicket:for="to-wb"><wicket:message key="1312"/></label>
+			<div style="margin-left: 30px;" wicket:id="clean-block">
+				<input wicket:id="clean-wb" type="checkbox"/><label wicket:for="clean-wb"><wicket:message key="62"/></label>
+			</div>
+		</div>
 	</form>
 	<form wicket:id="name-form">
 		<input type="hidden" wicket:id="name"/>

Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java?rev=1755907&r1=1755906&r2=1755907&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java Thu Aug 11 06:12:30 2016
@@ -35,12 +35,14 @@ import org.apache.openmeetings.web.room.
 import org.apache.openmeetings.web.util.BootstrapFileUploadBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.form.AjaxFormSubmitBehavior;
+import org.apache.wicket.ajax.form.OnChangeAjaxBehavior;
 import org.apache.wicket.behavior.AttributeAppender;
 import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
 import org.apache.wicket.extensions.ajax.markup.html.form.upload.UploadProgressBar;
 import org.apache.wicket.markup.head.IHeaderResponse;
 import org.apache.wicket.markup.head.JavaScriptHeaderItem;
 import org.apache.wicket.markup.head.PriorityHeaderItem;
+import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.form.CheckBox;
 import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.markup.html.form.HiddenField;
@@ -66,6 +68,8 @@ public class UploadDialog extends Abstra
 	private final FileUploadField uploadField;
 	private final HiddenField<String> fileName;
 	private final CheckBox toWb = new CheckBox("to-wb", Model.of(false));
+	private final WebMarkupContainer cleanBlock = new WebMarkupContainer("clean-block");
+	private final CheckBox cleanWb = new CheckBox("clean-wb", Model.of(false));
 	private final RoomFilePanel roomFiles;
 	private final RoomPanel room;
 
@@ -83,7 +87,16 @@ public class UploadDialog extends Abstra
 			}
 		};
 		cancel = new DialogButton("close", Application.getString(85));
-		form.add(feedback.setOutputMarkupId(true), toWb);
+		toWb.add(new OnChangeAjaxBehavior() {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			protected void onUpdate(AjaxRequestTarget target) {
+				target.add(cleanBlock.setVisible(toWb.getModelObject()));
+			}
+		});
+		form.add(feedback.setOutputMarkupId(true), toWb.setOutputMarkupId(true)
+				, cleanBlock.add(cleanWb.setOutputMarkupId(true)).setVisible(false).setOutputMarkupPlaceholderTag(true));
 	
 		form.setMultiPart(true);
 		form.setMaxSize(Bytes.bytes(getBean(ConfigurationDao.class).getMaxUploadSize()));
@@ -182,7 +195,7 @@ public class UploadDialog extends Abstra
 					error(result.getLogMessage());
 				} else {
 					if (toWb.getModelObject()) {
-						room.sendFileToWb(f);
+						room.sendFileToWb(f, cleanWb.getModelObject());
 					}
 					close(target, null);
 				}

Modified: openmeetings/application/branches/3.2.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java?rev=1755907&r1=1755906&r2=1755907&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java Thu Aug 11 06:12:30 2016
@@ -257,15 +257,6 @@ public class FileWebService {
 		}
 	}
 
-	private long getSize(List<FileExplorerItem> list) {
-		long size = 0;
-		for (FileExplorerItem f : list) {
-			log.debug("FileExplorerItem fList " + f.getName());
-			size += fileUtils.getSizeOfDirectoryAndSubs(f);
-		}
-		return size;
-	}
-	
 	/**
 	 * Get a File Explorer Object by a given Room
 	 * 
@@ -294,11 +285,11 @@ public class FileWebService {
 
 				// Home File List
 				List<FileExplorerItem> fList = fileDao.getByOwner(userId);
-				fileExplorerObject.setUser(fList, getSize(fList));
+				fileExplorerObject.setUser(fList, fileUtils.getSize(fList));
 
 				// Public File List
 				List<FileExplorerItem> rList = fileDao.getByRoom(roomId);
-				fileExplorerObject.setRoom(rList, getSize(rList));
+				fileExplorerObject.setRoom(rList, fileUtils.getSize(rList));
 
 				return fileExplorerObject;
 			} else {

Modified: openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/FlvExplorerConverter.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/FlvExplorerConverter.java?rev=1755907&r1=1755906&r2=1755907&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/FlvExplorerConverter.java (original)
+++ openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/FlvExplorerConverter.java Thu Aug 11 06:12:30 2016
@@ -42,6 +42,7 @@ import org.springframework.beans.factory
 
 public class FlvExplorerConverter extends BaseConverter {
 	private static final Logger log = Red5LoggerFactory.getLogger(FlvExplorerConverter.class, webAppRootKey);
+	private static final Pattern p = Pattern.compile("\\d{2,4}(x)\\d{2,4}");
 
 	// Spring loaded Beans
 	@Autowired
@@ -127,18 +128,14 @@ public class FlvExplorerConverter extend
 	}
 	
 	private static FlvDimension getFlvDimension(String txt) throws Exception {
-		Pattern p = Pattern.compile("\\d{2,4}(x)\\d{2,4}");
-		
 		Matcher matcher = p.matcher(txt);
 		
 		while (matcher.find()) {
 			String foundResolution = txt.substring(matcher.start(), matcher.end());
-			
 			String[] resultions = foundResolution.split("x");
-			
 			return new FlvDimension(Integer.valueOf(resultions[0]).intValue(), Integer.valueOf(resultions[1]).intValue());
 		}
 		
-		throw new Exception("Failed to get FLV dimension: " + txt);
+		return new FlvDimension(100, 100); // will return 100x100 for non-video to be able to play
 	}
 }

Modified: openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileUtils.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileUtils.java?rev=1755907&r1=1755906&r2=1755907&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileUtils.java (original)
+++ openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileUtils.java Thu Aug 11 06:12:30 2016
@@ -18,12 +18,15 @@
  */
 package org.apache.openmeetings.core.data.file;
 
+import static org.apache.openmeetings.util.OmFileHelper.MP4_EXTENSION;
+import static org.apache.openmeetings.util.OmFileHelper.JPG_EXTENSION;
 import static org.apache.openmeetings.util.OmFileHelper.thumbImagePrefix;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 
 import java.io.File;
 import java.text.SimpleDateFormat;
 import java.util.Date;
+import java.util.List;
 import java.util.Locale;
 
 import org.apache.openmeetings.db.dao.file.FileExplorerItemDao;
@@ -40,19 +43,28 @@ public class FileUtils {
 	@Autowired
 	private FileExplorerItemDao fileDao;
 
-	public long getSizeOfDirectoryAndSubs(FileExplorerItem file) {
+	public long getSize(List<FileExplorerItem> list) {
+		long size = 0;
+		for (FileExplorerItem f : list) {
+			log.debug("FileExplorerItem fList " + f.getName());
+			size += getSize(f);
+		}
+		return size;
+	}
+	
+	public long getSize(FileExplorerItem file) {
 		try {
 			long fileSize = 0;
 
 			File base = OmFileHelper.getUploadFilesDir();
 			if (Type.Image == file.getType()) {
-
-				File tFile = new File(base, file.getHash());
+				String fname = String.format("%s%s", file.getHash(), JPG_EXTENSION);
+				File tFile = new File(base, fname);
 				if (tFile.exists()) {
 					fileSize += tFile.length();
 				}
 
-				File thumbFile = new File(base, thumbImagePrefix + file.getHash());
+				File thumbFile = new File(base, thumbImagePrefix + fname);
 				if (thumbFile.exists()) {
 					fileSize += thumbFile.length();
 				}
@@ -66,10 +78,21 @@ public class FileUtils {
 				}
 			}
 
+			if (Type.Video == file.getType()) {
+				//FIXME TODO refactor
+				File video = new File(OmFileHelper.getStreamsHibernateDir(), "UPLOADFLV_" + file.getId() + MP4_EXTENSION);
+				if (video.exists()) {
+					fileSize += video.length();
+				}
+				File thumb = new File(OmFileHelper.getStreamsHibernateDir(), "UPLOADFLV_" + file.getId() + JPG_EXTENSION);
+				if (thumb.exists()) {
+					fileSize += thumb.length();
+				}
+			}
+
 			log.debug("calling [1] fileDao.update()");
-			fileDao.update(file);
 			for (FileExplorerItem child : fileDao.getByParent(file.getId())) {
-				fileSize += getSizeOfDirectoryAndSubs(child);
+				fileSize += getSize(child);
 			}
 
 			return fileSize;

Modified: openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteboardManager.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteboardManager.java?rev=1755907&r1=1755906&r2=1755907&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteboardManager.java (original)
+++ openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteboardManager.java Thu Aug 11 06:12:30 2016
@@ -23,7 +23,6 @@ import static org.apache.openmeetings.ut
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
-import java.util.concurrent.ConcurrentHashMap;
 
 import org.apache.openmeetings.db.dto.room.WhiteboardObject;
 import org.red5.logging.Red5LoggerFactory;
@@ -36,8 +35,8 @@ public class WhiteboardManager {
 	@Autowired
 	private WhiteBoardObjectListManagerById wbListManagerById;
 
-	@SuppressWarnings({ "rawtypes", "unchecked" })
-	public void addWhiteBoardObjectById(Long roomId, Map whiteboardObj, Long whiteBoardId) {
+	@SuppressWarnings("unchecked")
+	public void addWhiteBoardObjectById(Long roomId, Map<Integer, Object> whiteboardObj, Long whiteBoardId) {
 		try {
 			log.debug("addWhiteBoardObjectById: ", whiteboardObj);
 
@@ -46,7 +45,7 @@ public class WhiteboardManager {
 			log.debug("action: " + action);
 			log.debug("actionObject: " + whiteboardObj.get(3));
 
-			List actionObject = (List) whiteboardObj.get(3);
+			List<Object> actionObject = (List<Object>) whiteboardObj.get(3);
 
 			if (action.equals("moveMap")) {
 				WhiteboardObject whiteboardObject = wbListManagerById.getWhiteBoardObjectListByRoomIdAndWhiteboard(roomId, whiteBoardId);
@@ -65,64 +64,16 @@ public class WhiteboardManager {
 				if (!objectType.equals("pointerWhiteBoard")) {
 					String objectOID = actionObject.get(actionObject.size() - 1).toString();
 					log.debug("objectOID: " + objectOID);
-					whiteboardObject.getRoomItems().put(objectOID, actionObject);
+					whiteboardObject.add(objectOID, actionObject);
 					wbListManagerById.setWhiteBoardObjectListRoomObjAndWhiteboardId(roomId, whiteboardObject, whiteBoardId);
 				}
 			} else if (action.equals("clear")) {
 				WhiteboardObject whiteboardObject = wbListManagerById.getWhiteBoardObjectListByRoomIdAndWhiteboard(roomId, whiteBoardId);
-				whiteboardObject.setRoomItems(new ConcurrentHashMap<String, List>());
+				whiteboardObject.clear();
 				wbListManagerById.setWhiteBoardObjectListRoomObjAndWhiteboardId(roomId, whiteboardObject, whiteBoardId);
 			} else if (action.equals("delete") || action.equals("undo")) {
 				WhiteboardObject whiteboardObject = wbListManagerById.getWhiteBoardObjectListByRoomIdAndWhiteboard(roomId, whiteBoardId);
-				String objectOID = actionObject.get(actionObject.size() - 1).toString();
-				String objectType = actionObject.get(0).toString();
-				log.debug("removal of objectOID: " + objectOID);
-
-				log.debug("removal of objectOID: " + objectOID);
-
-				// Re-Index all items in its zIndex
-				if (objectType.equals("ellipse")
-						|| objectType.equals("drawarrow")
-						|| objectType.equals("line")
-						|| objectType.equals("paint")
-						|| objectType.equals("rectangle")
-						|| objectType.equals("uline")
-						|| objectType.equals("image")
-						|| objectType.equals("letter")
-						|| objectType.equals("clipart")
-						|| objectType.equals("swf")
-						|| objectType.equals("mindmapnode")
-						|| objectType.equals("flv")) {
-
-					Integer zIndex = Integer.valueOf(actionObject.get(actionObject.size() - 8).toString());
-
-					log.debug("1|zIndex " + zIndex);
-					log.debug("2|zIndex " + actionObject.get(actionObject.size() - 8).toString());
-					log.debug("3|zIndex " + actionObject.get(actionObject.size() - 8));
-
-					int l = 0;
-					for (Object o : actionObject) {
-						log.debug("4|zIndex " + l + " -- " + o);
-						l++;
-					}
-
-					for (Entry<String, List> e : whiteboardObject.getRoomItems().entrySet()) {
-						List actionObjectStored = e.getValue();
-
-						Integer zIndexStored = Integer.valueOf(actionObjectStored.get(actionObjectStored.size() - 8).toString());
-
-						log.debug("zIndexStored|zIndex " + zIndexStored + "|" + zIndex);
-
-						if (zIndexStored >= zIndex) {
-							zIndexStored -= 1;
-							log.debug("new-zIndex " + zIndexStored);
-						}
-						actionObjectStored.set(actionObjectStored.size() - 8, zIndexStored);
-
-						whiteboardObject.getRoomItems().put(e.getKey(), actionObjectStored);
-					}
-				}
-				whiteboardObject.getRoomItems().remove(objectOID);
+				whiteboardObject.remove(actionObject);
 
 				wbListManagerById.setWhiteBoardObjectListRoomObjAndWhiteboardId(roomId, whiteboardObject, whiteBoardId);
 			} else if (action.equals("size") || action.equals("editProp")
@@ -134,13 +85,11 @@ public class WhiteboardManager {
 				WhiteboardObject whiteboardObject = wbListManagerById.getWhiteBoardObjectListByRoomIdAndWhiteboard(roomId, whiteBoardId);
 				String objectOID = actionObject.get(actionObject.size() - 1).toString();
 				// List roomItem = roomList.get(objectOID);
-				List currentObject = whiteboardObject.getRoomItems().get(objectOID);
-				if (actionObject.get(0).equals("paint")) {
+				List<Object> currentObject = whiteboardObject.get(objectOID);
+				if ("paint".equals(actionObject.get(0))) {
 					actionObject.set(1, currentObject.get(1));
 				}
-				whiteboardObject.getRoomItems().put(objectOID, actionObject);
-
-				Map<String, List> roomList = whiteboardObject.getRoomItems();
+				whiteboardObject.add(objectOID, actionObject);
 
 				if (action.equals("swf")) {
 					log.debug("actionObject " + actionObject);
@@ -151,8 +100,8 @@ public class WhiteboardManager {
 
 							log.debug("updateObjectsToSlideNumber :: " + baseObjectName + "," + slidesNumber);
 
-							for (Entry<String, List> me : roomList.entrySet()) {
-								List actionObjectStored = me.getValue();
+							for (Entry<String, List<Object>> me : whiteboardObject.entrySet()) {
+								List<Object> actionObjectStored = me.getValue();
 
 								if (actionObjectStored.get(0).equals("ellipse")
 										|| actionObjectStored.get(0).equals("drawarrow")
@@ -164,7 +113,7 @@ public class WhiteboardManager {
 										|| actionObjectStored.get(0).equals("image")
 										|| actionObjectStored.get(0).equals("letter")) {
 
-									Map swfObj = (Map) actionObjectStored.get(actionObjectStored.size() - 7);
+									Map<String, Object> swfObj = (Map<String, Object>) actionObjectStored.get(actionObjectStored.size() - 7);
 									log.debug("swfObj :1: " + swfObj);
 
 									if (swfObj != null) {
@@ -185,10 +134,8 @@ public class WhiteboardManager {
 			} else if (action.equals("clearSlide")) {
 				WhiteboardObject whiteboardObject = wbListManagerById.getWhiteBoardObjectListByRoomIdAndWhiteboard(roomId, whiteBoardId);
 
-				Map roomList = whiteboardObject.getRoomItems();
-
-				for (String objectName : (List<String>) actionObject) {
-					roomList.remove(objectName);
+				for (Object objectName : actionObject) {
+					whiteboardObject.remove(objectName);
 				}
 
 				wbListManagerById.setWhiteBoardObjectListRoomObjAndWhiteboardId(roomId, whiteboardObject, whiteBoardId);

Modified: openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ConferenceLibrary.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ConferenceLibrary.java?rev=1755907&r1=1755906&r2=1755907&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ConferenceLibrary.java (original)
+++ openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ConferenceLibrary.java Thu Aug 11 06:12:30 2016
@@ -160,7 +160,7 @@ public class ConferenceLibrary implement
 
 		List<?> roomItems = LibraryWmlLoader.loadWmlFile(fi.getHash());
 
-		Map<Integer, String> wbClear = new HashMap<>();
+		Map<Integer, Object> wbClear = new HashMap<>();
 		wbClear.put(2, "clear");
 		wbClear.put(3, null);
 

Modified: openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java?rev=1755907&r1=1755906&r2=1755907&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java (original)
+++ openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java Thu Aug 11 06:12:30 2016
@@ -1406,7 +1406,7 @@ public class ScopeApplicationAdapter ext
 				, fuid // uniquObjectSyncName //17
 				, fi.getName() // standardFileName //18
 				, true // fullFit //19 FIXME TODO
-				, 1 // zIndex //-8 FIXME TODO
+				, 0 // zIndex //-8
 				, null //-7
 				, 0 // this.counter //-6 FIXME TODO
 				, 0 // posx //-5
@@ -1427,7 +1427,7 @@ public class ScopeApplicationAdapter ext
 				, false // 3: false //playRemote
 				, size.x // 4: 416
 				, size.y // 5: 240
-				, 1 // 6: 1 // z-index 
+				, 0 // 6: 1 // z-index 
 				, null // 7: null //TODO 
 				, 0 // 8: 0 //TODO // counter
 				, 0 // 9: 0 //TODO // x
@@ -1438,7 +1438,7 @@ public class ScopeApplicationAdapter ext
 				);
 	}
 	
-	public void sendToWhiteboard(String uid, Long wbId, FileItem fi, String url) {
+	public void sendToWhiteboard(String uid, Long wbId, FileItem fi, String url, boolean clean) {
 		ClientSessionInfo csi = sessionManager.getClientByPublicSIDAnyServer(uid);
 		if (csi == null) {
 			log.warn("No client was found to send Wml:: {}", uid);
@@ -1459,6 +1459,13 @@ public class ScopeApplicationAdapter ext
 				break;
 			default:
 		}
+		if (clean) {
+			Map<Integer, Object> wbClear = new HashMap<>();
+			wbClear.put(2, "clear");
+			wbClear.put(3, null);
+
+			sendToScope(client.getRoomId(), "sendVarsToWhiteboardById", new Object[] { wbClear });
+		}
 		sendToWhiteboard(client, Arrays.asList("whiteboard", new Date(), "draw", wbObject), wbId);
 	}
 	

Modified: openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/WhiteboardObject.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/WhiteboardObject.java?rev=1755907&r1=1755906&r2=1755907&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/WhiteboardObject.java (original)
+++ openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/WhiteboardObject.java Thu Aug 11 06:12:30 2016
@@ -18,21 +18,28 @@
  */
 package org.apache.openmeetings.db.dto.room;
 
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 
-public class WhiteboardObject {
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
 
+public class WhiteboardObject {
+	private static final Logger log = Red5LoggerFactory.getLogger(WhiteboardObject.class, webAppRootKey);
 	private long whiteBoardId;
 	private Integer x = 0;
 	private Integer y = 0;
 	private Integer zoom = 100;
 	private Boolean fullFit = true;
-	@SuppressWarnings("rawtypes")
-	private Map<String, List> roomItems = new ConcurrentHashMap<>();
+	private Map<String, List<Object>> roomItems = new ConcurrentHashMap<>();
 	private Date created = new Date();
+	private int zIndex = 1;
 
 	public WhiteboardObject() {}
 	
@@ -60,16 +67,6 @@ public class WhiteboardObject {
 		this.y = y;
 	}
 
-	@SuppressWarnings("rawtypes")
-	public Map<String, List> getRoomItems() {
-		return roomItems;
-	}
-
-	@SuppressWarnings("rawtypes")
-	public void setRoomItems(Map<String, List> roomItems) {
-		this.roomItems = roomItems;
-	}
-
 	public Date getCreated() {
 		return created;
 	}
@@ -94,4 +91,81 @@ public class WhiteboardObject {
 		this.fullFit = fullFit;
 	}
 
+	public void clear() {
+		roomItems.clear();
+		zIndex = 1;
+	}
+
+	public void add(String oid, List<Object> actionObject) {
+		Object type = actionObject.size() > 0 ? actionObject.get(0) : "";
+		if (actionObject.size() > 8 && ("swf".equals(type) || "image".equals(type) || "flv".equals(type))) {
+			Integer zInd = (Integer)actionObject.get(actionObject.size() - 8);
+			if (zInd == null || zInd == 0 || zInd < zIndex) {
+				actionObject.set(actionObject.size() - 8, zIndex++);
+			}
+		}
+		roomItems.put(oid, actionObject);
+	}
+
+	public List<Object> get(String oid) {
+		return roomItems.get(oid);
+	}
+
+	public Set<Entry<String, List<Object>>> entrySet() {
+		return roomItems.entrySet();
+	}
+
+	public void remove(Object oid) {
+		roomItems.remove(oid);
+	}
+
+	public void remove(List<Object> actionObject) {
+		String oid = actionObject.get(actionObject.size() - 1).toString();
+		String type = actionObject.get(0).toString();
+		log.debug("Removal of object: oid = {}, type = {} ", oid, type);
+
+		/* I believe this is redundant
+		// Re-Index all items in its zIndex
+		if (type.equals("ellipse")
+				|| type.equals("drawarrow")
+				|| type.equals("line")
+				|| type.equals("paint")
+				|| type.equals("rectangle")
+				|| type.equals("uline")
+				|| type.equals("image")
+				|| type.equals("letter")
+				|| type.equals("clipart")
+				|| type.equals("swf")
+				|| type.equals("mindmapnode")
+				|| type.equals("flv")) {
+
+			Integer zIndex = Integer.valueOf(actionObject.get(actionObject.size() - 8).toString());
+
+			log.debug("1|zIndex " + zIndex);
+			log.debug("2|zIndex " + actionObject.get(actionObject.size() - 8).toString());
+			log.debug("3|zIndex " + actionObject.get(actionObject.size() - 8));
+
+			int l = 0;
+			for (Object o : actionObject) {
+				log.debug("4|zIndex " + l + " -- " + o);
+				l++;
+			}
+
+			for (Entry<String, List<Object>> e : roomItems.entrySet()) {
+				List<Object> actionObjectStored = e.getValue();
+
+				Integer zIndexStored = Integer.valueOf(actionObjectStored.get(actionObjectStored.size() - 8).toString());
+
+				log.debug("zIndexStored|zIndex " + zIndexStored + "|" + zIndex);
+
+				if (zIndexStored >= zIndex) {
+					zIndexStored -= 1;
+					log.debug("new-zIndex " + zIndexStored);
+				}
+				actionObjectStored.set(actionObjectStored.size() - 8, zIndexStored);
+			}
+		}
+		*/
+		roomItems.remove(oid);
+	}
 }

Modified: openmeetings/application/trunk/openmeetings-util/pom.xml
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-util/pom.xml?rev=1755907&r1=1755906&r2=1755907&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-util/pom.xml (original)
+++ openmeetings/application/trunk/openmeetings-util/pom.xml Thu Aug 11 06:12:30 2016
@@ -44,6 +44,24 @@
 			</plugin>
 		</plugins>
 	</build>
+	<profiles>
+		<profile>
+			<id>Jenkins</id>
+			<build>
+				<plugins>
+					<plugin>
+						<groupId>org.apache.maven.plugins</groupId>
+						<artifactId>maven-surefire-plugin</artifactId>
+						<configuration>
+							<excludes>
+								<exclude>**/TestStoredFile.java</exclude>
+							</excludes>
+						</configuration>
+					</plugin>
+				</plugins>
+			</build>
+		</profile>
+	</profiles>
 	<dependencies>
 		<dependency>
 			<groupId>org.red5</groupId>

Copied: openmeetings/application/trunk/openmeetings-util/src/test/java/org/apache/openmeetings/util/TestStoredFile.java (from r1755906, openmeetings/application/trunk/openmeetings-util/src/test/java/org/apache/openmeetings/util/crypt/TestStoredFile.java)
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-util/src/test/java/org/apache/openmeetings/util/TestStoredFile.java?p2=openmeetings/application/trunk/openmeetings-util/src/test/java/org/apache/openmeetings/util/TestStoredFile.java&p1=openmeetings/application/trunk/openmeetings-util/src/test/java/org/apache/openmeetings/util/crypt/TestStoredFile.java&r1=1755906&r2=1755907&rev=1755907&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-util/src/test/java/org/apache/openmeetings/util/crypt/TestStoredFile.java (original)
+++ openmeetings/application/trunk/openmeetings-util/src/test/java/org/apache/openmeetings/util/TestStoredFile.java Thu Aug 11 06:12:30 2016
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.openmeetings.util.crypt;
+package org.apache.openmeetings.util;
 
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.assertFalse;

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=1755907&r1=1755906&r2=1755907&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 Thu Aug 11 06:12:30 2016
@@ -225,7 +225,8 @@ public abstract class FileTreePanel exte
 	}
 
 	public void update(IPartialPageRequestHandler handler) {
-		handler.add(trees);
+		updateSizes();
+		handler.add(sizes, trees);
 	}
 
 	void updateNode(AjaxRequestTarget target, FileItem fi) {

Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java?rev=1755907&r1=1755906&r2=1755907&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java Thu Aug 11 06:12:30 2016
@@ -172,7 +172,7 @@ public class RoomPanel extends BasePanel
 			public void onDrop(AjaxRequestTarget target, Component component) {
 				Object o = component.getDefaultModelObject();
 				if (activeWbId > -1 && o instanceof FileItem) {
-					sendFileToWb((FileItem)o);
+					sendFileToWb((FileItem)o, false);
 				}
 			}
 		};
@@ -544,13 +544,13 @@ public class RoomPanel extends BasePanel
 		return publishingUser;
 	}
 
-	public void sendFileToWb(FileItem fi) {
+	public void sendFileToWb(FileItem fi, boolean clean) {
 		if (activeWbId > -1) {
 			if (fi.getType() == FileItem.Type.WmlFile) {
 				getBean(ConferenceLibrary.class).sendToWhiteboard(getClient().getUid(), activeWbId, fi);
 			} else {
 				String url = urlFor(new RoomResourceReference(), new PageParameters().add("id", fi.getId())).toString();
-				getBean(ScopeApplicationAdapter.class).sendToWhiteboard(getClient().getUid(), activeWbId, fi, url);
+				getBean(ScopeApplicationAdapter.class).sendToWhiteboard(getClient().getUid(), activeWbId, fi, url, clean);
 			}
 		}
 	}

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=1755907&r1=1755906&r2=1755907&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 Thu Aug 11 06:12:30 2016
@@ -18,6 +18,14 @@
  */
 package org.apache.openmeetings.web.room.sidebar;
 
+import static org.apache.openmeetings.util.OmFileHelper.getHumanSize;
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
+
+import org.apache.openmeetings.core.data.file.FileUtils;
+import org.apache.openmeetings.db.dao.file.FileExplorerItemDao;
+import org.apache.openmeetings.db.dao.record.RecordingDao;
+import org.apache.openmeetings.db.dto.record.RecordingContainerData;
 import org.apache.openmeetings.db.entity.file.FileItem;
 import org.apache.openmeetings.web.common.tree.FileTreePanel;
 import org.apache.openmeetings.web.room.RoomPanel;
@@ -36,14 +44,21 @@ public class RoomFilePanel extends FileT
 	
 	@Override
 	public void updateSizes() {
-		// TODO Auto-generated method stub
-		
+		FileExplorerItemDao dao = getBean(FileExplorerItemDao.class);
+		FileUtils utils = getBean(FileUtils.class);
+		RecordingContainerData sizeData = getBean(RecordingDao.class).getContainerData(getUserId());
+		long userSize = utils.getSize(dao.getByOwner(getUserId()));
+		long roomSize = utils.getSize(dao.getByRoom(room.getRoom().getId()));
+		if (sizeData != null) {
+			userSize += sizeData.getUserHomeSize();
+			roomSize += sizeData.getPublicFileSize();
+		}
+		homeSize.setObject(getHumanSize(userSize));
+		publicSize.setObject(getHumanSize(roomSize));
 	}
 	
 	@Override
 	protected void update(AjaxRequestTarget target, FileItem f) {
-		// TODO Auto-generated method stub
-		
 	}
 	
 	@Override

Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.html
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.html?rev=1755907&r1=1755906&r2=1755907&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.html (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.html Thu Aug 11 06:12:30 2016
@@ -31,7 +31,12 @@
 		</div>
 		<div wicket:id="feedback"></div>
 		<span wicket:id="progress">[progressbar]</span>
-		<div style="margin-top: 30px;"><input wicket:id="to-wb" type="checkbox"/><label wicket:for="to-wb"><wicket:message key="1312"/></label></div>
+		<div style="margin-top: 30px;">
+			<input wicket:id="to-wb" type="checkbox"/><label wicket:for="to-wb"><wicket:message key="1312"/></label>
+			<div style="margin-left: 30px;" wicket:id="clean-block">
+				<input wicket:id="clean-wb" type="checkbox"/><label wicket:for="clean-wb"><wicket:message key="62"/></label>
+			</div>
+		</div>
 	</form>
 	<form wicket:id="name-form">
 		<input type="hidden" wicket:id="name"/>

Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java?rev=1755907&r1=1755906&r2=1755907&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java Thu Aug 11 06:12:30 2016
@@ -35,12 +35,14 @@ import org.apache.openmeetings.web.room.
 import org.apache.openmeetings.web.util.BootstrapFileUploadBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.form.AjaxFormSubmitBehavior;
+import org.apache.wicket.ajax.form.OnChangeAjaxBehavior;
 import org.apache.wicket.behavior.AttributeAppender;
 import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
 import org.apache.wicket.extensions.ajax.markup.html.form.upload.UploadProgressBar;
 import org.apache.wicket.markup.head.IHeaderResponse;
 import org.apache.wicket.markup.head.JavaScriptHeaderItem;
 import org.apache.wicket.markup.head.PriorityHeaderItem;
+import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.form.CheckBox;
 import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.markup.html.form.HiddenField;
@@ -66,6 +68,8 @@ public class UploadDialog extends Abstra
 	private final FileUploadField uploadField;
 	private final HiddenField<String> fileName;
 	private final CheckBox toWb = new CheckBox("to-wb", Model.of(false));
+	private final WebMarkupContainer cleanBlock = new WebMarkupContainer("clean-block");
+	private final CheckBox cleanWb = new CheckBox("clean-wb", Model.of(false));
 	private final RoomFilePanel roomFiles;
 	private final RoomPanel room;
 
@@ -83,7 +87,16 @@ public class UploadDialog extends Abstra
 			}
 		};
 		cancel = new DialogButton("close", Application.getString(85));
-		form.add(feedback.setOutputMarkupId(true), toWb);
+		toWb.add(new OnChangeAjaxBehavior() {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			protected void onUpdate(AjaxRequestTarget target) {
+				target.add(cleanBlock.setVisible(toWb.getModelObject()));
+			}
+		});
+		form.add(feedback.setOutputMarkupId(true), toWb.setOutputMarkupId(true)
+				, cleanBlock.add(cleanWb.setOutputMarkupId(true)).setVisible(false).setOutputMarkupPlaceholderTag(true));
 	
 		form.setMultiPart(true);
 		form.setMaxSize(Bytes.bytes(getBean(ConfigurationDao.class).getMaxUploadSize()));
@@ -182,7 +195,7 @@ public class UploadDialog extends Abstra
 					error(result.getLogMessage());
 				} else {
 					if (toWb.getModelObject()) {
-						room.sendFileToWb(f);
+						room.sendFileToWb(f, cleanWb.getModelObject());
 					}
 					close(target, null);
 				}