1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 package org.openoffice.test.vcl.widgets;
25 
26 import org.openoffice.test.vcl.client.Constant;
27 
28 
29 public class VclListBox extends VclControl  {
30 
VclListBox(VclApp app, String id)31 	public VclListBox(VclApp app, String id) {
32 		super(app, id);
33 	}
34 
35 
36 	/**
37 	 * Returns the number of entries in a TreeListBox.
38 	 *
39 	 * @return Number of list box entries. Error if the return value is -1.
40 	 */
getItemCount()41 	public int getItemCount() {
42 		return ((Long) invoke(Constant.M_GetItemCount)).intValue();
43 	}
44 
45 	/**
46 	 * Get the text of the specified entry in the tree list box Notice:
47 	 * index,col starting from 0
48 	 *
49 	 * @param index
50 	 * @param col
51 	 * @return
52 	 */
getItemText(int index, int col)53 	public String getItemText(int index, int col) {
54 		return (String) invoke(Constant.M_GetItemText, new Object[] { new Integer(index + 1), new Integer(col + 1) });
55 	}
56 
57 	/**
58 	 * Get the text of the specified node Notice: index starting from 0
59 	 *
60 	 * @param index
61 	 * @return
62 	 */
getItemText(int index)63 	public String getItemText(int index) {
64 		return getItemText(index, 0);
65 	}
66 
67 	/**
68 	 * Returns the number of selected entries in a TreeListbox(you can select
69 	 * more than one entry).
70 	 *
71 	 * @return The number of selected entries. Error is the return value is -1.
72 	 */
getSelCount()73 	public int getSelCount() {
74 		return ((Long) invoke(Constant.M_GetSelCount)).intValue();
75 	}
76 
77 	/**
78 	 * Returns the index number of the selected entry in the TreeListBox.
79 	 * Notice: index starting from 0
80 	 *
81 	 * @return The index number of selected entries. Error is the return value
82 	 *         is -1.
83 	 */
getSelIndex()84 	public int getSelIndex() {
85 		return ((Long) invoke(Constant.M_GetSelIndex)).intValue() - 1;
86 	}
87 
88 	/**
89 	 * Get the text of the selected item
90 	 */
getSelText()91 	public String getSelText() {
92 		return (String) invoke(Constant.M_GetSelText);
93 	}
94 
95 	/**
96 	 * Select the specified node via its index Notice: index starting from 0
97 	 *
98 	 * @param index
99 	 */
select(int index)100 	public void select(int index) {
101 		invoke(Constant.M_Select, new Object[] { new Integer(index + 1) });
102 	}
103 
104 	/**
105 	 * Selects the text of an entry.
106 	 *
107 	 * @param str
108 	 *            the item string
109 	 */
select(String text)110 	public void select(String text) {
111 		if (getType() == 324) {
112 			int count = getItemCount();
113 			for (int i = 0; i < count; i++) {
114 				if (text.equals(getItemText(i))) {
115 					select(i);
116 					return;
117 				}
118 			}
119 
120 			throw new RuntimeException(text + " is not found in the list box");
121 		} else {
122 			invoke(Constant.M_Select, new Object[] { text });
123 		}
124 	}
125 
126 	/**
127 	 * Append one item to be selected after selected some items.
128 	 *
129 	 * @param i
130 	 *            the index of the item
131 	 */
multiSelect(int i)132 	public void multiSelect(int i) {
133 		invoke(Constant.M_MultiSelect, new Object[] { new Integer(i + 1) });
134 	}
135 
136 	/**
137 	 * Append one item to be selected after selected some items.
138 	 *
139 	 * @param text
140 	 *            the text of the item
141 	 */
multiSelect(String text)142 	public void multiSelect(String text) {
143 		invoke(Constant.M_MultiSelect, new Object[] { text });
144 	}
145 
146 	/**
147 	 * get all items'text.
148 	 *
149 	 */
getItemsText()150 	public String[] getItemsText() {
151 		int count = getItemCount();
152 		String[] res = new String[count];
153 		for (int i = 0; i < count; i++) {
154 			res[i] = getItemText(i);
155 		}
156 		return res;
157 	}
158 
159 	/**
160 	 *
161 	 * @param text
162 	 * @return
163 	 */
getItemIndex(String text)164 	public int getItemIndex(String text) {
165 		int count = getItemCount();
166 		for (int i = 0; i < count; i++) {
167 			if (text.equals(getItemText(i)))
168 				return i;
169 		}
170 
171 		throw new RuntimeException(text + " is not found in the list box");
172 	}
173 
174 
175 	/**
176 	 * Check if the list box has the specified item
177 	 *
178 	 * @param str
179 	 * @return
180 	 */
hasItem(String str)181 	public boolean hasItem(String str) {
182 		int len = getItemCount();
183 		for (int i = 0; i < len; i++) {
184 			String text = getItemText(i);
185 			if (str.equals(text))
186 				return true;
187 		}
188 		return false;
189 	}
190 }
191