Changeset 4930 in josm for trunk/src/org


Ignore:
Timestamp:
2012-02-14T13:26:15+01:00 (13 years ago)
Author:
Don-vip
Message:

see #7386 - Speed up keyCodes retrieving (from ~50ms to 1ms only)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/preferences/PrefJPanel.java

    r4929 r4930  
    1111
    1212import java.awt.event.KeyEvent;
     13import java.lang.reflect.Field;
    1314import java.util.ArrayList;
    1415import java.util.LinkedHashMap;
     
    106107        Map<Integer, String> list = new LinkedHashMap<Integer, String>();
    107108        String unknown = Toolkit.getProperty("AWT.unknown", "Unknown");
    108         // I hate this, but I found no alternative...
    109         for (int i = 0; i < 65534; i++) {
    110             String s = KeyEvent.getKeyText(i);
    111             if (s != null && s.length() > 0 && !s.contains(unknown)) {
    112                 list.put(Integer.valueOf(i), s);
    113                 //System.out.println(i+": "+s);
     109        // Assume all known keys are declared in KeyEvent as "public static int VK_*"
     110        for (Field field : KeyEvent.class.getFields()) {
     111            if (field.getName().startsWith("VK_")) {
     112                try {
     113                    int i = field.getInt(null);
     114                    String s = KeyEvent.getKeyText(i);
     115                    if (s != null && s.length() > 0 && !s.contains(unknown)) {
     116                        list.put(Integer.valueOf(i), s);
     117                        //System.out.println(i+": "+s);
     118                    }
     119                } catch (Exception e) {
     120                    e.printStackTrace();
     121                }
    114122            }
    115123        }
Note: See TracChangeset for help on using the changeset viewer.