DnDTarget.java revision 8729:0242fce0f717
197403Sobrien/* 297403Sobrien * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved. 3169691Skan * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4132720Skan * 597403Sobrien * This code is free software; you can redistribute it and/or modify it 697403Sobrien * under the terms of the GNU General Public License version 2 only, as 797403Sobrien * published by the Free Software Foundation. 897403Sobrien * 997403Sobrien * This code is distributed in the hope that it will be useful, but WITHOUT 1097403Sobrien * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 1197403Sobrien * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 1297403Sobrien * version 2 for more details (a copy is included in the LICENSE file that 1397403Sobrien * accompanied this code). 1497403Sobrien * 1597403Sobrien * You should have received a copy of the GNU General Public License version 1697403Sobrien * 2 along with this work; if not, write to the Free Software Foundation, 1797403Sobrien * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 1897403Sobrien * 19169691Skan * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 2097403Sobrien * or visit www.oracle.com if you need additional information or have any 2197403Sobrien * questions. 2297403Sobrien */ 2397403Sobrien 2497403Sobrien/* 2597403Sobrien* Panel is a DropTarget 2697403Sobrien* 2797403Sobrien*/ 2897403Sobrien 2997403Sobrienimport java.awt.*; 3097403Sobrienimport java.awt.datatransfer.*; 3197403Sobrienimport java.awt.dnd.*; 3297403Sobrienimport java.io.*; 3397403Sobrien 3497403Sobrien 3597403Sobrienclass DnDTarget extends Panel implements DropTargetListener { 36169691Skan private int dragOperation = DnDConstants.ACTION_COPY | DnDConstants.ACTION_MOVE; 3797403Sobrien Color bgColor; 3897403Sobrien Color htColor; 39132720Skan 40132720Skan DnDTarget(Color bgColor, Color htColor) { 4197403Sobrien super(); 4297403Sobrien this.bgColor = bgColor; 4397403Sobrien this.htColor = htColor; 4497403Sobrien setBackground(bgColor); 4597403Sobrien setDropTarget(new DropTarget(this, this)); 4697403Sobrien } 47169691Skan 48169691Skan 49117397Skan public void dragEnter(DropTargetDragEvent e) { 50117397Skan System.out.println("[Target] dragEnter"); 51117397Skan setBackground(htColor); 52117397Skan repaint(); 53117397Skan } 54117397Skan 55117397Skan public void dragOver(DropTargetDragEvent e) { 56117397Skan System.out.println("[Target] dragOver"); 5797403Sobrien } 5897403Sobrien 5997403Sobrien public void dragExit(DropTargetEvent e) { 6097403Sobrien System.out.println("[Target] dragExit"); 6197403Sobrien setBackground(bgColor); 6297403Sobrien repaint(); 6397403Sobrien } 6497403Sobrien 6597403Sobrien public void dragScroll(DropTargetDragEvent e) { 6697403Sobrien System.out.println("[Target] dragScroll"); 6797403Sobrien } 6897403Sobrien 6997403Sobrien public void dropActionChanged(DropTargetDragEvent e) { 7097403Sobrien System.out.println("[Target] dropActionChanged"); 7197403Sobrien } 72132720Skan 73132720Skan public void drop(DropTargetDropEvent dtde) { 7497403Sobrien System.out.println("[Target] drop"); 7597403Sobrien boolean success = false; 76117397Skan if ((dtde.getDropAction() & dragOperation) == 0) { 77117397Skan dtde.rejectDrop(); 78117397Skan Label label = new Label("[no links here :) ]"); 79117397Skan label.setBackground(Color.cyan); 80117397Skan add(label); 81117397Skan } else { 82117397Skan dtde.acceptDrop(dragOperation); 83117397Skan DataFlavor[] dfs = dtde.getCurrentDataFlavors(); 8497403Sobrien if (dfs != null && dfs.length >= 1){ 8597403Sobrien Transferable transfer = dtde.getTransferable(); 86117397Skan try { 87117397Skan Button button = (Button)transfer.getTransferData(dfs[0]); 88117397Skan if( button != null ){ 89117397Skan add(button); 90117397Skan success = true; 91117397Skan } 9297403Sobrien } catch (IOException ioe) { 9397403Sobrien System.out.println(ioe.getMessage()); 9497403Sobrien return; 95117397Skan } catch (UnsupportedFlavorException ufe) { 96117397Skan System.out.println(ufe.getMessage()); 97117397Skan return; 98117397Skan } catch (Exception e) { 99117397Skan System.out.println(e.getMessage()); 100117397Skan return; 101117397Skan } 102117397Skan } 10397403Sobrien } 104132720Skan setBackground(bgColor); 105132720Skan dtde.dropComplete(success); 10697403Sobrien 107117397Skan invalidate(); 108117397Skan validate(); 109117397Skan repaint(); 110117397Skan } 111117397Skan} 11297403Sobrien