1486 /** 1487 * Listener for cursor keys. 1488 */ 1489 protected class ArrowButtonListener extends MouseAdapter 1490 { 1491 // Because we are handling both mousePressed and Actions 1492 // we need to make sure we don't fire under both conditions. 1493 // (keyfocus on scrollbars causes action without mousePress 1494 boolean handledEvent; 1495 1496 public void mousePressed(MouseEvent e) { 1497 if(!scrollbar.isEnabled()) { return; } 1498 // not an unmodified left mouse button 1499 //if(e.getModifiers() != InputEvent.BUTTON1_MASK) {return; } 1500 if( ! SwingUtilities.isLeftMouseButton(e)) { return; } 1501 1502 int direction = (e.getSource() == incrButton) ? 1 : -1; 1503 1504 scrollByUnit(direction); 1505 scrollTimer.stop(); 1506 scrollListener.setDirection(direction); 1507 scrollListener.setScrollByBlock(false); 1508 scrollTimer.start(); 1509 1510 handledEvent = true; 1511 if (!scrollbar.hasFocus() && scrollbar.isRequestFocusEnabled()) { 1512 scrollbar.requestFocus(); 1513 } 1514 } 1515 1516 public void mouseReleased(MouseEvent e) { 1517 scrollTimer.stop(); 1518 handledEvent = false; 1519 scrollbar.setValueIsAdjusting(false); 1520 } 1521 } 1522 1523 1524 /** 1525 * Listener for scrolling events initiated in the 1526 * <code>ScrollPane</code>. 1527 */ 1528 protected class ScrollListener implements ActionListener 1529 { 1530 int direction = +1; 1531 boolean useBlockIncrement; 1532 | 1486 /** 1487 * Listener for cursor keys. 1488 */ 1489 protected class ArrowButtonListener extends MouseAdapter 1490 { 1491 // Because we are handling both mousePressed and Actions 1492 // we need to make sure we don't fire under both conditions. 1493 // (keyfocus on scrollbars causes action without mousePress 1494 boolean handledEvent; 1495 1496 public void mousePressed(MouseEvent e) { 1497 if(!scrollbar.isEnabled()) { return; } 1498 // not an unmodified left mouse button 1499 //if(e.getModifiers() != InputEvent.BUTTON1_MASK) {return; } 1500 if( ! SwingUtilities.isLeftMouseButton(e)) { return; } 1501 1502 int direction = (e.getSource() == incrButton) ? 1 : -1; 1503 1504 scrollByUnit(direction); 1505 scrollTimer.stop(); 1506 if (SwingUtilities.windowForComponent((Component)e.getSource()) 1507 .isFocused()){ 1508 scrollListener.setDirection(direction); 1509 scrollListener.setScrollByBlock(false); 1510 scrollTimer.start(); 1511 1512 handledEvent = true; 1513 if (!scrollbar.hasFocus() && scrollbar.isRequestFocusEnabled()) { 1514 scrollbar.requestFocus(); 1515 } 1516 } else { 1517 scrollbar.setValueIsAdjusting(false); 1518 ButtonModel model = ((AbstractButton)e.getSource()).getModel(); 1519 if(model != null){ 1520 model.setPressed(false); 1521 model.setRollover(false); 1522 } 1523 } 1524 } 1525 1526 public void mouseReleased(MouseEvent e) { 1527 scrollTimer.stop(); 1528 handledEvent = false; 1529 scrollbar.setValueIsAdjusting(false); 1530 } 1531 } 1532 1533 1534 /** 1535 * Listener for scrolling events initiated in the 1536 * <code>ScrollPane</code>. 1537 */ 1538 protected class ScrollListener implements ActionListener 1539 { 1540 int direction = +1; 1541 boolean useBlockIncrement; 1542 |