Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-4492717

LayoutFocusTraversalPolicy.accept() works incorrectly

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Duplicate
    • Icon: P3 P3
    • None
    • 1.4.0
    • client-libs
    • None



      Name: asR10047 Date: 08/16/2001


      Since JDK-Merlin build b75 LayoutFocusTraversalPolicy.accept()
      does not take into an account whether InputMap is null, empty or
      non-empty. It seems this is an effect of fix for 4482235.

      Here is the example demonstrating the bug:
      ------------------ -----------------
      import java.awt.*;
      import javax.swing.*;

      public class LayoutFocusTraversalPolicyTest {
          public static void main(String[] argv) {
              TestPolicy policy = new TestPolicy();
              Component comp = new TestComponent(true, true, true, true, 0);
              System.out.println(" InputMap is null " + policy.accept( comp));
              comp = new TestComponent(true, true, true, true, 1);
              System.out.println(" InputMap is empty " + policy.accept( comp));
              comp = new TestComponent(true, true, true, true, 2);
              System.out.println(" InputMap is not empty " + policy.accept( comp));
              System.exit(0);
          }
      }

      class TestPolicy extends LayoutFocusTraversalPolicy {
          public boolean accept(Component aComponent) {
              return super.accept(aComponent);
          }

      }

      class TestComponent extends JComponent {
           private boolean isDispl;

          TestComponent(boolean displ, boolean vis, boolean en, boolean foc,
                        int inpMap) {
              super();
              isDispl = displ;
              setVisible(vis);
              if (en) {
                  enable();
              } else {
                  disable();
              }
              setFocusable(foc);

              switch (inpMap) {
                  case 0: // InputMap is null
                      setInputMap(WHEN_FOCUSED, (InputMap)null);
                      break;
                  case 1: // empty InputMap
                      setInputMap(WHEN_FOCUSED, new InputMap());
                      break;
                  case 2:
                      InputMap map = new InputMap();
                      map.put(KeyStroke.getKeyStroke('a'), "a");
                      setInputMap(WHEN_FOCUSED, map);
                      break;
              }
          }

          TestComponent(boolean displ, boolean vis, boolean en, boolean foc) {
              this(displ, vis, en, foc, 2);
          }

          public boolean isDisplayable() {
              return isDispl;
          }
      }

      -------------- Output from the test -----------------
      /set/jdk-builds/JDK1.4.0beta-b72/solaris/bin/java LayoutFocusTraversalPolicyTest
       InputMap is null false
       InputMap is empty false
       InputMap is not empty true

      /set/jdk-builds/JDK1.4.0beta-b75/solaris/bin/java LayoutFocusTraversalPolicyTest
       InputMap is null true
       InputMap is empty true
       InputMap is not empty true

      ------------------------------------------------------

      ======================================================================

            svioletsunw Scott Violet (Inactive)
            anssunw Ans Ans (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: