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}