package leaf.ui; import java.awt.Insets; import java.awt.Point; import java.awt.Rectangle; import java.awt.dnd.DropTarget; import java.awt.dnd.DropTargetDragEvent; import java.awt.dnd.DropTargetDropEvent; import java.awt.dnd.DropTargetEvent; import java.awt.dnd.DropTargetListener; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.TreeModel; import javax.swing.tree.TreePath; import com.evolute.entity.evo.EvoDataException; import com.evolute.utils.error.ErrorLogger; import siprp.data.outer.HsRiscoData; import siprp.data.outer.HsRiscoMedidaData; import siprp.data.outer.HsRiscoTemaData; public abstract class DraggableLeafTree extends LeafTree { private static final long serialVersionUID = 1L; public DraggableLeafTree( TreeModel model ) { super(model); setDragEnabled( true ); setAutoscrolls( true ); setDropTarget(); } public abstract void setDropTarget( ); public void autoscroll( Point cursorLocation ) { Insets insets = getAutoscrollInsets(); Rectangle outer = getVisibleRect(); Rectangle inner = new Rectangle( outer.x + insets.left, outer.y + insets.top, outer.width - ( insets.left+insets.right ), outer.height - ( insets.top+insets.bottom ) ); if ( !inner.contains(cursorLocation ) ) { Rectangle scrollRect = new Rectangle( cursorLocation.x - insets.left, cursorLocation.y - insets.top, insets.left + insets.right, insets.top + insets.bottom ); scrollRectToVisible(scrollRect); } } public Insets getAutoscrollInsets() { return new Insets( 20, 20, 20, 20 ); } public Object getSelectedObject() { DefaultMutableTreeNode node = getSelectedNode(); return node == null ? null : node.getUserObject(); } public DefaultMutableTreeNode getSelectedNode() { TreePath path = getSelectionPath(); return path == null ? null : (DefaultMutableTreeNode) path.getLastPathComponent(); } }