828
829 public void focusLost(final FocusEvent e) {
830 adjustPaintingRectForFocusRing(e);
831 }
832
833 void adjustPaintingRectForFocusRing(final FocusEvent e) {
834 final JTabbedPane pane = (JTabbedPane)e.getSource();
835 final int tabCount = pane.getTabCount();
836 final int selectedIndex = pane.getSelectedIndex();
837
838 if (selectedIndex != -1 && tabCount > 0 && tabCount == rects.length) {
839 sWorkingRect.setBounds(rects[selectedIndex]);
840 sWorkingRect.grow(4, 4);
841 pane.repaint(sWorkingRect);
842 }
843 }
844
845 boolean isDefaultFocusReceiver(final JComponent component) {
846 if (isDefaultFocusReceiver == null) {
847 Component defaultFocusReceiver = KeyboardFocusManager.getCurrentKeyboardFocusManager().getDefaultFocusTraversalPolicy().getDefaultComponent(getTopLevelFocusCycleRootAncestor(component));
848 isDefaultFocusReceiver = new Boolean(defaultFocusReceiver != null && defaultFocusReceiver.equals(component));
849 }
850 return isDefaultFocusReceiver.booleanValue();
851 }
852
853 Container getTopLevelFocusCycleRootAncestor(Container container) {
854 Container ancestor;
855 while ((ancestor = container.getFocusCycleRootAncestor()) != null) {
856 container = ancestor;
857 }
858 return container;
859 }
860 }
861
862 class MouseHandler extends MouseInputAdapter implements ActionListener {
863
864 int trackingTab = -3;
865 private final Timer popupTimer = new Timer(500, this);
866
867 MouseHandler() {
868 popupTimer.setRepeats(false);
|
828
829 public void focusLost(final FocusEvent e) {
830 adjustPaintingRectForFocusRing(e);
831 }
832
833 void adjustPaintingRectForFocusRing(final FocusEvent e) {
834 final JTabbedPane pane = (JTabbedPane)e.getSource();
835 final int tabCount = pane.getTabCount();
836 final int selectedIndex = pane.getSelectedIndex();
837
838 if (selectedIndex != -1 && tabCount > 0 && tabCount == rects.length) {
839 sWorkingRect.setBounds(rects[selectedIndex]);
840 sWorkingRect.grow(4, 4);
841 pane.repaint(sWorkingRect);
842 }
843 }
844
845 boolean isDefaultFocusReceiver(final JComponent component) {
846 if (isDefaultFocusReceiver == null) {
847 Component defaultFocusReceiver = KeyboardFocusManager.getCurrentKeyboardFocusManager().getDefaultFocusTraversalPolicy().getDefaultComponent(getTopLevelFocusCycleRootAncestor(component));
848 isDefaultFocusReceiver = defaultFocusReceiver != null && defaultFocusReceiver.equals(component);
849 }
850 return isDefaultFocusReceiver.booleanValue();
851 }
852
853 Container getTopLevelFocusCycleRootAncestor(Container container) {
854 Container ancestor;
855 while ((ancestor = container.getFocusCycleRootAncestor()) != null) {
856 container = ancestor;
857 }
858 return container;
859 }
860 }
861
862 class MouseHandler extends MouseInputAdapter implements ActionListener {
863
864 int trackingTab = -3;
865 private final Timer popupTimer = new Timer(500, this);
866
867 MouseHandler() {
868 popupTimer.setRepeats(false);
|