1 19 20 21 22 30 31 package org.netbeans.modules.xml.schema.abe.palette; 32 33 import java.awt.datatransfer.DataFlavor ; 34 import java.awt.datatransfer.Transferable ; 35 import java.awt.datatransfer.UnsupportedFlavorException ; 36 import java.awt.dnd.DropTargetDragEvent ; 37 import java.awt.dnd.DropTargetDropEvent ; 38 import java.io.IOException ; 39 import org.openide.nodes.Node; 40 41 45 public class DnDHelper { 46 47 48 public static enum PaletteItem{ 49 ELEMENT, 50 ATTRIBUTE, 51 SEQUENCE, 52 CHOICE, 53 ALL, 54 COMPLEXTYPE, 55 UNKNOWN 56 } 57 58 59 public DnDHelper() { 60 } 61 62 63 public static PaletteItem getDraggedPaletteItem(Transferable trans){ 64 for(DataFlavor flav: trans.getTransferDataFlavors()){ 65 Class repClass = flav.getRepresentationClass(); 66 Object data = null; 67 try { 68 data = trans.getTransferData(flav); 69 } catch (UnsupportedFlavorException ex) { 70 continue; 71 } catch (IOException ex) { 72 continue; 73 } 74 if (Node.class.isAssignableFrom(repClass)){ 75 String name = ((Node)data).getName(); 76 return getPaletteItem(name); 77 } 78 } 79 return PaletteItem.UNKNOWN; 80 } 81 82 public static PaletteItem getDraggedPaletteItem(DropTargetDragEvent event) { 83 return getDraggedPaletteItem(event.getTransferable()); 84 } 85 86 public static PaletteItem getDraggedPaletteItem(DropTargetDropEvent event){ 87 return getDraggedPaletteItem(event.getTransferable()); 88 } 89 90 private static DnDHelper.PaletteItem getPaletteItem(String name) { 91 if(name.equalsIgnoreCase("attribute")) 92 return PaletteItem.ATTRIBUTE; 93 if(name.equalsIgnoreCase("element")) 94 return PaletteItem.ELEMENT; 95 if(name.equalsIgnoreCase("sequence")) 96 return PaletteItem.SEQUENCE; 97 if(name.equalsIgnoreCase("choice")) 98 return PaletteItem.CHOICE; 99 if(name.equalsIgnoreCase("all")) 100 return PaletteItem.ALL; 101 if(name.equalsIgnoreCase("complextype")) 102 return PaletteItem.COMPLEXTYPE; 103 return PaletteItem.UNKNOWN; 104 } 105 106 public static boolean isCompositor(DnDHelper.PaletteItem paletteItem){ 107 switch(paletteItem){ 108 case SEQUENCE: 109 case CHOICE: 110 case ALL: 111 return true; 112 default: 113 return false; 114 } 115 } 116 117 } 118 | Popular Tags |