001/*
002  The Broad Institute
003  SOFTWARE COPYRIGHT NOTICE AGREEMENT
004  This software and its documentation are copyright (2003-2008) by the
005  Broad Institute/Massachusetts Institute of Technology. All rights are
006  reserved.
007
008  This software is supplied without any warranty or guaranteed support
009  whatsoever. Neither the Broad Institute nor MIT can be responsible for its
010  use, misuse, or functionality.
011*/
012
013package ca.bc.webarts.widgets.treetable;
014//package org.genomespace.gsui.ui.graphics.draggable;
015
016import java.awt.datatransfer.DataFlavor;
017import java.awt.datatransfer.Transferable;
018import java.awt.datatransfer.UnsupportedFlavorException;
019
020import javax.swing.tree.TreePath;
021
022/**
023 * This represents a TreePath (a node in a JTree) that can be transferred
024 * between a drag source and a drop target.
025 */
026public class TransferableTreePath implements Transferable {
027        // The type of DnD object being dragged...
028        public static final DataFlavor TREEPATH_FLAVOR = new DataFlavor(
029                        DataFlavor.javaJVMLocalObjectMimeType, "TreePath");
030
031        private TreePath _path;
032
033        private DataFlavor[] _flavors = { TREEPATH_FLAVOR };
034
035        /**
036         * Constructs a transferrable tree path object for the specified path.
037         */
038        public TransferableTreePath(TreePath path) {
039                _path = path;
040        }
041
042        // Transferable interface methods...
043        public DataFlavor[] getTransferDataFlavors() {
044                return _flavors;
045        }
046
047        public boolean isDataFlavorSupported(DataFlavor flavor) {
048                return java.util.Arrays.asList(_flavors).contains(flavor);
049        }
050
051        public synchronized Object getTransferData(DataFlavor flavor)
052                        throws UnsupportedFlavorException {
053                if (flavor.isMimeTypeEqual(TREEPATH_FLAVOR.getMimeType())) // DataFlavor.javaJVMLocalObjectMimeType))
054                        return _path;
055                else
056                        throw new UnsupportedFlavorException(flavor);
057        }
058
059}