10.12.07

Ejemplo de Native Drag & Drop en AIR

Posted in air at 23:36

Una de las nuevas funcionalidades que nos encontramos dentro de la programación en Adobe Air, es la capacidad de poder arrastrar archivos y directorios desde nuestro escritorio, o desde una ventana de explorador del sistema, a nuestra aplicación, y tener así automáticamente una referencia a ellos. Esto se conoce como Native Drag & Drop.

Para utilizar este Drag & Drop, sólamente tenemos que monitorizar desde la aplicación principal dos eventos. El evento NativeDragEnter, que se dispara cuando entramos en nuestra aplicación arrastrando algún archivo, y el evento NativeDragDrop que se ejecuta cuando soltamos los archivos arrastrados dentro de la aplicación. Para ejecutar el NativeDragDrop previamente tenemos que “dar permiso” a la aplicación para aceptar los archivos que estan siendo arrastrados. Esto se realiza con la intrucción DragManager.acceptDragDrop(this), y se utiliza cuando comprobamos los archivos en el evento NativeDragEnter.

Ambos eventos reciben como parámetro un objeto de la clase NativeDragEvent, dentro del cual, tenemos una propiedad llamada clipboard, que es un objeto de la clase Clipboard, que contiene toda la información de los archivos que estamos arrastrando.

Desde este link podéis descargar el código fuenta de un ejemplo sencillo de utilización. Se trata de un programa que a través de Native Drag & Drop muestra la información de los archivos que le estamos pasando en un FileSystemDataGrid. Sólo admite archivos con extensión .mp3, si dentro de los archivos que arrastramos hay un archivo con otra extensión, o un directorio, rechaza el Drag & Drop.

Podéis descargar el archivo ejecutable y ver el código fuente pulsando con el botón derecho en la aplicación y dándole a view source (es necesario tener el runtime de AIR), o descargar el código fuente y compilarlo en vuestro flex builder.

Espero que sirva de ayuda. Un saludo!!

Editado: Se me olvido mencionar que este ejemplo está compilado con la beta 2 del runtime de AIR. Como muy bien dice ablesa, si solo tienes instalada la beta 3 del runtime, el ejemplo no funcionará. Habrá que tener instalada la beta2.