001/* 002 * Copyright (c) 2004-2007 by Michael Connor. All Rights Reserved. 003 * 004 * Redistribution and use in source and binary forms, with or without 005 * modification, are permitted provided that the following conditions are met: 006 * 007 * o Redistributions of source code must retain the above copyright notice, 008 * this list of conditions and the following disclaimer. 009 * 010 * o Redistributions in binary form must reproduce the above copyright notice, 011 * this list of conditions and the following disclaimer in the documentation 012 * and/or other materials provided with the distribution. 013 * 014 * o Neither the name of FormLayoutBuilder or Michael Connor nor the names of 015 * its contributors may be used to endorse or promote products derived 016 * from this software without specific prior written permission. 017 * 018 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 019 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 020 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 021 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 022 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 023 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 024 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 025 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 026 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 027 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 028 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 029 */ 030/* 031 * TransferableWrapper.java 032 * 033 * Created on October 18, 2004, 6:05 PM 034 */ 035 036package org.mlc.swing.layout; 037 038import java.awt.datatransfer.DataFlavor; 039 040/** 041 * A wrapper for transferring data using drag and drop. 042 * @author Michael Connor 043 * @version $Id$ 044 * @since Ptolemy II 8.0 045 */ 046public class TransferableWrapper implements java.awt.datatransfer.Transferable { 047 Object dragObject; 048 049 /** Instantiate a TransferableWrapper. 050 * @param dragObject The drag object 051 */ 052 public TransferableWrapper(Object dragObject) { 053 this.dragObject = dragObject; 054 } 055 056 /** Get the transfer data for a flavor. 057 * @param flavor the flavor 058 * @return the transfer data. 059 */ 060 @Override 061 public synchronized Object getTransferData(DataFlavor flavor) { 062 return dragObject; 063 } 064 065 /** Return true if the data flavor is supported. 066 * @param flavor the flavor to be checked. 067 * @return true if the data flavor is supported. 068 */ 069 @Override 070 public boolean isDataFlavorSupported(DataFlavor flavor) { 071 return flavor.getMimeType() 072 .equals(DataFlavor.javaJVMLocalObjectMimeType); 073 } 074 075 /** Get the transfer data flavors. 076 * @return the transfer data flavors. 077 */ 078 @Override 079 public synchronized DataFlavor[] getTransferDataFlavors() { 080 try { 081 return new DataFlavor[] { 082 new DataFlavor(DataFlavor.javaJVMLocalObjectMimeType) }; 083 } catch (ClassNotFoundException cnfe) { 084 throw new RuntimeException("Unable to load DataFlavor " 085 + DataFlavor.javaJVMLocalObjectMimeType, cnfe); 086 } 087 } 088}