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

Last change on this file since 447 was 447, checked in by pharms, 12 years ago

Initial import

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