Small typo fixes in invirt-update-vnc-cert
[invirt/packages/invirt-vnc-client.git] / CapsContainer.java
1 //
2 //  Copyright (C) 2003 Constantin Kaplinsky.  All Rights Reserved.
3 //
4 //  This is free software; you can redistribute it and/or modify
5 //  it under the terms of the GNU General Public License as published by
6 //  the Free Software Foundation; either version 2 of the License, or
7 //  (at your option) any later version.
8 //
9 //  This software is distributed in the hope that it will be useful,
10 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
11 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 //  GNU General Public License for more details.
13 //
14 //  You should have received a copy of the GNU General Public License
15 //  along with this software; if not, write to the Free Software
16 //  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,
17 //  USA.
18 //
19
20 //
21 // CapsContainer.java - A container of capabilities as used in the RFB
22 // protocol 3.130
23 //
24
25 import java.util.Vector;
26 import java.util.Hashtable;
27
28 class CapsContainer {
29
30   // Public methods
31
32   public CapsContainer() {
33     infoMap = new Hashtable(64, (float)0.25);
34     orderedList = new Vector(32, 8);
35   }
36
37   public void add(CapabilityInfo capinfo) {
38     Integer key = new Integer(capinfo.getCode());
39     infoMap.put(key, capinfo);
40   }
41
42   public void add(int code, String vendor, String name, String desc) {
43     Integer key = new Integer(code);
44     infoMap.put(key, new CapabilityInfo(code, vendor, name, desc));
45   }
46
47   public boolean isKnown(int code) {
48     return infoMap.containsKey(new Integer(code));
49   }
50
51   public CapabilityInfo getInfo(int code) {
52     return (CapabilityInfo)infoMap.get(new Integer(code));
53   }
54
55   public String getDescription(int code) {
56     CapabilityInfo capinfo = (CapabilityInfo)infoMap.get(new Integer(code));
57     if (capinfo == null)
58       return null;
59
60     return capinfo.getDescription();
61   }
62
63   public boolean enable(CapabilityInfo other) {
64     Integer key = new Integer(other.getCode());
65     CapabilityInfo capinfo = (CapabilityInfo)infoMap.get(key);
66     if (capinfo == null)
67       return false;
68
69     boolean enabled = capinfo.enableIfEquals(other);
70     if (enabled)
71       orderedList.addElement(key);
72
73     return enabled;
74   }
75
76   public boolean isEnabled(int code) {
77     CapabilityInfo capinfo = (CapabilityInfo)infoMap.get(new Integer(code));
78     if (capinfo == null)
79       return false;
80
81     return capinfo.isEnabled();
82   }
83
84   public int numEnabled() {
85     return orderedList.size();
86   }
87
88   public int getByOrder(int idx) {
89     int code;
90     try {
91       code = ((Integer)orderedList.elementAt(idx)).intValue();
92     } catch (ArrayIndexOutOfBoundsException e) {
93       code = 0;
94     }
95     return code;
96   }
97
98   // Protected data
99
100   protected Hashtable infoMap;
101   protected Vector orderedList;
102 }
103