/**/ import java.awt.*; import java.awt.dnd.*; import javax.swing.*; import javax.swing.tree.*; import java.awt.event.*; class cTree extends JTree implements Autoscroll //, DragGestureListener { JPopupMenu popup = new JPopupMenu(); public cTree() // TreeModel newModel) { //super(newModel); //setRootVisible(false); addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent e) { //if (e.isPopupTrigger()) // Works only on mouse released on Windows. if (e.getModifiers() == InputEvent.BUTTON3_MASK) { int row = getClosestRowForLocation(e.getX(), e.getY()); if (!isRowSelected(row)) setSelectionRow(row); popup.show((JComponent) e.getSource(), e.getX(), e.getY()); } } }); } /* public void dragGestureRecognized(DragGestureEvent dge) { System.out.println("DGFGDFJDFJGDSFGJSDFGJDSFGJSDFGJF ------------------ " + dge); } */ protected void processKeyEvent(java.awt.event.KeyEvent e) { //System.out.println("KEY PRESSED"); Globals.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); } //@Override //public void mouseClicked(java.awt.event.MouseEvent e) { // // if (SwingUtilities.isRightMouseButton(e)) { // // int row = getClosestRowForLocation(e.getX(), e.getY()); // setSelectionRow(row); // popupMenu.show(e.getComponent(), e.getX(), e.getY()); // } //} // 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); } /**/ } /**/