Changeset 4930 in josm


Ignore:
Timestamp:
Feb 14, 2012 1:26:15 PM (16 months 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.