From 992cc296d8f812df0e68df14749b0a81d79f2a8f Mon Sep 17 00:00:00 2001
From: jvergara <jvergara@localhost>
Date: Wed, 28 Jan 2009 01:37:26 +0000
Subject: [PATCH] Add some key listeners to the different lists on the 'Browse Schema' panels.  This is done to make these panels 508 compliant by allowing the user to navigate using only the keyboard.

---
 opends/src/guitools/org/opends/guitools/controlpanel/ui/StandardAttributePanel.java   |   57 ++++++++++----
 opends/src/guitools/org/opends/guitools/controlpanel/util/ConfigFromFile.java         |    2 
 opends/src/guitools/org/opends/guitools/controlpanel/ui/MatchingRulePanel.java        |   57 ++++++++++----
 opends/src/guitools/org/opends/guitools/controlpanel/ui/StandardObjectClassPanel.java |   49 +++++++++---
 opends/src/guitools/org/opends/guitools/controlpanel/util/ConfigReader.java           |    2 
 opends/src/guitools/org/opends/guitools/controlpanel/ui/AttributeSyntaxPanel.java     |   58 ++++++++++----
 6 files changed, 159 insertions(+), 66 deletions(-)

diff --git a/opends/src/guitools/org/opends/guitools/controlpanel/ui/AttributeSyntaxPanel.java b/opends/src/guitools/org/opends/guitools/controlpanel/ui/AttributeSyntaxPanel.java
index 37d0fbb..6213564 100644
--- a/opends/src/guitools/org/opends/guitools/controlpanel/ui/AttributeSyntaxPanel.java
+++ b/opends/src/guitools/org/opends/guitools/controlpanel/ui/AttributeSyntaxPanel.java
@@ -22,7 +22,7 @@
  * CDDL HEADER END
  *
  *
- *      Copyright 2008 Sun Microsystems, Inc.
+ *      Copyright 2008-2009 Sun Microsystems, Inc.
  */
 
 package org.opends.guitools.controlpanel.ui;
@@ -31,6 +31,8 @@
 
 import java.awt.Component;
 import java.awt.GridBagConstraints;
+import java.awt.event.KeyAdapter;
+import java.awt.event.KeyEvent;
 import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
 import java.util.Comparator;
@@ -157,29 +159,34 @@
     gbc.insets.top = 10;
     add(Utilities.createScrollPane(usedByAttributes), gbc);
 
-    MouseAdapter doubleClickListener = new MouseAdapter()
+    MouseAdapter clickListener = new MouseAdapter()
     {
       public void mouseClicked(MouseEvent ev)
       {
-        if (ev.getClickCount() > 1)
+        if (ev.getClickCount() == 1)
         {
-          String o = (String)usedByAttributes.getSelectedValue();
-          if (o != null)
-          {
-            Schema schema = getInfo().getServerDescriptor().getSchema();
-            if (schema != null)
-            {
-              AttributeType attr = schema.getAttributeType(o.toLowerCase());
-              if (attr != null)
-              {
-                notifySchemaSelectionListeners(attr);
-              }
-            }
-          }
+          usedBySelected();
         }
       }
     };
-    usedByAttributes.addMouseListener(doubleClickListener);
+    usedByAttributes.addMouseListener(clickListener);
+
+    KeyAdapter keyListener = new KeyAdapter()
+    {
+      /**
+       * {@inheritDoc}
+       */
+      public void keyTyped(KeyEvent ev)
+      {
+        if ((ev.getKeyChar() == KeyEvent.VK_SPACE) ||
+            (ev.getKeyChar() == KeyEvent.VK_ENTER))
+        {
+          usedBySelected();
+        }
+      }
+    };
+    usedByAttributes.addKeyListener(keyListener);
+
     setBorder(PANEL_BORDER);
   }
 
@@ -222,4 +229,21 @@
       model.addElement(attr);
     }
   }
+
+  private void usedBySelected()
+  {
+    String o = (String)usedByAttributes.getSelectedValue();
+    if (o != null)
+    {
+      Schema schema = getInfo().getServerDescriptor().getSchema();
+      if (schema != null)
+      {
+        AttributeType attr = schema.getAttributeType(o.toLowerCase());
+        if (attr != null)
+        {
+          notifySchemaSelectionListeners(attr);
+        }
+      }
+    }
+  }
 }
diff --git a/opends/src/guitools/org/opends/guitools/controlpanel/ui/MatchingRulePanel.java b/opends/src/guitools/org/opends/guitools/controlpanel/ui/MatchingRulePanel.java
index d083f52..9372231 100644
--- a/opends/src/guitools/org/opends/guitools/controlpanel/ui/MatchingRulePanel.java
+++ b/opends/src/guitools/org/opends/guitools/controlpanel/ui/MatchingRulePanel.java
@@ -22,7 +22,7 @@
  * CDDL HEADER END
  *
  *
