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

yishayw pushed a commit to branch file_proxy_refactor
in repository https://gitbox.apache.org/repos/asf/royale-asjs.git


The following commit(s) were added to refs/heads/file_proxy_refactor by this 
push:
     new 8d71548  Refactor of FileProxy so that it doesn't rely on FileModel 
and uses IFileModel implementers instead.
8d71548 is described below

commit 8d715488150d0909d20d6acdd470800ee2c36dc5
Author: DESKTOP-RH4S838\Yishay <[email protected]>
AuthorDate: Sat Jul 20 11:52:19 2019 +0300

    Refactor of FileProxy so that it doesn't rely on FileModel and uses
    IFileModel implementers instead.
---
 .../royale/org/apache/royale/file/FileProxy.as     | 32 ++++++++++++++++++++++
 .../royale/org/apache/royale/file/IFileModel.as    | 24 ++++++++++++++++
 .../org/apache/royale/file/beads/FileBrowser.as    |  9 ++++--
 .../org/apache/royale/file/beads/FileLoader.as     |  2 +-
 .../org/apache/royale/file/beads/FileModel.as      | 28 +++++++++++--------
 5 files changed, 81 insertions(+), 14 deletions(-)

diff --git 
a/frameworks/projects/Network/src/main/royale/org/apache/royale/file/FileProxy.as
 
b/frameworks/projects/Network/src/main/royale/org/apache/royale/file/FileProxy.as
index a9b74f8..4179ae9 100644
--- 
a/frameworks/projects/Network/src/main/royale/org/apache/royale/file/FileProxy.as
+++ 
b/frameworks/projects/Network/src/main/royale/org/apache/royale/file/FileProxy.as
@@ -21,6 +21,11 @@ package org.apache.royale.file
        import org.apache.royale.core.IDocument;
        import org.apache.royale.core.Strand;
        import org.apache.royale.utils.BinaryData;
+
+       COMPILE::SWF
+       {
+               import flash.net.FileReference;
+       }
        
        /**
         *  Indicates that the model has changed
@@ -103,5 +108,32 @@ package org.apache.royale.file
                        (model as IFileModel).fileContent = value;
                }
                
+               /**
+                *  @copy org.apache.royale.file.IFileModel#fileReference
+                */
+               COMPILE::SWF
+               public function get fileReference():FileReference
+               {
+                       return (model as IFileModel).fileReference;
+               }
+
+               COMPILE::JS
+               public function get fileReference():File
+               {
+                       return (model as IFileModel).fileReference;
+               }
+               
+               COMPILE::SWF
+               public function set fileReference(value:FileReference):void
+               {
+                       (model as IFileModel).fileReference = value;
+               }
+
+               COMPILE::JS
+               public function set fileReference(value:File):void
+               {
+                       (model as IFileModel).fileReference = value;
+               }
+               
        }
 }
diff --git 
a/frameworks/projects/Network/src/main/royale/org/apache/royale/file/IFileModel.as
 
b/frameworks/projects/Network/src/main/royale/org/apache/royale/file/IFileModel.as
index 365e20f..ba17788 100644
--- 
a/frameworks/projects/Network/src/main/royale/org/apache/royale/file/IFileModel.as
+++ 
b/frameworks/projects/Network/src/main/royale/org/apache/royale/file/IFileModel.as
@@ -19,6 +19,10 @@
 package org.apache.royale.file
 {
        import org.apache.royale.utils.BinaryData;
+       COMPILE::SWF
+       {
+               import flash.net.FileReference;
+       }
 
        public interface IFileModel
        {
@@ -60,7 +64,9 @@ package org.apache.royale.file
                 *  @playerversion AIR 2.6
                 *  @productversion Royale 0.9.6
                 */
+
                function get blob():Object;
+
                /**
                 *  The file content
                 * 
@@ -71,6 +77,24 @@ package org.apache.royale.file
                 */
                function set fileContent(value:BinaryData):void;
 
+               /**
+                *  The file reference containing meta data on the file
+                * 
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.9.6
+                */
+               COMPILE::SWF
+               function set fileReference(value:FileReference):void;
+
+               COMPILE::JS
+               function set fileReference(value:File):void;
                
+               COMPILE::SWF
+               function get fileReference():FileReference;
+
+               COMPILE::JS
+               function get fileReference():File;
        }
 }
diff --git 
a/frameworks/projects/Network/src/main/royale/org/apache/royale/file/beads/FileBrowser.as
 
