diff --git a/src/vitis/client/javascript/externs/formReader/component/file_picker/file_picker.js b/src/vitis/client/javascript/externs/formReader/component/file_picker/file_picker.js
index 93053f9f50533bef688cc2d3cf74bbb4c54c9ec4..01b5306e63f27099a5fdc9627da13db759be1393 100644
--- a/src/vitis/client/javascript/externs/formReader/component/file_picker/file_picker.js
+++ b/src/vitis/client/javascript/externs/formReader/component/file_picker/file_picker.js
@@ -30,386 +30,348 @@ nsVitisComponent.FilePickerDirective = function ($timeout, $translate, propertie
         },
         controllerAs: 'ctrl',
         templateUrl: window.location.protocol + "//" + window.location.hostname + (window.location.port ? ':' + window.location.port : '') + "/" + sessionStorage["appEnv"] + '/javascript/externs/formReader/component/file_picker/file_picker.html',
-        compile: function (element, attributes) {
-            return {
-                pre: function (scope, element, attributes, controller, transcludeFn) {
-                    $log.log("formReader.FilePickerDirective.pre");
-
-                    /**
-                     * URL vers le dossier fliepicker
-                     */
-                    scope['folderUrl'] = window.location.protocol + "//" + window.location.hostname + (window.location.port ? ':' + window.location.port : '') + "/" + sessionStorage["appEnv"] + '/javascript/externs/formReader/component/file_picker';
-
-                    /**
-                     * Fichiers à envoyer
-                     */
-                    scope['aFiles'] = [];
-
-                    /**
-                     * Liste des URL des images à afficher
-                     */
-                    scope['aPreviewImages'] = [];
+        link: function (scope, element, attributes, controller, transcludeFn) {
+            $log.log("formReader.FilePickerDirective.link");
 
-                    /**
-                     * Liste des URL des documents à afficher
-                     */
-                    scope['aPreviewDocuments'] = [];
+            /**
+             * URL vers le dossier fliepicker
+             */
+            scope['folderUrl'] = window.location.protocol + "//" + window.location.hostname + (window.location.port ? ':' + window.location.port : '') + "/" + sessionStorage["appEnv"] + '/javascript/externs/formReader/component/file_picker';
 
-                    /**
-                     * Add the added files to scope.aFiles
-                     * @param  {type} event
-                     */
-                    scope['addFiles'] = function(event) {
-                        var files = event['target']['files'];
-                        for (var i = 0; i < files.length; i++) {
-                            if (scope['isFilePresent'](files[i])) {
-                                console.error('file already present');
-                            } else {
-                                scope['aFiles'].push(files[i]);
-                            }
-                        }
-                    }
-
-                    /**
-                     * Lit les images déjà présentes à partir de leur URL
-                     * @param  {array} aAvaliableFiles tableau d'URL
-                     * @return {promise}
-                     */
-                    scope['addExistingFiles'] = function(aAvaliableFiles) {
-
-                        var deferred = $q.defer();
-
-                        if (goog.isArray(aAvaliableFiles)) {
-
-                            var iCounter = 0;
-
-                            for (var i = 0; i < aAvaliableFiles.length; i++) {
-
-                                ajaxRequest({
-                                    'method': 'GET',
-                                    'url': aAvaliableFiles[i],
-                                    'headers': {
-                                        'Accept': 'application/x-vm-json'
-                                    },
-                                    'scope': scope,
-                                    'ajaxLoader': true,
-                                    'responseType': 'blob',
-                                    'success': function(response) {
-
-                                        iCounter++;
-                                        if (goog.isDefAndNotNull(response['data'])) {
-                                            var oBlob = response['data'];
-
-                                            if (goog.isDefAndNotNull(response['headers'])) {
-                                                if (goog.isString(response['headers']['content-disposition'])) {
-
-                                                    var sName;
-                                                    var aContentDisp = response['headers']['content-disposition'].split(';');
-                                                    for (var i = 0; i < aContentDisp.length; i++) {
-                                                        if(aContentDisp[i].indexOf('filename=') !== -1){
-                                                            sName = aContentDisp[i].split('"')[1];
-                                                        }
-                                                    }
-
-                                                    if (sName) {
-                                                        oBlob['name'] = sName;
-                                                        // oBlob['lastModified'] = new Date().getTime();
-                                                        // oBlob['lastModifiedDate'] = new Date();
-                                                        // oBlob['webkitRelativePath'] = '';
-
-                                                        // var oFile = new File([oBlob], sName, {
-                                                        //     'type': scope['field']['type'] === 'image_wsdata' ? 'image' : ''
-                                                        // });
-
-                                                        // scope['aFiles'].push(oFile);
-                                                    }
-                                                }
-                                            }
-                                            scope['aFiles'].push(oBlob);
-                                        }
-                                        if (iCounter === aAvaliableFiles.length) {
-                                            deferred.resolve();
-                                        }
-                                    },
-                                    'error': function(response) {
-                                        iCounter++;
-                                        if (iCounter === aAvaliableFiles.length) {
-                                            deferred.resolve();
-                                        }
-                                    }
-                                });
+            /**
+             * Fichiers à envoyer
+             */
+            scope['aFiles'] = [];
 
-                            }
-                        }
+            /**
+             * Liste des URL des images à afficher
+             */
+            scope['aPreviewImages'] = [];
 
-                        return deferred.promise;
-                    }
+            /**
+             * Liste des URL des documents à afficher
+             */
+            scope['aPreviewDocuments'] = [];
 
-                    /**
-                     * Download the given file
-                     * @param  {object} oFile
-                     */
-                    scope['downloadFile'] = function(oFile) {
+            /**
+             * Initialise le composant
+             */
+            scope['initComponent'] = function() {
+                $log.log("formReader.FilePickerDirective.initComponent");
 
-                        var oBlob;
-                        var sFileName = oFile['name'];
+                // Réinitialise les variables
+                scope['resetFileInput']();
 
-                        // Trouve le fichier correspondant
-                        for (var i = 0; i < scope['aFiles'].length; i++) {
-                            if(scope['aFiles'][i]['name'] === oFile['name']){
-                                oBlob = scope['aFiles'][i];
-                            }
-                        }
+                // Initialise l'élément bootstrap fileInput
+                scope['initBootstrapFileInputs']().then(function(oInput) {
 
-                        // Télécharge le fichier
-                        if (goog.isDefAndNotNull(oBlob)) {
+                    // Écoute les changements pour afficher les images dans la liste
+                    $(oInput).change(function(e){
 
-                            // IE
-                            if (window.navigator['msSaveOrOpenBlob']) {
-                                window.navigator['msSaveOrOpenBlob'](oBlob, sFileName);
-                            }
-                            // Others
-                            else {
-                                var a = document.createElement("a");
-                                var url = window.URL.createObjectURL(oBlob);
-                                document.body.appendChild(a);
-                                a.style = "display: none";
-                                a.href = url;
-                                a.download = sFileName;
-                                a.click();
-                                window.URL.revokeObjectURL(url);
-                            }
-                        }
-                    }
+                        // Ajoute les fichiers
+                        scope['addFiles'](e);
 
-                    /**
-                     * Initialise l'élément bootstrap fileInput
-                     */
-                    scope['initBootstrapFileInputs'] = function() {
+                        // Affichage des images/documents dans l'espace de prévisualisation
+                        scope['initPreview']();
 
-                        var deferred = $q.defer();
+                        // Set la nouvelle valeur de l'attibut
                         setTimeout(function () {
-                            var oInput = $(element).find('#' + scope['field']['id'] + '_hidden');
-                            deferred.resolve(oInput);
+                            oInput[0]['files_vitis'] = scope['aFiles'];
+
+                            // Sauvegarde les fichiers sur oFormValues
+                            scope['saveFiles']();
                         });
+                    });
 
-                        return deferred.promise;
-                    }
+                    // Affiche les images présentes sur le serveur
+                    var aAvaliableFiles = scope["oFormValues"][scope["sFormDefinitionName"]][scope['field'].name];
+                    if (goog.isDefAndNotNull(aAvaliableFiles)) {
+                        scope['addExistingFiles'](aAvaliableFiles).then(function(){
 
-                    /**
-                     * Init the preview in scope.aPreviewImages or scope.aPreviewDocuments
-                     */
-                    scope['initPreview'] = function() {
+                            // Initialise l'affichage des images
+                            scope['initPreview']();
 
-                        var sPreviewContainer = 'aPreviewDocuments';
-                        if (scope['field']['type'] === 'image_wsdata') {
-                            sPreviewContainer = 'aPreviewImages';
-                        }
+                            // Sauvegarde les fichiers sur oFormValues
+                            scope['saveFiles']();
+                        });
+                    }
+                });
+            }
+
+            /**
+             * Réinitialise les variables du composant
+             *
+             * @return {type}  description
+             */
+            scope['resetFileInput'] = function() {
+                $log.log("formReader.FilePickerDirective.resetFileInput");
+
+                scope.$applyAsync(function(){
+                    scope['aFiles'] = [];
+                    scope['aPreviewImages'] = [];
+                    scope['aPreviewDocuments'] = [];
+                    scope['initPreview']();
+                });
+            }
+
+            /**
+             * Add the added files to scope.aFiles
+             * @param  {type} event
+             */
+            scope['addFiles'] = function(event) {
+                $log.log("formReader.FilePickerDirective.addFiles");
+
+                var files = event['target']['files'];
+                for (var i = 0; i < files.length; i++) {
+                    if (scope['isFilePresent'](files[i])) {
+                        console.error('file already present');
+                    } else {
+                        scope['aFiles'].push(files[i]);
+                    }
+                }
+            }
 
-                        console.log("initPreview: ", scope['aFiles']);
+            /**
+             * Lit les images déjà présentes à partir de leur URL
+             * @param  {array} aAvaliableFiles tableau d'URL
+             * @return {promise}
+             */
+            scope['addExistingFiles'] = function(aAvaliableFiles) {
+                $log.log("formReader.FilePickerDirective.addExistingFiles");
 
-                        // Vide les images qui ont étés supprimées de aFiles
-                        var bIsPresent;
-                        for (var i = scope[sPreviewContainer].length - 1; i >= 0; i--) {
-                            bIsPresent = false;
-                            for (var ii = 0; ii < scope['aFiles'].length; ii++) {
-                                if (!bIsPresent) {
-                                    if(scope[sPreviewContainer][i]['name'] === scope['aFiles'][ii]['name']){
-                                        bIsPresent = true;
-                                    }
-                                }
-                            }
-                            if (!bIsPresent) {
-                                scope[sPreviewContainer].splice(i, 1);
-                            }
-                        }
+                var deferred = $q.defer();
 
-                        // Ajoute les nouvelles images
-                        var oFile;
-                        for (var i = 0; i < scope['aFiles'].length; i++) {
-                            bIsPresent = false;
-                            oFile = scope['aFiles'][i];
+                if (goog.isArray(aAvaliableFiles)) {
 
-                            if (scope['field']['type'] === 'image_wsdata') {
-                                if (!oFile.type.match('image')) continue;
-                            }
+                    var iCounter = 0;
 
-                            // Vérifie que l'image ne soit pas déjà ajoutée
-                            for (var ii = 0; ii < scope[sPreviewContainer].length; ii++) {
-                                if(scope['aFiles'][i]['name'] === scope[sPreviewContainer][ii]['name']){
-                                    bIsPresent = true;
-                                }
-                            }
+                    for (var i = 0; i < aAvaliableFiles.length; i++) {
 
-                            // Ajoute les nouvelles images
-                            if (!bIsPresent) {
-                                var picReader = new FileReader();
-                                picReader.addEventListener('load', angular.bind(this, function (oFile, event) {
-                                    var picFile = event.target;
-                                    scope.$applyAsync(function(){
-                                        scope[sPreviewContainer].push({
-                                            'name': oFile['name'],
-                                            'src': picFile['result']
-                                        });
-                                    });
-                                }, oFile));
-                                picReader.readAsDataURL(oFile);
-                            }
-                        }
+                        ajaxRequest({
+                            'method': 'GET',
+                            'url': aAvaliableFiles[i],
+                            'headers': {
+                                'Accept': 'application/x-vm-json'
+                            },
+                            'scope': scope,
+                            'ajaxLoader': true,
+                            'responseType': 'blob',
+                            'success': function(response) {
+
+                                iCounter++;
+                                if (goog.isDefAndNotNull(response['data'])) {
+                                    var oBlob = response['data'];
+
+                                    if (goog.isDefAndNotNull(response['headers'])) {
+                                        if (goog.isString(response['headers']['content-disposition'])) {
+
+                                            var sName;
+                                            var aContentDisp = response['headers']['content-disposition'].split(';');
+                                            for (var i = 0; i < aContentDisp.length; i++) {
+                                                if(aContentDisp[i].indexOf('filename=') !== -1){
+                                                    sName = aContentDisp[i].split('"')[1];
+                                                }
+                                            }
 
-                        // Rafraichit la vue
-                        scope.$applyAsync(function(){
-                            scope[sPreviewContainer] = scope[sPreviewContainer];
-                        });
-                    }
+                                            if (sName) {
+                                                oBlob['name'] = sName;
+                                                // oBlob['lastModified'] = new Date().getTime();
+                                                // oBlob['lastModifiedDate'] = new Date();
+                                                // oBlob['webkitRelativePath'] = '';
 
-                    /**
-                     * Test if a file is already present
-                     * @param  {object} oFile file to test
-                     * @return {boolean} true if the file is already present
-                     */
-                    scope['isFilePresent'] = function(oFile) {
-                        var bIsFilePresent = false;
-                        for (var i = 0; i < scope['aFiles'].length; i++) {
-                            if (scope['aFiles'][i]['name'] === oFile['name']) {
-                                bIsFilePresent = true;
-                            }
-                        }
-                        return bIsFilePresent;
-                    }
+                                                // var oFile = new File([oBlob], sName, {
+                                                //     'type': scope['field']['type'] === 'image_wsdata' ? 'image' : ''
+                                                // });
 
-                    /**
-                     * Remove the given file
-                     * @param  {object} oImage
-                     */
-                    scope['removeFile'] = function(oFile) {
-
-                        bootbox['confirm']({
-                            'message': "Supprimer <b>" + oFile['name'] + "</b> ?",
-                            'buttons': {
-                                'confirm': {
-                                    'label': 'Oui',
-                                    'className': 'btn-danger'
-                                },
-                                'cancel': {
-                                    'label': 'Non',
-                                    'className': 'btn-default'
-                                }
-                            },
-                            'callback': function (result) {
-                                if (result) {
-                                    for (var i = 0; i < scope['aFiles'].length; i++) {
-                                        if(scope['aFiles'][i]['name'] === oFile['name']){
-                                            console.log('1', oFile['name']);
-                                            scope['aFiles'].splice(i, 1);
+                                                // scope['aFiles'].push(oFile);
+                                            }
                                         }
                                     }
-
-                                    // Affichage des images
-                                    setTimeout(function () {
-
-                                        // Initialise l'affichage des images
-                                        scope['initPreview']();
-
-                                        // Sauvegarde les fichiers sur oFormValues
-                                        scope['saveFiles']();
-                                    });
+                                    scope['aFiles'].push(oBlob);
+                                }
+                                if (iCounter === aAvaliableFiles.length) {
+                                    deferred.resolve();
+                                }
+                            },
+                            'error': function(response) {
+                                iCounter++;
+                                if (iCounter === aAvaliableFiles.length) {
+                                    deferred.resolve();
                                 }
                             }
                         });
-                    }
 
-                    /**
-                     * Show the finder to search no files to add
-                     */
-                    scope['searchNewFile'] = function() {
-                        var oInput = $(element).find('#' + scope['field']['id'] + '_hidden');
-                        $(oInput).click();
                     }
+                }
 
-                    /**
-                     * Show the given image on a modal
-                     * @param  {object} oImage
-                     */
-                    scope['showImageModal'] = function(oImage) {
-
-                        var domModalcontent = $('<div class="modal-image-zone"></div>');
-                        var domImage = $('<img src="' + oImage['src'] + '">');
-
-                        // Boutons suivant/précédent
-                        var domImageToolsContainer = $('<div class="filepicker-image-zoom-modal-tools-container"></div>');
-                        var domImageToolsPrev = $('<div class="filepicker-image-zoom-modal-tools-prev"><span class="icon-keyboard_arrow_left"></span></div>');
-                        var domImageToolsNext = $('<div class="filepicker-image-zoom-modal-tools-next"><span class="icon-keyboard_arrow_right"></span></div>');
-
-                        // Bouton télécharger
-                        var domDownloadButtonContainer = $('<div class="filepicker-image-zoom-modal-button-container"></div>');
-                        var domDownloadButton = $('<button type="button" class="btn btn-primary"><span class="glyphicon glyphicon-download-alt"></span></button>');
-
-                        /**
-                         * Téléchargement de l'image
-                         */
-                        $(domDownloadButton).click(function(){
-                            scope['downloadFile'](oImage);
-                        });
+                return deferred.promise;
+            }
 
-                        $(domModalcontent).append(domImage);
-                        $(domImageToolsContainer).append(domImageToolsPrev);
-                        $(domImageToolsContainer).append(domImageToolsNext);
-                        $(domDownloadButtonContainer).append(domDownloadButton);
-                        $(domModalcontent).append(domDownloadButtonContainer);
-                        $(domModalcontent).append(domImageToolsContainer);
+            /**
+             * Download the given file
+             * @param  {object} oFile
+             */
+            scope['downloadFile'] = function(oFile) {
+                $log.log("formReader.FilePickerDirective.downloadFile");
 
+                var oBlob;
+                var sFileName = oFile['name'];
 
-                        var dialog = bootbox['dialog']({
-                            'title': oImage['name'],
-                            'className': 'filepicker-image-zoom-modal',
-                            'message': domModalcontent
-                        });
+                // Trouve le fichier correspondant
+                for (var i = 0; i < scope['aFiles'].length; i++) {
+                    if(scope['aFiles'][i]['name'] === oFile['name']){
+                        oBlob = scope['aFiles'][i];
                     }
+                }
+
+                // Télécharge le fichier
+                if (goog.isDefAndNotNull(oBlob)) {
 
-                    /**
-                     * Sauvegarde les fichiers sur oFormValues
-                     */
-                    scope['saveFiles'] = function() {
-                        console.log("saveFiles: ", scope['aFiles']);
-                        console.log("scope['oFormValues']: ", scope["oFormValues"]);
-                        scope['oFormValues'][scope['sFormDefinitionName']][scope['field'].name] = scope['aFiles'];
+                    // IE
+                    if (window.navigator['msSaveOrOpenBlob']) {
+                        window.navigator['msSaveOrOpenBlob'](oBlob, sFileName);
+                    }
+                    // Others
+                    else {
+                        var a = document.createElement("a");
+                        var url = window.URL.createObjectURL(oBlob);
+                        document.body.appendChild(a);
+                        a.style = "display: none";
+                        a.href = url;
+                        a.download = sFileName;
+                        a.click();
+                        window.URL.revokeObjectURL(url);
                     }
+                }
+            }
+
+            /**
+             * Initialise l'élément bootstrap fileInput
+             */
+            scope['initBootstrapFileInputs'] = function() {
+                $log.log("formReader.FilePickerDirective.initBootstrapFileInputs");
+
+                var deferred = $q.defer();
+                setTimeout(function () {
+                    var oInput = $(element).find('#' + scope['field']['id'] + '_hidden');
+                    deferred.resolve(oInput);
+                });
+
+                return deferred.promise;
+            }
+
+            /**
+             * Init the preview in scope.aPreviewImages or scope.aPreviewDocuments
+             */
+            scope['initPreview'] = function() {
+                $log.log("formReader.FilePickerDirective.initPreview");
+
+                var sPreviewContainer = 'aPreviewDocuments';
+                if (scope['field']['type'] === 'image_wsdata') {
+                    sPreviewContainer = 'aPreviewImages';
+                }
 
-                },
-                post: function (scope, element, attributes, controller, transcludeFn) {
-                    $log.log("formReader.FilePickerDirective.post");
+                // Vide les images qui ont étés supprimées de aFiles
+                var bIsPresent;
+                for (var i = scope[sPreviewContainer].length - 1; i >= 0; i--) {
+                    bIsPresent = false;
+                    for (var ii = 0; ii < scope['aFiles'].length; ii++) {
+                        if (!bIsPresent) {
+                            if(scope[sPreviewContainer][i]['name'] === scope['aFiles'][ii]['name']){
+                                bIsPresent = true;
+                            }
+                        }
+                    }
+                    if (!bIsPresent) {
+                        scope[sPreviewContainer].splice(i, 1);
+                    }
+                }
 
-                    console.log("field: ", scope['field']);
-                    console.log("oFormDefinition: ", scope['oFormDefinition']);
-                    console.log("sFormDefinitionName: ", scope['sFormDefinitionName']);
-                    console.log("oFormValues: ", scope['oFormValues']);
+                // Ajoute les nouvelles images
+                var oFile;
+                for (var i = 0; i < scope['aFiles'].length; i++) {
+                    bIsPresent = false;
+                    oFile = scope['aFiles'][i];
 
-                    // Initialise l'élément bootstrap fileInput
-                    scope['initBootstrapFileInputs']().then(function(oInput) {
+                    if (scope['field']['type'] === 'image_wsdata') {
+                        if (!oFile.type.match('image')) continue;
+                    }
 
-                        // Écoute les changements pour afficher les images dans la liste
-                        $(oInput).change(function(e){
+                    // Vérifie que l'image ne soit pas déjà ajoutée
+                    for (var ii = 0; ii < scope[sPreviewContainer].length; ii++) {
+                        if(scope['aFiles'][i]['name'] === scope[sPreviewContainer][ii]['name']){
+                            bIsPresent = true;
+                        }
+                    }
 
-                            // Ajoute les fichiers
-                            scope['addFiles'](e);
+                    // Ajoute les nouvelles images
+                    if (!bIsPresent) {
+                        var picReader = new FileReader();
+                        picReader.addEventListener('load', angular.bind(this, function (oFile, event) {
+                            var picFile = event.target;
+                            scope.$applyAsync(function(){
+                                scope[sPreviewContainer].push({
+                                    'name': oFile['name'],
+                                    'src': picFile['result']
+                                });
+                            });
+                        }, oFile));
+                        picReader.readAsDataURL(oFile);
+                    }
+                }
 
-                            // Affichage des images/documents dans l'espace de prévisualisation
-                            scope['initPreview']();
+                // Rafraichit la vue
+                scope.$applyAsync(function(){
+                    scope[sPreviewContainer] = scope[sPreviewContainer];
+                });
+            }
+
+            /**
+             * Test if a file is already present
+             * @param  {object} oFile file to test
+             * @return {boolean} true if the file is already present
+             */
+            scope['isFilePresent'] = function(oFile) {
+                $log.log("formReader.FilePickerDirective.isFilePresent");
+
+                var bIsFilePresent = false;
+                for (var i = 0; i < scope['aFiles'].length; i++) {
+                    if (scope['aFiles'][i]['name'] === oFile['name']) {
+                        bIsFilePresent = true;
+                    }
+                }
+                return bIsFilePresent;
+            }
+
+            /**
+             * Remove the given file
+             * @param  {object} oImage
+             */
+            scope['removeFile'] = function(oFile) {
+                $log.log("formReader.FilePickerDirective.removeFile");
+
+                bootbox['confirm']({
+                    'message': "Supprimer <b>" + oFile['name'] + "</b> ?",
+                    'buttons': {
+                        'confirm': {
+                            'label': 'Oui',
+                            'className': 'btn-danger'
+                        },
+                        'cancel': {
+                            'label': 'Non',
+                            'className': 'btn-default'
+                        }
+                    },
+                    'callback': function (result) {
+                        if (result) {
+                            for (var i = 0; i < scope['aFiles'].length; i++) {
+                                if(scope['aFiles'][i]['name'] === oFile['name']){
+                                    scope['aFiles'].splice(i, 1);
+                                }
+                            }
 
-                            // Set la nouvelle valeur de l'attibut
+                            // Affichage des images
                             setTimeout(function () {
-                                oInput[0]['files_vitis'] = scope['aFiles'];
-
-                                // Sauvegarde les fichiers sur oFormValues
-                                scope['saveFiles']();
-                            });
-                        });
-
-                        // Affiche les images présentes sur le serveur
-                        var aAvaliableFiles = scope["oFormValues"][scope["sFormDefinitionName"]][scope['field'].name];
-                        if (goog.isDefAndNotNull(aAvaliableFiles)) {
-                            scope['addExistingFiles'](aAvaliableFiles).then(function(){
 
                                 // Initialise l'affichage des images
                                 scope['initPreview']();
@@ -418,12 +380,69 @@ nsVitisComponent.FilePickerDirective = function ($timeout, $translate, propertie
                                 scope['saveFiles']();
                             });
                         }
-                    });
-
-                    // Initialise l'affichage des images
-                    scope['initPreview']();
-                }
-            };
+                    }
+                });
+            }
+
+            /**
+             * Show the finder to search no files to add
+             */
+            scope['searchNewFile'] = function() {
+                $log.log("formReader.FilePickerDirective.searchNewFile");
+
+                var oInput = $(element).find('#' + scope['field']['id'] + '_hidden');
+                $(oInput).click();
+            }
+
+            /**
+             * Show the given image on a modal
+             * @param  {object} oImage
+             */
+            scope['showImageModal'] = function(oImage) {
+                $log.log("formReader.FilePickerDirective.showImageModal");
+
+                var domModalcontent = $('<div class="modal-image-zone"></div>');
+                var domImage = $('<img src="' + oImage['src'] + '">');
+
+                // Boutons suivant/précédent
+                var domImageToolsContainer = $('<div class="filepicker-image-zoom-modal-tools-container"></div>');
+                var domImageToolsPrev = $('<div class="filepicker-image-zoom-modal-tools-prev"><span class="icon-keyboard_arrow_left"></span></div>');
+                var domImageToolsNext = $('<div class="filepicker-image-zoom-modal-tools-next"><span class="icon-keyboard_arrow_right"></span></div>');
+
+                // Bouton télécharger
+                var domDownloadButtonContainer = $('<div class="filepicker-image-zoom-modal-button-container"></div>');
+                var domDownloadButton = $('<button type="button" class="btn btn-primary"><span class="glyphicon glyphicon-download-alt"></span></button>');
+
+                /**
+                 * Téléchargement de l'image
+                 */
+                $(domDownloadButton).click(function(){
+                    scope['downloadFile'](oImage);
+                });
+
+                $(domModalcontent).append(domImage);
+                $(domImageToolsContainer).append(domImageToolsPrev);
+                $(domImageToolsContainer).append(domImageToolsNext);
+                $(domDownloadButtonContainer).append(domDownloadButton);
+                $(domModalcontent).append(domDownloadButtonContainer);
+                $(domModalcontent).append(domImageToolsContainer);
+
+
+                var dialog = bootbox['dialog']({
+                    'title': oImage['name'],
+                    'className': 'filepicker-image-zoom-modal',
+                    'message': domModalcontent
+                });
+            }
+
+            /**
+             * Sauvegarde les fichiers sur oFormValues
+             */
+            scope['saveFiles'] = function() {
+                $log.log("formReader.FilePickerDirective.saveFiles");
+
+                scope['oFormValues'][scope['sFormDefinitionName']][scope['field'].name] = scope['aFiles'];
+            }
         }
     };
 };
diff --git a/src/vitis/client/javascript/externs/formReader/formReaderDrtv.js b/src/vitis/client/javascript/externs/formReader/formReaderDrtv.js
index d9b441ea60aa072df322f492c7ec9516d50c003d..11eefa1260dfb392b9fd3df6ad8c32d65c89118c 100644
--- a/src/vitis/client/javascript/externs/formReader/formReaderDrtv.js
+++ b/src/vitis/client/javascript/externs/formReader/formReaderDrtv.js
@@ -693,6 +693,13 @@ formReader.formReaderDirective = function ($q, formReaderService, propertiesSrvc
                 $(element).find(".file").each(function () {
                     $(this)['fileinput']('clear');
                 });
+
+                setTimeout(function () {
+                    $('#select_edit_form_reader').find('[data-app-file-picker=""]').each(function(index, elem){
+                    	var oFilePickerScope = angular.element($(elem).children()).scope();
+                        oFilePickerScope['initComponent']();
+                    })
+                });
             };
 
             /**
@@ -875,48 +882,48 @@ formReader.appFormFieldSpecificParamsDrtv = function ($timeout, $translate, prop
                     // Intégration du plugin "bootstrap-fileinput" dans tous les champ d'upload de fichiers.
                     $(element)["fileinput"](oOptions);
                     break;
-                case 'file_wsdata':
-
-                    // Évite la multiplication des champs depuis le studio
-                    // quand on coche/décoche "Multiple documents"
-                    if ($(element).parent().find('.file-input').length > 0) {
-                        $(element).remove();
-                        break;
-                    }
-
-                    // Si sélection d'un fichier à uploader : sauve ses paramètres.
-                    element[0].addEventListener("change", function () {
-                        var oFileList = {
-                            "aFiles": this.files
-                        };
-                        scope["oFormValues"][scope["sFormDefinitionName"]][element[0].name] = oFileList;
-                    }, false);
-                    // Extensions de fichiers autorisées.
-                    if (typeof(scope["field"]["formats"]) != "undefined" && typeof(scope["field"]["extensions"]) == "undefined")
-                        scope["field"]["extensions"] = scope["field"]["formats"];
-                    if (goog.isDefAndNotNull(scope["field"]["extensions"])) {
-                        var aFilesExtensions = scope["field"]["extensions"].split('|');
-                        for (var iFileExtensionIndex in aFilesExtensions)
-                            aFilesExtensions[iFileExtensionIndex] = "." + aFilesExtensions[iFileExtensionIndex];
-                        element[0].setAttribute("accept", aFilesExtensions.join(","));
-                    }
-                    // Options
-                    var oOptions = {
-                        "showPreview": false,
-                        "showRemove": false,
-                        "showUpload": false,
-                    };
-
-                    if (typeof (scope["field"]["options"]) !== "undefined")
-                        goog.object.extend(oOptions, scope["field"]["options"]);
-
-                    oOptions["mainClass"] = "input-file-" + scope["oFormDefinition"][scope["sFormDefinitionName"]]["input_size"];
-                    // Langue.
-                    if (propertiesSrvc["language"] != "en")
-                        oOptions["language"] = propertiesSrvc["language"];
-                    // Intégration du plugin "bootstrap-fileinput" dans tous les champ d'upload de fichiers.
-                    $(element)["fileinput"](oOptions);
-                    break;
+                // case 'file_wsdata':
+                //
+                //     // Évite la multiplication des champs depuis le studio
+                //     // quand on coche/décoche "Multiple documents"
+                //     if ($(element).parent().find('.file-input').length > 0) {
+                //         $(element).remove();
+                //         break;
+                //     }
+                //
+                //     // Si sélection d'un fichier à uploader : sauve ses paramètres.
+                //     element[0].addEventListener("change", function () {
+                //         var oFileList = {
+                //             "aFiles": this.files
+                //         };
+                //         scope["oFormValues"][scope["sFormDefinitionName"]][element[0].name] = oFileList;
+                //     }, false);
+                //     // Extensions de fichiers autorisées.
+                //     if (typeof(scope["field"]["formats"]) != "undefined" && typeof(scope["field"]["extensions"]) == "undefined")
+                //         scope["field"]["extensions"] = scope["field"]["formats"];
+                //     if (goog.isDefAndNotNull(scope["field"]["extensions"])) {
+                //         var aFilesExtensions = scope["field"]["extensions"].split('|');
+                //         for (var iFileExtensionIndex in aFilesExtensions)
+                //             aFilesExtensions[iFileExtensionIndex] = "." + aFilesExtensions[iFileExtensionIndex];
+                //         element[0].setAttribute("accept", aFilesExtensions.join(","));
+                //     }
+                //     // Options
+                //     var oOptions = {
+                //         "showPreview": false,
+                //         "showRemove": false,
+                //         "showUpload": false,
+                //     };
+                //
+                //     if (typeof (scope["field"]["options"]) !== "undefined")
+                //         goog.object.extend(oOptions, scope["field"]["options"]);
+                //
+                //     oOptions["mainClass"] = "input-file-" + scope["oFormDefinition"][scope["sFormDefinitionName"]]["input_size"];
+                //     // Langue.
+                //     if (propertiesSrvc["language"] != "en")
+                //         oOptions["language"] = propertiesSrvc["language"];
+                //     // Intégration du plugin "bootstrap-fileinput" dans tous les champ d'upload de fichiers.
+                //     $(element)["fileinput"](oOptions);
+                //     break;
                 // case 'image_wsdata':
                 //
                 //     // Évite la multiplication des champs depuis le studio