20 package net.sf.gridarta.gui.mapmenu;
22 import java.awt.Container;
23 import java.awt.Dimension;
24 import java.awt.Insets;
25 import java.awt.Point;
26 import java.awt.Rectangle;
27 import java.awt.dnd.Autoscroll;
28 import javax.swing.JTree;
29 import javax.swing.JViewport;
30 import javax.swing.SwingConstants;
31 import javax.swing.tree.TreeModel;
32 import org.jetbrains.annotations.NotNull;
33 import org.jetbrains.annotations.Nullable;
64 if (viewport !=
null) {
65 final Dimension size = getSize();
66 final Rectangle viewRectangle = viewport.getViewRect();
67 insets.top += viewRectangle.y;
68 insets.left += viewRectangle.x;
69 insets.bottom += size.height - (viewRectangle.y + viewRectangle.height);
70 insets.right += size.width - (viewRectangle.x + viewRectangle.width);
76 public void autoscroll(@NotNull
final Point cursorLocn) {
78 if (viewport ==
null) {
83 final Rectangle bounds = getBounds();
84 final Rectangle viewRectangle = viewport.getViewRect();
85 if (cursorLocn.x < insets.left) {
86 viewRectangle.x -= getScrollableUnitIncrement(viewRectangle, SwingConstants.HORIZONTAL, -1);
87 }
else if (cursorLocn.x > bounds.width - insets.right) {
88 viewRectangle.x += getScrollableUnitIncrement(viewRectangle, SwingConstants.HORIZONTAL, 1);
90 if (cursorLocn.y < insets.top) {
91 viewRectangle.y -= getScrollableUnitIncrement(viewRectangle, SwingConstants.VERTICAL, -1);
92 }
else if (cursorLocn.y > bounds.height - insets.bottom) {
93 viewRectangle.y += getScrollableUnitIncrement(viewRectangle, SwingConstants.VERTICAL, 1);
95 scrollRectToVisible(viewRectangle);
104 final Container parent = getParent();
105 return parent instanceof JViewport ? (JViewport) parent :
null;