1 11 package org.eclipse.jdt.internal.ui.typehierarchy; 12 13 import org.eclipse.swt.dnd.DND; 14 import org.eclipse.swt.dnd.DropTargetEvent; 15 16 import org.eclipse.jface.viewers.AbstractTreeViewer; 17 import org.eclipse.jface.viewers.ISelection; 18 19 import org.eclipse.jdt.core.IJavaElement; 20 21 import org.eclipse.jdt.internal.ui.packageview.SelectionTransferDropAdapter; 22 import org.eclipse.jdt.internal.ui.util.OpenTypeHierarchyUtil; 23 import org.eclipse.jdt.internal.ui.util.SelectionUtil; 24 25 public class TypeHierarchyTransferDropAdapter extends SelectionTransferDropAdapter { 26 27 private static final int OPERATION = DND.DROP_LINK; 28 private TypeHierarchyViewPart fTypeHierarchyViewPart; 29 30 public TypeHierarchyTransferDropAdapter(TypeHierarchyViewPart viewPart, AbstractTreeViewer viewer) { 31 super(viewer); 32 setFullWidthMatchesItem(false); 33 fTypeHierarchyViewPart= viewPart; 34 } 35 36 public void validateDrop(Object target, DropTargetEvent event, int operation) { 37 event.detail= DND.DROP_NONE; 38 initializeSelection(); 39 if (target != null){ 40 super.validateDrop(target, event, operation); 41 return; 42 } 43 if (getInputElement(getSelection()) != null) 44 event.detail= TypeHierarchyTransferDropAdapter.OPERATION; 45 } 46 47 50 public boolean isEnabled(DropTargetEvent event) { 51 return true; 52 } 53 54 public void drop(Object target, DropTargetEvent event) { 55 if (target != null || event.detail != TypeHierarchyTransferDropAdapter.OPERATION){ 56 super.drop(target, event); 57 return; 58 } 59 IJavaElement input= getInputElement(getSelection()); 60 fTypeHierarchyViewPart.setInputElement(input); 61 } 62 63 private static IJavaElement getInputElement(ISelection selection) { 64 Object single= SelectionUtil.getSingleElement(selection); 65 if (single == null) 66 return null; 67 IJavaElement[] candidates= OpenTypeHierarchyUtil.getCandidates(single); 68 if (candidates != null && candidates.length > 0) 69 return candidates[0]; 70 return null; 71 } 72 } 73 | Popular Tags |