Source code: org/hsqldb/util/ZaurusChoice.java
1 /* Copyright (c) 2001-2002, The HSQL Development Group
2 * All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are met:
6 *
7 * Redistributions of source code must retain the above copyright notice, this
8 * list of conditions and the following disclaimer.
9 *
10 * Redistributions in binary form must reproduce the above copyright notice,
11 * this list of conditions and the following disclaimer in the documentation
12 * and/or other materials provided with the distribution.
13 *
14 * Neither the name of the HSQL Development Group nor the names of its
15 * contributors may be used to endorse or promote products derived from this
16 * software without specific prior written permission.
17 *
18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21 * ARE DISCLAIMED. IN NO EVENT SHALL HSQL DEVELOPMENT GROUP, HSQLDB.ORG,
22 * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
23 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
24 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
25 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
26 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
28 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 */
30
31
32 package org.hsqldb.util;
33
34 import java.awt.*;
35 import java.util.Vector;
36
37 /**
38 * Class declaration
39 *
40 *
41 * @author ulrivo@users
42 * @version 1.0.0
43 */
44
45 // a Choice for the GUI which implements ZaurusComponent
46 //
47 // in addition to a Choice, a ZaurusChoice saves a vector for values of the items
48 // for instance: in the choice list, there are the labels A,B,C
49 // the corresponding values are 100,200,300
50 // during the defintion process, the values are provided by a second argument to add
51 // getContent() answers the value !!
52 public class ZaurusChoice extends Choice implements ZaurusComponent {
53
54 final static private int MaxLenInZChoice = 15;
55 Vector values;
56 int countChanges;
57
58 public ZaurusChoice() {
59
60 super();
61
62 values = new Vector(20);
63 countChanges = 0;
64 }
65
66 // restrict strings for the choice to MaxLenInZChoice characters
67 public void add(String item, String value) {
68
69 int maxChar = MaxLenInZChoice;
70
71 if (item.length() < MaxLenInZChoice) {
72 maxChar = item.length();
73 }
74
75 super.add(item.substring(0, maxChar));
76 values.addElement(value);
77 }
78
79 public void clearChanges() {
80 countChanges = 0;
81 }
82
83 public void clearContent() {
84 super.select(0);
85 }
86
87 public String getContent() {
88 return (String) values.elementAt(super.getSelectedIndex());
89 }
90
91 public boolean hasChanged() {
92 return countChanges > 0;
93 }
94
95 public void requestFocus() {
96 super.requestFocus();
97 }
98
99 public void setChanged() {
100 countChanges++;
101 }
102
103 // set the choice to the element in choice of the corresponding value
104 public void setContent(String s) {
105 super.select(this.findValue(s));
106 }
107
108 public void setEditable(boolean b) {
109
110 super.setEnabled(b);
111
112 if (b) {
113 super.setBackground(Color.white);
114 } else {
115 super.setBackground(Color.lightGray);
116 } // end of if (b)else
117 }
118
119 // find for a given value the index in values
120 private int findValue(String s) {
121
122 for (int i = 0; i < values.size(); i++) {
123 if (s.equals(values.elementAt(i))) {
124 return i;
125 } // end of if (s.equals(values.elementAt(i)))
126 } // end of for (int i=0; i<values.size(); i++)
127
128 return -1;
129 }
130 }