Cours mise en œuvre du « Drag and Drop » avec Java, tutoriel & guide de travaux pratiques en pdf.
Mise en œuvre du « Drag and Drop » : TransferHandler
L’objet TransferHandler est le cœur du transfert de données Cette classe permet de gérer les autorisations de glisser et déposer mais effectue aussi les effets de bords Construction d’un objet TransferHandler TransferHandler() : crée un objet TransferHandler TransferHandler(String) : crée un objet TransferHandler avec le nom de la propriété à transférer. Exemple new TransferHandler(« String ») On distingue les méthodes liées à l’importation pour le composant cible (reçoit des données) et les méthodes liées à l’exportation pour le composant source (émets des données) Pour avoir l’effet désiré vous aurez besoin de redéfinir certaines méthodes de la classe TransfertHandler.
Considérons le cas où l’on souhaite importer des données dans un composant Au moment du déposer il est intéressant de savoir si le composant cible peut accepter ou pas les données boolean canImport(JComponent c, DataFlavor[] d) : retourne true si les données d sont acceptées par le composant cible c sinon retourne false Le système de transfert de données modifie le curseur pour indiquer que le composant accepte les données Dans le cas ou l’importation est possible le système de transfert de données appelle boolean importData(JComponent c, Transferable t) : importe les données t dans le composant cible c . Si l’importation est correctement effectuée retourne true et effectue l’exportation sinon false.
Considérons le cas où l’on souhaite exporter des données d’un composant Au moment du glisser le système de transfert de données prépare les données du composant source Transferable createTransferable(JComponent c) : retourne les données à transférer où c correspond au composant source Possibilité de déterminer le type de « Drag’n Drop » int getSourceActions(JComponent c) : retourne le type de « Drag’n Drop » COPY , MOVE , COPY_OR_MOVE ou NONE Une fois l’importation des données sur le composant cible, le composant source peut effectuer un dernier traitement exportDone(JComponent c, Transferable t, int ty) : effectue un traitement sur le composant c (la source), des données t selon le mode ty (copie, déplacement, les deux ou aucun).
Les format des objets glissés sont identifiés par des objets de type DataFlavor Un objet DataFlavor est juste un objet java qui représente un type MIME comparable à un identifiant (ne stocke pas de données) Les types MIME permettent aux applications de reconnaître les types de données. Exemple « text/html », « image/png » La classe DataFlavor contient des constantes pour les types les plus courants stringFlavor : DataFlavor représentant la classe String imageFlavor : DataFlavor représentant la classe Image javaFileListFlavor : DataFlavor représentant la classe java.util.List où chaque élément doit être un objet File javaJVMLocalObjectMimeType : DataFlavor représentant une classe de type Transferable.