summaryrefslogtreecommitdiff
path: root/java/awt/KeyboardFocusManager.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/awt/KeyboardFocusManager.java')
-rw-r--r--java/awt/KeyboardFocusManager.java42
1 files changed, 41 insertions, 1 deletions
diff --git a/java/awt/KeyboardFocusManager.java b/java/awt/KeyboardFocusManager.java
index b3b317046..f64618477 100644
--- a/java/awt/KeyboardFocusManager.java
+++ b/java/awt/KeyboardFocusManager.java
@@ -287,7 +287,7 @@ public abstract class KeyboardFocusManager
KeyboardFocusManager manager;
if (m == null)
- manager = new DefaultKeyboardFocusManager ();
+ manager = createFocusManager();
else
manager = m;
@@ -295,6 +295,46 @@ public abstract class KeyboardFocusManager
}
/**
+ * Creates a KeyboardFocusManager. The exact class is determined by the
+ * system property 'gnu.java.awt.FocusManager'. If this is not set,
+ * we default to DefaultKeyboardFocusManager.
+ */
+ private static KeyboardFocusManager createFocusManager()
+ {
+ String fmClassName = System.getProperty("gnu.java.awt.FocusManager",
+ "java.awt.DefaultKeyboardFocusManager");
+ try
+ {
+ Class fmClass = Class.forName(fmClassName);
+ KeyboardFocusManager fm = (KeyboardFocusManager) fmClass.newInstance();
+ return fm;
+ }
+ catch (ClassNotFoundException ex)
+ {
+ System.err.println("The class " + fmClassName + " cannot be found.");
+ System.err.println("Check the setting of the system property");
+ System.err.println("gnu.java.awt.FocusManager");
+ return null;
+ }
+ catch (InstantiationException ex)
+ {
+ System.err.println("The class " + fmClassName + " cannot be");
+ System.err.println("instantiated.");
+ System.err.println("Check the setting of the system property");
+ System.err.println("gnu.java.awt.FocusManager");
+ return null;
+ }
+ catch (IllegalAccessException ex)
+ {
+ System.err.println("The class " + fmClassName + " cannot be");
+ System.err.println("accessed.");
+ System.err.println("Check the setting of the system property");
+ System.err.println("gnu.java.awt.FocusManager");
+ return null;
+ }
+ }
+
+ /**
* Retrieve the {@link Component} that has the keyboard focus, or
* null if the focus owner was not set by a thread in the current
* {@link java.lang.ThreadGroup}.