- *      Copyright 2008 Sun Microsystems, Inc.
+ *      Copyright 2008-2009 Sun Microsystems, Inc.
  */
 
 package org.opends.guitools.controlpanel.ui;
@@ -31,6 +31,8 @@
 
 import java.awt.Component;
 import java.awt.GridBagConstraints;
+import java.awt.event.KeyAdapter;
+import java.awt.event.KeyEvent;
 import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
 import java.util.Comparator;
@@ -167,32 +169,36 @@
     gbc.insets.top = 10;
     add(Utilities.createScrollPane(usedByAttributes), gbc);
 
-    MouseAdapter doubleClickListener = new MouseAdapter()
+    MouseAdapter clickListener = new MouseAdapter()
     {
       /**
        * {@inheritDoc}
        */
       public void mouseClicked(MouseEvent ev)
       {
-        if (ev.getClickCount() > 1)
+        if (ev.getClickCount() == 1)
         {
-          String o = (String)usedByAttributes.getSelectedValue();
-          if (o != null)
-          {
-            Schema schema = getInfo().getServerDescriptor().getSchema();
-            if (schema != null)
-            {
-              AttributeType attr = schema.getAttributeType(o.toLowerCase());
-              if (attr != null)
-              {
-                notifySchemaSelectionListeners(attr);
-              }
-            }
-          }
+          usedBySelected();
         }
       }
     };
-    usedByAttributes.addMouseListener(doubleClickListener);
+    usedByAttributes.addMouseListener(clickListener);
+
+    KeyAdapter keyListener = new KeyAdapter()
+    {
+      /**
+       * {@inheritDoc}
+       */
+      public void keyTyped(KeyEvent ev)
+      {
+        if ((ev.getKeyChar() == KeyEvent.VK_SPACE) ||
+            (ev.getKeyChar() == KeyEvent.VK_ENTER))
+        {
+          usedBySelected();
+        }
+      }
+    };
+    usedByAttributes.addKeyListener(keyListener);
     setBorder(PANEL_BORDER);
   }
 
@@ -289,4 +295,21 @@
     }
     return text;
   }
+
+  private void usedBySelected()
+  {
+    String o = (String)usedByAttributes.getSelectedValue();
+    if (o != null)
+    {
+      Schema schema = getInfo().getServerDescriptor().getSchema();
+      if (schema != null)
+      {
+        AttributeType attr = schema.getAttributeType(o.toLowerCase());
+        if (attr != null)
+        {
+          notifySchemaSelectionListeners(attr);
+        }
+      }
+    }
+  }
 }
diff --git a/opends/src/guitools/org/opends/guitools/controlpanel/ui/StandardAttributePanel.java b/opends/src/guitools/org/opends/guitools/controlpanel/ui/StandardAttributePanel.java
index 7311e87..2e64477 100644
--- a/opends/src/guitools/org/opends/guitools/controlpanel/ui/StandardAttributePanel.java
+++ b/opends/src/guitools/org/opends/guitools/controlpanel/ui/StandardAttributePanel.java
@@ -22,7 +22,7 @@
  * CDDL HEADER END
  *
  *
- *      Copyright 2008 Sun Microsystems, Inc.
+ *      Copyright 2008-2009 Sun Microsystems, Inc.
  */
 
 package org.opends.guitools.controlpanel.ui;
@@ -32,6 +32,8 @@
 import java.awt.Component;
 import java.awt.Container;
 import java.awt.GridBagConstraints;
+import java.awt.event.KeyAdapter;
+import java.awt.event.KeyEvent;
 import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
 import java.util.ArrayList;
@@ -213,32 +215,36 @@
       gbc.gridy ++;
 
       final JList list = lists[i];
-      MouseAdapter doubleClickListener = new MouseAdapter()
+      MouseAdapter clickListener = new MouseAdapter()
       {
         /**
          * {@inheritDoc}
          */
         public void mouseClicked(MouseEvent ev)
         {
-          if (ev.getClickCount() > 1)
+          if (ev.getClickCount() == 1)
           {
-            String o = (String)list.getSelectedValue();
-            if (o != null)
-            {
-              Schema schema = getInfo().getServerDescriptor().getSchema();
-              if (schema != null)
-              {
-                ObjectClass oc = schema.getObjectClass(o.toLowerCase());
-                if (oc != null)
-                {
-                  notifySchemaSelectionListeners(oc);
-                }
-              }
-            }
+            objectClassSelected(list);
           }
         }
       };
-      list.addMouseListener(doubleClickListener);
+      list.addMouseListener(clickListener);
+
+      KeyAdapter keyListener = new KeyAdapter()
+      {
+        /**
+         * {@inheritDoc}
+         */
+        public void keyTyped(KeyEvent ev)
+        {
+          if ((ev.getKeyChar() == KeyEvent.VK_SPACE) ||
+              (ev.getKeyChar() == KeyEvent.VK_ENTER))
+          {
+            objectClassSelected(list);
+          }
+        }
+      };
+      list.addKeyListener(keyListener);
     }
   }
 