b/frameworks/projects/Network/src/main/royale/org/apache/royale/file/beads/FileBrowser.as
index 6bd0abb..9c34462 100644
--- 
a/frameworks/projects/Network/src/main/royale/org/apache/royale/file/beads/FileBrowser.as
+++ 
b/frameworks/projects/Network/src/main/royale/org/apache/royale/file/beads/FileBrowser.as
@@ -19,7 +19,9 @@ package org.apache.royale.file.beads
 {
        import org.apache.royale.core.IBead;
        import org.apache.royale.core.IStrand;
+       import org.apache.royale.events.Event;
        import org.apache.royale.file.FileProxy;
+       import org.apache.royale.file.IFileModel;
 
        COMPILE::SWF 
        {
@@ -97,7 +99,8 @@ package org.apache.royale.file.beads
                COMPILE::SWF
                protected function 
fileSelectHandler(event:flash.events.Event):void
                {
-                       host.model = new FileModel(delegate);
+                       (host.model as IFileModel).fileReference = delegate;
+                       host.dispatchEvent(new 
org.apache.royale.events.Event("modelChanged"));
                        // delegate reference passed to model, so cleanup this 
bead to keep encapsulation
                        delegate.removeEventListener(flash.events.Event.SELECT, 
fileSelectHandler);
                        createDelegate();
@@ -151,7 +154,9 @@ package org.apache.royale.file.beads
                COMPILE::JS
                private function 
fileChangeHandler(e:org.apache.royale.events.Event):void
                {
-                       host.model = new FileModel((delegate as 
HTMLInputElement).files[0]);
+                       var fileModel:IFileModel = host.model as IFileModel;
+                       fileModel.fileReference = (delegate as 
HTMLInputElement).files[0];
+                       host.dispatchEvent(new Event("modelChanged"));
                }
                
        }
diff --git 
a/frameworks/projects/Network/src/main/royale/org/apache/royale/file/beads/FileLoader.as
 
b/frameworks/projects/Network/src/main/royale/org/apache/royale/file/beads/FileLoader.as
index 9f819af..b8c6575 100644
--- 
a/frameworks/projects/Network/src/main/royale/org/apache/royale/file/beads/FileLoader.as
+++ 
b/frameworks/projects/Network/src/main/royale/org/apache/royale/file/beads/FileLoader.as
@@ -67,7 +67,7 @@ package org.apache.royale.file.beads
                        {
                                var reader:FileReader = new FileReader();
                                goog.events.listen(reader, 'load', 
fileLoadHandler);
-                               reader.readAsArrayBuffer(fileModel.file);
+                               
reader.readAsArrayBuffer(fileModel.fileReference);
                        }
                }
                
diff --git 
a/frameworks/projects/Network/src/main/royale/org/apache/royale/file/beads/FileModel.as
 
b/frameworks/projects/Network/src/main/royale/org/apache/royale/file/beads/FileModel.as
index 4238f68..0abaa36 100644
--- 
a/frameworks/projects/Network/src/main/royale/org/apache/royale/file/beads/FileModel.as
+++ 
b/frameworks/projects/Network/src/main/royale/org/apache/royale/file/beads/FileModel.as
@@ -17,6 +17,10 @@
 
////////////////////////////////////////////////////////////////////////////////
 package org.apache.royale.file.beads
 {
+       COMPILE::SWF
+       {
+               import flash.net.FileReference;
+       }
        import org.apache.royale.core.IBeadModel;
        import org.apache.royale.core.IStrand;
        import org.apache.royale.events.Event;
@@ -61,19 +65,21 @@ package org.apache.royale.file.beads
                 *  @playerversion AIR 2.6
                 *  @productversion Royale 0.9
                 */
-               public function FileModel(data:Object)
+               public function FileModel()
                {
-                       COMPILE::SWF
-                       {
-                               _data = data as FileReference;                  
-                       }
-                       COMPILE::JS
-                       {
-                               _data = data as File;                   
-                       }
                }
                
+               COMPILE::JS
+               public function set fileReference(value:File):void
+               {
+                       _data = value;
+               }
                
+               COMPILE::SWF
+               public function set fileReference(value:FileReference):void
+               {
+                       _data = value;
+               }
                
                /**
                 *  @copy org.apache.royale.file.IFileModel#size
@@ -137,10 +143,10 @@ package org.apache.royale.file.beads
                 *  @langversion 3.0
                 *  @playerversion Flash 10.2
                 *  @playerversion AIR 2.6
-                *  @productversion Royale 0.9
+                *  @productversion Royale 0.9.6
                 */
                COMPILE::JS
-               public function get file():File
+               public function get fileReference():File
                {
                        return _data as File;
                }

Reply via email to