/**/ import java.awt.*; import java.awt.dnd.*; import javax.swing.JTree; import javax.swing.tree.TreeModel; class cTree extends JTree implements Autoscroll //, DragGestureListener { public cTree(TreeModel newModel) { super(newModel); //setRootVisible(false); } /* public void dragGestureRecognized(DragGestureEvent dge) { System.out.println("DGFGDFJDFJGDSFGJSDFGJDSFGJSDFGJF ------------------ " + dge); } */ protected void processKeyEvent(java.awt.event.KeyEvent e) { //System.out.println("KEY PRESSED"); CameraPane.theRenderer.processKeyEvent(e); } private int margin = 12; // public AutoScrollingJTree(TreeModel tm) { // super(tm); // } public void autoscroll(Point p) { int realrow = getRowForLocation(p.x, p.y); Rectangle outer = getBounds(); realrow = (p.y + outer.y <= margin ? realrow < 1 ? 0 : realrow - 1 : realrow < getRowCount() - 1 ? realrow + 1 : realrow); scrollRowToVisible(realrow); } public Insets getAutoscrollInsets() { Rectangle outer = getBounds(); Rectangle inner = getParent().getBounds(); return new Insets(inner.y - outer.y + margin, inner.x - outer.x + margin, outer.height - inner.height - inner.y + outer.y + margin, outer.width - inner.width - inner.x + outer.x + margin); } // Use this method if you want to see the boundaries of the // autoscroll active region /* bug public void paintComponent(Graphics g) { super.paintComponent(g); Rectangle outer = getBounds(); Rectangle inner = getParent().getBounds(); g.setColor(Color.red); g.drawRect(-outer.x + 12, -outer.y + 12, inner.width - 24, inner.height - 24); } /**/ } /**/