@@ -400,4 +406,21 @@
     }
     return mb.toMessage();
   }
+
+  private void objectClassSelected(JList list)
+  {
+    String o = (String)list.getSelectedValue();
+    if (o != null)
+    {
+      Schema schema = getInfo().getServerDescriptor().getSchema();
+      if (schema != null)
+      {
+        ObjectClass oc = schema.getObjectClass(o.toLowerCase());
+        if (oc != null)
+        {
+          notifySchemaSelectionListeners(oc);
+        }
+      }
+    }
+  }
 }
diff --git a/opends/src/guitools/org/opends/guitools/controlpanel/ui/StandardObjectClassPanel.java b/opends/src/guitools/org/opends/guitools/controlpanel/ui/StandardObjectClassPanel.java
index 203b6a8..7bb6650 100644
--- a/opends/src/guitools/org/opends/guitools/controlpanel/ui/StandardObjectClassPanel.java
+++ b/opends/src/guitools/org/opends/guitools/controlpanel/ui/StandardObjectClassPanel.java
@@ -22,7 +22,7 @@
  * CDDL HEADER END
  *
  *
- *      Copyright 2008 Sun Microsystems, Inc.
+ *      Copyright 2008-2009 Sun Microsystems, Inc.
  */
 
 package org.opends.guitools.controlpanel.ui;
@@ -32,6 +32,8 @@
 import java.awt.Component;
 import java.awt.Container;
 import java.awt.GridBagConstraints;
+import java.awt.event.KeyAdapter;
+import java.awt.event.KeyEvent;
 import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
 import java.util.ArrayList;
@@ -225,28 +227,36 @@
       gbc.gridy ++;
 
       final JList list = lists[i];
-      MouseAdapter doubleClickListener = new MouseAdapter()
+      MouseAdapter clickListener = new MouseAdapter()
       {
         /**
          * {@inheritDoc}
          */
         public void mouseClicked(MouseEvent ev)
         {
-          if (ev.getClickCount() > 1)
+          if (ev.getClickCount() == 1)
           {
-            String o = (String)list.getSelectedValue();
-            if (o != null)
-            {
-              AttributeType attr = hmAttrs.get(o);
-              if (attr != null)
-              {
-                notifySchemaSelectionListeners(attr);
-              }
-            }
+            attrSelected(list);
           }
         }
       };
-      list.addMouseListener(doubleClickListener);
+      list.addMouseListener(clickListener);
+
+      KeyAdapter keyListener = new KeyAdapter()
+      {
+        /**
+         * {@inheritDoc}
+         */
+        public void keyTyped(KeyEvent ev)
+        {
+          if ((ev.getKeyChar() == KeyEvent.VK_SPACE) ||
+              (ev.getKeyChar() == KeyEvent.VK_ENTER))
+          {
+            attrSelected(list);
+          }
+        }
+      };
+      list.addKeyListener(keyListener);
     }
   }
 
@@ -456,4 +466,17 @@
     }
     return mb.toMessage();
   }
+
+  private void attrSelected(JList list)
+  {
+    String o = (String)list.getSelectedValue();
+    if (o != null)
+    {
+      AttributeType attr = hmAttrs.get(o);
+      if (attr != null)
+      {
+        notifySchemaSelectionListeners(attr);
+      }
+    }
+  }
 }
diff --git a/opends/src/guitools/org/opends/guitools/controlpanel/util/ConfigFromFile.java b/opends/src/guitools/org/opends/guitools/controlpanel/util/ConfigFromFile.java
index c421db5..b353c52 100644
--- a/opends/src/guitools/org/opends/guitools/controlpanel/util/ConfigFromFile.java
+++ b/opends/src/guitools/org/opends/guitools/controlpanel/util/ConfigFromFile.java
@@ -22,7 +22,7 @@
  * CDDL HEADER END
  *
  *
- *      Copyright 2008 Sun Microsystems, Inc.
+ *      Copyright 2008-2009 Sun Microsystems, Inc.
  */
 
 package org.opends.guitools.controlpanel.util;
diff --git a/opends/src/guitools/org/opends/guitools/controlpanel/util/ConfigReader.java b/opends/src/guitools/org/opends/guitools/controlpanel/util/ConfigReader.java
index 642d5cd..3b4b154 100644
--- a/opends/src/guitools/org/opends/guitools/controlpanel/util/ConfigReader.java
+++ b/opends/src/guitools/org/opends/guitools/controlpanel/util/ConfigReader.java
@@ -22,7 +22,7 @@
  * CDDL HEADER END
  *
  *
- *      Copyright 2008 Sun Microsystems, Inc.
+ *      Copyright 2008-2009 Sun Microsystems, Inc.
  */
 
 package org.opends.guitools.controlpanel.util;

--
Gitblit v1.10.0