IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Interfaces Graphiques en Java Discussion :

Drag&Drop de fichiers


Sujet :

Interfaces Graphiques en Java

  1. #1
    RXN
    RXN est déconnecté
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 7
    Points : 4
    Points
    4
    Par défaut Drag&Drop de fichiers
    Bonjour,

    J'essaye d'écrire une application java permettant de faire du drag&drop de fichiers vers des application natives du système (Win32 ou Mac OS X) pour les ouvrir.
    Mais je patauge carrément et j'ai besoin de quelques tuyaux...

    J'ai trouvé un exemple sur cette page: http://www.oreilly.com/catalog/swing...ter/hack65.pdf

    L'exemple décrit sur cette page fonctionne à peu près comme je voudrais sauf que le glisser/déposer ne fonctionne que vers le bureau de windows (je suis sous XP) et pas vers les applications adéquates (les fichiers ne s'ouvrent pas car le drop est alors interdit).

    Est-ce qu'il faut que je passe par le format MIME pour arriver à faire ce genre de chose ?
    Faut-il élaborer une description de fichier particulière en fonction du système qui héberge mon application java ?

    merci d'avance,

    Eric

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Voir aussi http://www.developpez.net/forums/viewtopic.php?t=396618 car les 2 sujets semblent relies.

    Oui probablement si une application refuse le drop, c'est qu'aucun des types MIME/DataFlavor* fournis ne lui convient. Il est possible que les app sur lesquelles tu essais de dropper ne supportent pas DataFlavor.javaFileListFlavor qui est le type utilise dans le chapitre du livre si j'ai bien saisi. Essai peut-etre d'exporter en meme temps en DataFlavor.stringFlavor avec uniquement le nom du 1er fichier selectionne.

    *Je ne sais pas si les actions supportees par la source (TransferHandler.COPY, TransferHandler.COPY_OR_MOVE ou TransferHandler.MOVE) peuvent influencer la reception.

    M'enfin en esperant que ca ne casse pas la compatibilite avec Explorer (le dnd sur le bureau) car il semble qu'en plus la priorite des type MIME supportes peut-etre different d'une app a une autre.

    ex : pour dnd + copier/couper/coller des representations d'objets calques (style calques dans Photoshop, Illustrator, ...) depuis mon app vers d'autre j'utilise un Transferable+TransferHandler qui gere a la fois l'export vers :
    - une description en texte, le nom du calque (DataFlavor.stringFlavor)
    - un rendu bitmap du contenu du calque (DataFlavor.imageFlavor)
    - le calque pour faire du dnd de calques dans la meme GUI (dans ce cas le DataFlavor est construit a partir de la classe).

    Quand je colle ou droppe dans PaintShopPro c'est l'image bitmap qui est collee. Evidement Notepad ne supporte que le collage de texte car il ne supporte pas les autres type MIME. Quand je colle ou drope dans Word c'est le texte qui est colle (il faut faire coller-special pour coller l'image), mais d'autres logiciels pas forcement oriente manipulation d'images 2D prefereront la bitmap prioritairement par rapport a la representation texte.

    Edit - je n'ai pas teste mais il me semble evident que pour exporter avec les types MIME tels text/html ou text/xml il doit falloir simplement fournir le contenu du fichier dans une String (croisons les doigts fort pour que ca marche ).

    Par contre j'avoue que pour des types plus complexes comme des sons WAVE (audio/x-wave) ou MP3 (audio/mpeg), ou des image en tant que fichiers/flux JPEG (image/jpeg), GIF (image/gif), SVG (image/svg+xml)... je ne sais pas trop quoi fournir dans le transferable (byte[] avec le contenu du fichier ? nom du fichier ? qu'est ce que ca pourrait etre d'autre ? ...).

    En tout cas deja il faudrait un moyen de determiner le type MIME approprie du fichier en fonction de son extension et/ou de son magic number d'entete.

    Types MIME:
    http://www.w3schools.com/media/media_mimeref.asp
    http://www.iana.org/assignments/media-types/


    ...
    C'est pas gagne.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  3. #3
    RXN
    RXN est déconnecté
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Merci beaucoup de t'être penché sur mon problème. Je vais prendre le temps d'étudier ce que tu me conseilles d'essayer.

    Par contre, je suis étonné que le "javaFileListFlavor " ne fonctionne pas car il semblait vraiment bien adapté aux transfert de fichiers.

    Je ne pense pas qu'il faille décrire précisément le type de fichier qui est transféré, car une application qui supporte le D&D ne s'aperçoit que le fichier déposé ne lui convient pas seulement lorsqu'elle tente de l'ouvrir. Hors dans mon cas, je n'ai même pas la possibilité de le déposer.

    J'ai vu que le composant swing JFileChooser était capable de le faire sans problème. Mais malheuresement je n'ai rien vu dans son code qui ressemble à du glisser/déposer. Je crains qu'il ne fasse appel à des fonctions natives du système...

    En tout cas merci pour les infos, je vais regarder avec un autre format de dataFlavor.

    Eric

  4. #4
    RXN
    RXN est déconnecté
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Je ne sais pas si les actions supportees par la source (TransferHandler.COPY, TransferHandler.COPY_OR_MOVE ou TransferHandler.MOVE) peuvent influencer la reception
    Merci beaucoup !!! C'était ça. En effet, dans l'exemple que j'avais, l'action de Drag&Drop était définie comme ceci: DnDConstants.ACTION_MOVE

    C'est pourquoi mes applications ne l'acceptaient pas alors que le bureau le prenait sans problème.

    avec DnDConstants.ACTION_COPY, cela fonctionne !

    Merci encore,

    Eric

Discussions similaires

  1. [WD17] Drag and Drop Outlook Fichier joint
    Par clocktime dans le forum WinDev
    Réponses: 1
    Dernier message: 18/01/2012, 08h11
  2. Drag and Drop de fichiers
    Par ludojojo dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 28/10/2011, 14h26
  3. Drag and Drop un fichier
    Par totofe dans le forum GWT et Vaadin
    Réponses: 3
    Dernier message: 31/01/2011, 23h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo