source: trunk/quest-misc/src/main/java/de/ugoe/cs/tasktree/keyboardmaps/VirtualKeySynonyms.java @ 558

Last change on this file since 558 was 558, checked in by pharms, 12 years ago
  • adapted to new coding style in quest
File size: 2.3 KB
Line 
1// Module    : $RCSfile: VirtualKeySynonyms.java,v $
2// Version   : $Revision: 0.0 $  $Author: pharms $  $Date: 12.07.2012 $
3// Project   : KeyboardMaps
4// Creation  : 2012 by pharms
5// Copyright : Patrick Harms, 2012
6
7package de.ugoe.cs.tasktree.keyboardmaps;
8
9import java.util.ArrayList;
10import java.util.HashMap;
11import java.util.List;
12import java.util.Map;
13import java.util.logging.Logger;
14
15/**
16 * TODO comment
17 *
18 * @version $Revision: $ $Date: 12.07.2012$
19 * @author 2012, last modified by $Author: pharms$
20 */
21class VirtualKeySynonyms {
22   
23    /** */
24    private static Logger LOG = Logger.getLogger(KeyboardMap.class.getName());
25
26    /** */
27    private Map<Integer, List<VirtualKey>> synonyms = new HashMap<Integer, List<VirtualKey>>();
28
29    /** */
30    private Map<VirtualKey, Integer> keyIds = new HashMap<VirtualKey, Integer>();
31
32    /**
33     * TODO: comment
34     *
35     * @param keyId
36     * @param virtualKey
37     */
38    public void add(int keyId, VirtualKey virtualKey) {
39        List<VirtualKey> synonymList = synonyms.get(keyId);
40
41        if (synonymList == null) {
42            synonymList = new ArrayList<VirtualKey>();
43            synonyms.put(keyId, synonymList);
44        }
45
46        if (!synonymList.contains(virtualKey)) {
47            // ensure that the latest determined virtual keys are considered first
48            synonymList.add(0, virtualKey);
49        }
50
51        Integer existingKeyId = keyIds.get(virtualKey);
52
53        if ((existingKeyId != null) && (existingKeyId != keyId)) {
54            LOG.finest("virtual key " + virtualKey +
55                       " is mapped to more than one key id (current is " + existingKeyId +
56                       ", new is " + keyId + "). New key id will be used (" + keyId + ").");
57        }
58
59        keyIds.put(virtualKey, keyId);
60    }
61
62    /**
63   *
64   */
65    public boolean containsKey(int keyId) {
66        return synonyms.containsKey(keyId);
67    }
68
69    /**
70     * TODO: comment
71     *
72     * @param keyId
73     * @return
74     */
75    public VirtualKey[] getVirtualKeySynonyms(int keyId) {
76        List<VirtualKey> virtualKeys = synonyms.get(keyId);
77        if (virtualKeys != null) {
78            return virtualKeys.toArray(new VirtualKey[virtualKeys.size()]);
79        }
80        else {
81            LOG.warning("no virtual key define for key id " + keyId);
82            return null;
83        }
84    }
85
86}
Note: See TracBrowser for help on using the repository browser.