001: /* Copyright (c) 2001-2005, The HSQL Development Group
002: * All rights reserved.
003: *
004: * Redistribution and use in source and binary forms, with or without
005: * modification, are permitted provided that the following conditions are met:
006: *
007: * Redistributions of source code must retain the above copyright notice, this
008: * list of conditions and the following disclaimer.
009: *
010: * Redistributions in binary form must reproduce the above copyright notice,
011: * this list of conditions and the following disclaimer in the documentation
012: * and/or other materials provided with the distribution.
013: *
014: * Neither the name of the HSQL Development Group nor the names of its
015: * contributors may be used to endorse or promote products derived from this
016: * software without specific prior written permission.
017: *
018: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
019: * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
020: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
021: * ARE DISCLAIMED. IN NO EVENT SHALL HSQL DEVELOPMENT GROUP, HSQLDB.ORG,
022: * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
023: * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
024: * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
025: * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
026: * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
027: * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
028: * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
029: */
030:
031: package org.hsqldb.util;
032:
033: import java.util.Vector;
034: import java.awt.Choice;
035: import java.awt.Color;
036:
037: /**
038: * Class declaration
039: *
040: *
041: * @author ulrivo@users
042: * @version 1.0.0
043: */
044:
045: // a Choice for the GUI which implements ZaurusComponent
046: //
047: // in addition to a Choice, a ZaurusChoice saves a vector for values of the items
048: // for instance: in the choice list, there are the labels A,B,C
049: // the corresponding values are 100,200,300
050: // during the defintion process, the values are provided by a second argument to add
051: // getContent() answers the value !!
052: public class ZaurusChoice extends Choice implements ZaurusComponent {
053:
054: private static final int MaxLenInZChoice = 15;
055: Vector values;
056: int countChanges;
057:
058: public ZaurusChoice() {
059:
060: super ();
061:
062: values = new Vector(20);
063: countChanges = 0;
064: }
065:
066: // restrict strings for the choice to MaxLenInZChoice characters
067: public void add(String item, String value) {
068:
069: int maxChar = MaxLenInZChoice;
070:
071: if (item.length() < MaxLenInZChoice) {
072: maxChar = item.length();
073: }
074:
075: super .add(item.substring(0, maxChar));
076: values.addElement(value);
077: }
078:
079: public void clearChanges() {
080: countChanges = 0;
081: }
082:
083: public void clearContent() {
084: super .select(0);
085: }
086:
087: public String getContent() {
088: return (String) values.elementAt(super .getSelectedIndex());
089: }
090:
091: public boolean hasChanged() {
092: return countChanges > 0;
093: }
094:
095: public void requestFocus() {
096: super .requestFocus();
097: }
098:
099: 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: }
|