Merge branch 'master' of https://source.jalview.org/git/jalviewjs.git
[jalviewjs.git] / site / j2s / swingjs / plaf / LazyActionMap.java
index 494d645..3051d1e 100644 (file)
-/*\r
- * Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved.\r
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.\r
- *\r
- * This code is free software; you can redistribute it and/or modify it\r
- * under the terms of the GNU General Public License version 2 only, as\r
- * published by the Free Software Foundation.  Oracle designates this\r
- * particular file as subject to the "Classpath" exception as provided\r
- * by Oracle in the LICENSE file that accompanied this code.\r
- *\r
- * This code is distributed in the hope that it will be useful, but WITHOUT\r
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or\r
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License\r
- * version 2 for more details (a copy is included in the LICENSE file that\r
- * accompanied this code).\r
- *\r
- * You should have received a copy of the GNU General Public License version\r
- * 2 along with this work; if not, write to the Free Software Foundation,\r
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.\r
- *\r
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA\r
- * or visit www.oracle.com if you need additional information or have any\r
- * questions.\r
- */\r
-package swingjs.plaf;\r
-\r
-import jsjavax.swing.Action;\r
-import jsjavax.swing.ActionMap;\r
-import jsjavax.swing.JComponent;\r
-import jsjavax.swing.SwingUtilities;\r
-import jsjavax.swing.UIManager;\r
-import jsjavax.swing.plaf.ActionMapUIResource;\r
-\r
-/**\r
- * An ActionMap that populates its contents as necessary. The\r
- * contents are populated by invoking the <code>loadActionMap</code>\r
- * method on the passed in Object.\r
- *\r
- * @author Scott Violet\r
- */\r
-class LazyActionMap extends ActionMapUIResource {\r
-    /**\r
-     * Object to invoke <code>loadActionMap</code> on. This may be\r
-     * a Class object.\r
-     */\r
-    private transient Object _loader;\r
-\r
-    /**\r
-     * Installs an ActionMap that will be populated by invoking the\r
-     * <code>loadActionMap</code> method on the specified Class\r
-     * when necessary.\r
-     * <p>\r
-     * This should be used if the ActionMap can be shared.\r
-     *\r
-     * @param c JComponent to install the ActionMap on.\r
-     * @param loaderClass Class object that gets loadActionMap invoked\r
-     *                    on.\r
-     * @param defaultsKey Key to use to defaults table to check for\r
-     *        existing map and what resulting Map will be registered on.\r
-     */\r
-    static void installLazyActionMap(JComponent c, Class loaderClass,\r
-                                     String defaultsKey) {\r
-        ActionMap map = (ActionMap)UIManager.get(defaultsKey);\r
-        if (map == null) {\r
-            map = new LazyActionMap(loaderClass);\r
-//            UIManager.getLookAndFeelDefaults().put(defaultsKey, map);\r
-        }\r
-        SwingUtilities.replaceUIActionMap(c, map);\r
-    }\r
-\r
-    /**\r
-     * Returns an ActionMap that will be populated by invoking the\r
-     * <code>loadActionMap</code> method on the specified Class\r
-     * when necessary.\r
-     * <p>\r
-     * This should be used if the ActionMap can be shared.\r
-     *\r
-     * @param c JComponent to install the ActionMap on.\r
-     * @param loaderClass Class object that gets loadActionMap invoked\r
-     *                    on.\r
-     * @param defaultsKey Key to use to defaults table to check for\r
-     *        existing map and what resulting Map will be registered on.\r
-     */\r
-    static ActionMap getActionMap(Class loaderClass,\r
-                                  String defaultsKey) {\r
-        ActionMap map = (ActionMap)UIManager.get(defaultsKey);\r
-        if (map == null) {\r
-            map = new LazyActionMap(loaderClass);\r
-//SwingJS temp            UIManager.getLookAndFeelDefaults().put(defaultsKey, map);\r
-        }\r
-        return map;\r
-    }\r
-\r
-\r
-    private LazyActionMap(Class loader) {\r
-        _loader = loader;\r
-    }\r
-\r
-    public void put(Action action) {\r
-        put(action.getValue(Action.NAME), action);\r
-    }\r
-\r
-    public void put(Object key, Action action) {\r
-        loadIfNecessary();\r
-        super.put(key, action);\r
-    }\r
-\r
-    public Action get(Object key) {\r
-        loadIfNecessary();\r
-        return super.get(key);\r
-    }\r
-\r
-    public void remove(Object key) {\r
-        loadIfNecessary();\r
-        super.remove(key);\r
-    }\r
-\r
-    public void clear() {\r
-        loadIfNecessary();\r
-        super.clear();\r
-    }\r
-\r
-    public Object[] keys() {\r
-        loadIfNecessary();\r
-        return super.keys();\r
-    }\r
-\r
-    public int size() {\r
-        loadIfNecessary();\r
-        return super.size();\r
-    }\r
-\r
-    public Object[] allKeys() {\r
-        loadIfNecessary();\r
-        return super.allKeys();\r
-    }\r
-\r
-    public void setParent(ActionMap map) {\r
-        loadIfNecessary();\r
-        super.setParent(map);\r
-    }\r
-\r
-    private void loadIfNecessary() {\r
-        if (_loader != null) {\r
-               /**\r
-                * @j2sNative\r
-                * \r
-                * this._loader.loadActionMap(this);\r
-                * this._loader = null;\r
-                */\r
-               {}\r
-//            Object loader = _loader;\r
-//\r
-//             _loader = null;\r
-//            Class klass = (Class)loader;\r
-//            try {\r
-//                Method method = klass.getDeclaredMethod("loadActionMap",\r
-//                                      new Class[] { LazyActionMap.class });\r
-//                method.invoke(klass, new Object[] { this });\r
-//            } catch (NoSuchMethodException nsme) {\r
-//                assert false : "LazyActionMap unable to load actions " +\r
-//                        klass;\r
-//            } catch (IllegalAccessException iae) {\r
-//                assert false : "LazyActionMap unable to load actions " +\r
-//                        iae;\r
-//            } catch (InvocationTargetException ite) {\r
-//                assert false : "LazyActionMap unable to load actions " +\r
-//                        ite;\r
-//            } catch (IllegalArgumentException iae) {\r
-//                assert false : "LazyActionMap unable to load actions " +\r
-//                        iae;\r
-//            }\r
-        }\r
-    }\r
-}\r
+/*
+ * Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package swingjs.plaf;
+
+import jsjavax.swing.Action;
+import jsjavax.swing.ActionMap;
+import jsjavax.swing.JComponent;
+import jsjavax.swing.SwingUtilities;
+import jsjavax.swing.UIManager;
+import jsjavax.swing.plaf.ActionMapUIResource;
+
+/**
+ * An ActionMap that populates its contents as necessary. The
+ * contents are populated by invoking the <code>loadActionMap</code>
+ * method on the passed in Object.
+ *
+ * @author Scott Violet
+ */
+class LazyActionMap extends ActionMapUIResource {
+    /**
+     * Object to invoke <code>loadActionMap</code> on. This may be
+     * a Class object.
+     */
+    private transient Object _loader;
+
+    /**
+     * Installs an ActionMap that will be populated by invoking the
+     * <code>loadActionMap</code> method on the specified Class
+     * when necessary.
+     * <p>
+     * This should be used if the ActionMap can be shared.
+     *
+     * @param c JComponent to install the ActionMap on.
+     * @param loaderClass Class object that gets loadActionMap invoked
+     *                    on.
+     * @param defaultsKey Key to use to defaults table to check for
+     *        existing map and what resulting Map will be registered on.
+     */
+    static void installLazyActionMap(JComponent c, Class loaderClass,
+                                     String defaultsKey) {
+        ActionMap map = (ActionMap)UIManager.get(defaultsKey);
+        if (map == null) {
+            map = new LazyActionMap(loaderClass);
+//            UIManager.getLookAndFeelDefaults().put(defaultsKey, map);
+        }
+        SwingUtilities.replaceUIActionMap(c, map);
+    }
+
+    /**
+     * Returns an ActionMap that will be populated by invoking the
+     * <code>loadActionMap</code> method on the specified Class
+     * when necessary.
+     * <p>
+     * This should be used if the ActionMap can be shared.
+     *
+     * @param c JComponent to install the ActionMap on.
+     * @param loaderClass Class object that gets loadActionMap invoked
+     *                    on.
+     * @param defaultsKey Key to use to defaults table to check for
+     *        existing map and what resulting Map will be registered on.
+     */
+    static ActionMap getActionMap(Class loaderClass,
+                                  String defaultsKey) {
+        ActionMap map = (ActionMap)UIManager.get(defaultsKey);
+        if (map == null) {
+            map = new LazyActionMap(loaderClass);
+//SwingJS temp            UIManager.getLookAndFeelDefaults().put(defaultsKey, map);
+        }
+        return map;
+    }
+
+
+    private LazyActionMap(Class loader) {
+        _loader = loader;
+    }
+
+    public void put(Action action) {
+        put(action.getValue(Action.NAME), action);
+    }
+
+    public void put(Object key, Action action) {
+        loadIfNecessary();
+        super.put(key, action);
+    }
+
+    public Action get(Object key) {
+        loadIfNecessary();
+        return super.get(key);
+    }
+
+    public void remove(Object key) {
+        loadIfNecessary();
+        super.remove(key);
+    }
+
+    public void clear() {
+        loadIfNecessary();
+        super.clear();
+    }
+
+    public Object[] keys() {
+        loadIfNecessary();
+        return super.keys();
+    }
+
+    public int size() {
+        loadIfNecessary();
+        return super.size();
+    }
+
+    public Object[] allKeys() {
+        loadIfNecessary();
+        return super.allKeys();
+    }
+
+    public void setParent(ActionMap map) {
+        loadIfNecessary();
+        super.setParent(map);
+    }
+
+    private void loadIfNecessary() {
+        if (_loader != null) {
+               /**
+                * @j2sNative
+                * 
+                * this._loader.loadActionMap(this);
+                * this._loader = null;
+                */
+               {}
+//            Object loader = _loader;
+//
+//             _loader = null;
+//            Class klass = (Class)loader;
+//            try {
+//                Method method = klass.getDeclaredMethod("loadActionMap",
+//                                      new Class[] { LazyActionMap.class });
+//                method.invoke(klass, new Object[] { this });
+//            } catch (NoSuchMethodException nsme) {
+//                assert false : "LazyActionMap unable to load actions " +
+//                        klass;
+//            } catch (IllegalAccessException iae) {
+//                assert false : "LazyActionMap unable to load actions " +
+//                        iae;
+//            } catch (InvocationTargetException ite) {
+//                assert false : "LazyActionMap unable to load actions " +
+//                        ite;
+//            } catch (IllegalArgumentException iae) {
+//                assert false : "LazyActionMap unable to load actions " +
+//                        iae;
+//            }
+        }
+    }
+}