|
/**/
|
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);
|
}
|
/**/
|
}
|
/**/
|