/******************************************************************************* * Copyright (c) 2000, 2011, 2012 IBM Corporation, Gerhardt Informatics Kft. and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation * Gerhardt Informatics Kft. - GEFGWT port *******************************************************************************/ package org.eclipse.swt.widgets; import org.eclipse.swt.SWT; import org.eclipse.swt.SWTException; import org.eclipse.swt.events.ModifyListener; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.events.VerifyListener; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.internal.gwt.GdkColor; /** * Instances of this class are controls that allow the user to choose an item * from a list of items, or optionally enter a new value by typing it into an * editable text field. Often, <code>Combo</code>s are used in the same place * where a single selection <code>List</code> widget could be used but space is * limited. A <code>Combo</code> takes less space than a <code>List</code> * widget and shows similar information. * <p> * Note: Since <code>Combo</code>s can contain both a list and an editable text * field, it is possible to confuse methods which access one versus the other * (compare for example, <code>clearSelection()</code> and * <code>deselectAll()</code>). The API documentation is careful to indicate * either "the receiver's list" or the "the receiver's text field" to * distinguish between the two cases. * </p> * <p> * Note that although this class is a subclass of <code>Composite</code>, it * does not make sense to add children to it, or set a layout on it. * </p> * <dl> * <dt><b>Styles:</b></dt> * <dd>DROP_DOWN, READ_ONLY, SIMPLE</dd> * <dt><b>Events:</b></dt> * <dd>DefaultSelection, Modify, Selection, Verify, OrientationChange</dd> * </dl> * <p> * Note: Only one of the styles DROP_DOWN and SIMPLE may be specified. * </p> * <p> * IMPORTANT: This class is <em>not</em> intended to be subclassed. * </p> * * @see List * @see <a href="http://www.eclipse.org/swt/snippets/#combo">Combo snippets</a> * @see <a href="http://www.eclipse.org/swt/examples.php">SWT Example: * ControlExample</a> * @see <a href="http://www.eclipse.org/swt/">Sample code and further * information</a> * @noextend This class is not intended to be subclassed by clients. */ public class Combo extends Composite { long /* int */buttonHandle, entryHandle, listHandle, textRenderer, cellHandle, popupHandle, menuHandle; int lastEventTime, visibleCount = 10; long /* int */gdkEventKey = 0; int fixStart = -1, fixEnd = -1; String[] items = new String[0]; boolean ignoreSelect, lockText, selectionAdded; int indexSelected; /** * the operating system limit for the number of characters that the text * field in an instance of this class can hold */ public final static int LIMIT; /* * These values can be different on different platforms. Therefore they are * not initialized in the declaration to stop the compiler from inlining. */ static { LIMIT = 0xFFFF; } /** * Constructs a new instance of this class given its parent and a style * value describing its behavior and appearance. * <p> * The style value is either one of the style constants defined in class * <code>SWT</code> which is applicable to instances of this class, or must * be built by <em>bitwise OR</em>'ing together (that is, using the * <code>int</code> "|" operator) two or more of those <code>SWT</code> * style constants. The class description lists the style constants that are * applicable to the class. Style bits are also inherited from superclasses. * </p> * * @param parent * a composite control which will be the parent of the new * instance (cannot be null) * @param style * the style of control to construct * * @exception IllegalArgumentException * <ul> * <li>ERROR_NULL_ARGUMENT - if the parent is null</li> * </ul> * @exception SWTException * <ul> * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the * thread that created the parent</li> * <li>ERROR_INVALID_SUBCLASS - if this class is not an * allowed subclass</li> * </ul> * * @see SWT#DROP_DOWN * @see SWT#READ_ONLY * @see SWT#SIMPLE * @see Widget#checkSubclass * @see Widget#getStyle */ public Combo(Composite parent, int style) { super(parent, checkStyle(style)); } /** * Adds the argument to the end of the receiver's list. * * @param string * the new item * * @exception IllegalArgumentException * <ul> * <li>ERROR_NULL_ARGUMENT - if the string is null</li> * </ul> * @exception SWTException * <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver has been * disposed</li> * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the * thread that created the receiver</li> * </ul> * * @see #add(String,int) */ public void add(String string) { checkWidget(); if (string == null) error(SWT.ERROR_NULL_ARGUMENT); add(string, items.length); } /** * Adds the argument to the receiver's list at the given zero-relative * index. * <p> * Note: To add an item at the end of the list, use the result of calling * <code>getItemCount()</code> as the index or use <code>add(String)</code>. * </p> * * @param string * the new item * @param index * the index for the item * * @exception IllegalArgumentException * <ul> * <li>ERROR_NULL_ARGUMENT - if the string is null</li> * <li>ERROR_INVALID_RANGE - if the index is not between 0 * and the number of elements in the list (inclusive)</li> * </ul> * @exception SWTException * <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver has been * disposed</li> * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the * thread that created the receiver</li> * </ul> * * @see #add(String) */ public void add(String string, int index) { } /** * Adds the listener to the collection of listeners who will be notified * when the receiver's text is modified, by sending it one of the messages * defined in the <code>ModifyListener</code> interface. * * @param listener * the listener which should be notified * * @exception IllegalArgumentException * <ul> * <li>ERROR_NULL_ARGUMENT - if the listener is null</li> * </ul> * @exception SWTException * <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver has been * disposed</li> * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the * thread that created the receiver</li> * </ul> * * @see ModifyListener * @see #removeModifyListener */ public void addModifyListener(ModifyListener listener) { checkWidget(); if (listener == null) error(SWT.ERROR_NULL_ARGUMENT); TypedListener typedListener = new TypedListener(listener); addListener(SWT.Modify, typedListener); } /** * Adds the listener to the collection of listeners who will be notified * when the user changes the receiver's selection, by sending it one of the * messages defined in the <code>SelectionListener</code> interface. * <p> * <code>widgetSelected</code> is called when the user changes the combo's * list selection. <code>widgetDefaultSelected</code> is typically called * when ENTER is pressed the combo's text area. * </p> * * @param listener * the listener which should be notified * * @exception IllegalArgumentException * <ul> * <li>ERROR_NULL_ARGUMENT - if the listener is null</li> * </ul> * @exception SWTException * <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver has been * disposed</li> * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the * thread that created the receiver</li> * </ul> * * @see SelectionListener * @see #removeSelectionListener * @see SelectionEvent */ public void addSelectionListener(SelectionListener listener) { checkWidget(); if (listener == null) error(SWT.ERROR_NULL_ARGUMENT); TypedListener typedListener = new TypedListener(listener); addListener(SWT.Selection, typedListener); addListener(SWT.DefaultSelection, typedListener); } /** * Adds the listener to the collection of listeners who will be notified * when the receiver's text is verified, by sending it one of the messages * defined in the <code>VerifyListener</code> interface. * * @param listener * the listener which should be notified * * @exception IllegalArgumentException * <ul> * <li>ERROR_NULL_ARGUMENT - if the listener is null</li> * </ul> * @exception SWTException * <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver has been * disposed</li> * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the * thread that created the receiver</li> * </ul> * * @see VerifyListener * @see #removeVerifyListener * * @since 3.1 */ public void addVerifyListener(VerifyListener listener) { checkWidget(); if (listener == null) error(SWT.ERROR_NULL_ARGUMENT); TypedListener typedListener = new TypedListener(listener); addListener(SWT.Verify, typedListener); } static int checkStyle(int style) { /* * Feature in Windows. It is not possible to create a combo box that has * a border using Windows style bits. All combo boxes draw their own * border and do not use the standard Windows border styles. Therefore, * no matter what style bits are specified, clear the BORDER bits so * that the SWT style will match the Windows widget. * * The Windows behavior is currently implemented on all platforms. */ style &= ~SWT.BORDER; /* * Even though it is legal to create this widget with scroll bars, they * serve no useful purpose because they do not automatically scroll the * widget's client area. The fix is to clear the SWT style. */ style &= ~(SWT.H_SCROLL | SWT.V_SCROLL); style = checkBits(style, SWT.DROP_DOWN, SWT.SIMPLE, 0, 0, 0, 0); if ((style & SWT.SIMPLE) != 0) return style & ~SWT.READ_ONLY; return style; } protected void checkSubclass() { if (!isValidSubclass()) error(SWT.ERROR_INVALID_SUBCLASS); } /** * Sets the selection in the receiver's text field to an empty selection * starting just before the first character. If the text field is editable, * this has the effect of placing the i-beam at the start of the text. * <p> * Note: To clear the selected items in the receiver's list, use * <code>deselectAll()</code>. * </p> * * @exception SWTException * <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver has been * disposed</li> * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the * thread that created the receiver</li> * </ul> * * @see #deselectAll */ public void clearSelection() { } public Point computeSize(int wHint, int hHint, boolean changed) { return null; } /** * Copies the selected text. * <p> * The current selection is copied to the clipboard. * </p> * * @exception SWTException * <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver has been * disposed</li> * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the * thread that created the receiver</li> * </ul> * * @since 2.1 */ public void copy() { } void createHandle(int index) { } /** * Cuts the selected text. * <p> * The current selection is first copied to the clipboard and then deleted * from the widget. * </p> * * @exception SWTException * <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver has been * disposed</li> * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the * thread that created the receiver</li> * </ul> * * @since 2.1 */ public void cut() { } void fixIM() { } boolean hasFocus() { return false; } void hookEvents() { } long /* int */imContext() { return 0; } /** * Deselects all selected items in the receiver's list. * <p> * Note: To clear the selection in the receiver's text field, use * <code>clearSelection()</code>. * </p> * * @exception SWTException * <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver has been * disposed</li> * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the * thread that created the receiver</li> * </ul> * * @see #clearSelection */ public void deselectAll() { } boolean dragDetect(int x, int y, boolean filter, boolean dragOnTimeout, boolean[] consume) { return false; } GdkColor getBackgroundColor() { return getBaseColor(); } GdkColor getForegroundColor() { return getTextColor(); } /** * Returns the item at the given, zero-relative index in the receiver's * list. Throws an exception if the index is out of range. * * @param index * the index of the item to return * @return the item at the given index * * @exception IllegalArgumentException * <ul> * <li>ERROR_INVALID_RANGE - if the index is not between 0 * and the number of elements in the list minus 1 (inclusive) * </li> * </ul> * @exception SWTException * <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver has been * disposed</li> * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the * thread that created the receiver</li> * </ul> */ public String getItem(int index) { checkWidget(); if (!(0 <= index && index < items.length)) { error(SWT.ERROR_INVALID_RANGE); } return items[index]; } /** * Returns the number of items contained in the receiver's list. * * @return the number of items * * @exception SWTException * <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver has been * disposed</li> * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the * thread that created the receiver</li> * </ul> */ public int getItemCount() { checkWidget(); return items.length; } /** * Returns the height of the area which would be used to display * <em>one</em> of the items in the receiver's list. * * @return the height of one item * * @exception SWTException * <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver has been * disposed</li> * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the * thread that created the receiver</li> * </ul> */ public int getItemHeight() { return 0; } /** * Returns a (possibly empty) array of <code>String</code>s which are the * items in the receiver's list. * <p> * Note: This is not the actual structure used by the receiver to maintain * its list of items, so modifying the array will not affect the receiver. * </p> * * @return the items in the receiver's list * * @exception SWTException * <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver has been * disposed</li> * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the * thread that created the receiver</li> * </ul> */ public String[] getItems() { checkWidget(); String[] result = new String[items.length]; System.arraycopy(items, 0, result, 0, items.length); return result; } /** * Returns <code>true</code> if the receiver's list is visible, and * <code>false</code> otherwise. * <p> * If one of the receiver's ancestors is not visible or some other condition * makes the receiver not visible, this method may still indicate that it is * considered visible even though it may not actually be showing. * </p> * * @return the receiver's list's visibility state * * @exception SWTException * <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver has been * disposed</li> * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the * thread that created the receiver</li> * </ul> * * @since 3.4 */ public boolean getListVisible() { return false; } String getNameText() { return getText(); } /** * Returns the orientation of the receiver. * * @return the orientation style * * @exception SWTException * <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver has been * disposed</li> * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the * thread that created the receiver</li> * </ul> * * @since 2.1.2 */ public int getOrientation() { return super.getOrientation(); } /** * Returns a <code>Point</code> whose x coordinate is the character position * representing the start of the selection in the receiver's text field, and * whose y coordinate is the character position representing the end of the * selection. An "empty" selection is indicated by the x and y coordinates * having the same value. * <p> * Indexing is zero based. The range of a selection is from 0..N where N is * the number of characters in the widget. * </p> * * @return a point representing the selection start and end * * @exception SWTException * <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver has been * disposed</li> * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the * thread that created the receiver</li> * </ul> */ public Point getSelection() { return null; } /** * Returns the zero-relative index of the item which is currently selected * in the receiver's list, or -1 if no item is selected. * * @return the index of the selected item * * @exception SWTException * <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver has been * disposed</li> * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the * thread that created the receiver</li> * </ul> */ public int getSelectionIndex() { return 0; } /** * Returns a string containing a copy of the contents of the receiver's text * field, or an empty string if there are no contents. * * @return the receiver's text * * @exception SWTException * <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver has been * disposed</li> * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the * thread that created the receiver</li> * </ul> */ public String getText() { return null; } /** * Returns the height of the receivers's text field. * * @return the text height * * @exception SWTException * <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver has been * disposed</li> * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the * thread that created the receiver</li> * </ul> */ public int getTextHeight() { return 0; } /** * Returns the maximum number of characters that the receiver's text field * is capable of holding. If this has not been changed by * <code>setTextLimit()</code>, it will be the constant * <code>Combo.LIMIT</code>. * * @return the text limit * * @exception SWTException * <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver has been * disposed</li> * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the * thread that created the receiver</li> * </ul> * * @see #LIMIT */ public int getTextLimit() { return 0; } /** * Gets the number of items that are visible in the drop down portion of the * receiver's list. * <p> * Note: This operation is a hint and is not supported on platforms that do * not have this concept. * </p> * * @return the number of items that are visible * * @exception SWTException * <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver has been * disposed</li> * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the * thread that created the receiver</li> * </ul> * * @since 3.0 */ public int getVisibleItemCount() { checkWidget(); return visibleCount; } /** * Searches the receiver's list starting at the first item (index 0) until * an item is found that is equal to the argument, and returns the index of * that item. If no item is found, returns -1. * * @param string * the search item * @return the index of the item * * @exception IllegalArgumentException * <ul> * <li>ERROR_NULL_ARGUMENT - if the string is null</li> * </ul> * @exception SWTException * <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver has been * disposed</li> * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the * thread that created the receiver</li> * </ul> */ public int indexOf(String string) { checkWidget(); return indexOf(string, 0); } /** * Searches the receiver's list starting at the given, zero-relative index * until an item is found that is equal to the argument, and returns the * index of that item. If no item is found or the starting index is out of * range, returns -1. * * @param string * the search item * @param start * the zero-relative index at which to begin the search * @return the index of the item * * @exception IllegalArgumentException * <ul> * <li>ERROR_NULL_ARGUMENT - if the string is null</li> * </ul> * @exception SWTException * <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver has been * disposed</li> * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the * thread that created the receiver</li> * </ul> */ public int indexOf(String string, int start) { checkWidget(); if (string == null) error(SWT.ERROR_NULL_ARGUMENT); if (!(0 <= start && start < items.length)) return -1; for (int i = start; i < items.length; i++) { if (string.equals(items[i])) return i; } return -1; } /** * Pastes text from clipboard. * <p> * The selected text is deleted from the widget and new text inserted from * the clipboard. * </p> * * @exception SWTException * <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver has been * disposed</li> * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the * thread that created the receiver</li> * </ul> * * @since 2.1 */ public void paste() { } void register() { super.register(); if (buttonHandle != 0) display.addWidget(buttonHandle, this); if (entryHandle != 0) display.addWidget(entryHandle, this); if (listHandle != 0) display.addWidget(listHandle, this); if (popupHandle != 0) display.addWidget(popupHandle, this); if (menuHandle != 0) display.addWidget(menuHandle, this); long /* int */imContext = imContext(); if (imContext != 0) display.addWidget(imContext, this); } void releaseHandle() { super.releaseHandle(); buttonHandle = entryHandle = listHandle = 0; } void releaseWidget() { super.releaseWidget(); textRenderer = 0; fixIM(); } /** * Removes the item from the receiver's list at the given zero-relative * index. * * @param index * the index for the item * * @exception IllegalArgumentException * <ul> * <li>ERROR_INVALID_RANGE - if the index is not between 0 * and the number of elements in the list minus 1 (inclusive) * </li> * </ul> * @exception SWTException * <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver has been * disposed</li> * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the * thread that created the receiver</li> * </ul> */ public void remove(int index) { } /** * Removes the items from the receiver's list which are between the given * zero-relative start and end indices (inclusive). * * @param start * the start of the range * @param end * the end of the range * * @exception IllegalArgumentException * <ul> * <li>ERROR_INVALID_RANGE - if either the start or end are * not between 0 and the number of elements in the list minus * 1 (inclusive)</li> * </ul> * @exception SWTException * <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver has been * disposed</li> * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the * thread that created the receiver</li> * </ul> */ public void remove(int start, int end) { } /** * Searches the receiver's list starting at the first item until an item is * found that is equal to the argument, and removes that item from the list. * * @param string * the item to remove * * @exception IllegalArgumentException * <ul> * <li>ERROR_NULL_ARGUMENT - if the string is null</li> * <li>ERROR_INVALID_ARGUMENT - if the string is not found in * the list</li> * </ul> * @exception SWTException * <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver has been * disposed</li> * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the * thread that created the receiver</li> * </ul> */ public void remove(String string) { checkWidget(); if (string == null) error(SWT.ERROR_NULL_ARGUMENT); int index = indexOf(string, 0); if (index == -1) error(SWT.ERROR_INVALID_ARGUMENT); remove(index); } /** * Removes all of the items from the receiver's list and clear the contents * of receiver's text field. * <p> * * @exception SWTException * <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver has been * disposed</li> <li>ERROR_THREAD_INVALID_ACCESS - if not * called from the thread that created the receiver</li> * </ul> */ public void removeAll() { } /** * Removes the listener from the collection of listeners who will be * notified when the receiver's text is modified. * * @param listener * the listener which should no longer be notified * * @exception IllegalArgumentException * <ul> * <li>ERROR_NULL_ARGUMENT - if the listener is null</li> * </ul> * @exception SWTException * <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver has been * disposed</li> * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the * thread that created the receiver</li> * </ul> * * @see ModifyListener * @see #addModifyListener */ public void removeModifyListener(ModifyListener listener) { checkWidget(); if (listener == null) error(SWT.ERROR_NULL_ARGUMENT); if (eventTable == null) return; eventTable.unhook(SWT.Modify, listener); } /** * Removes the listener from the collection of listeners who will be * notified when the user changes the receiver's selection. * * @param listener * the listener which should no longer be notified * * @exception IllegalArgumentException * <ul> * <li>ERROR_NULL_ARGUMENT - if the listener is null</li> * </ul> * @exception SWTException * <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver has been * disposed</li> * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the * thread that created the receiver</li> * </ul> * * @see SelectionListener * @see #addSelectionListener */ public void removeSelectionListener(SelectionListener listener) { checkWidget(); if (listener == null) error(SWT.ERROR_NULL_ARGUMENT); if (eventTable == null) return; eventTable.unhook(SWT.Selection, listener); eventTable.unhook(SWT.DefaultSelection, listener); } /** * Removes the listener from the collection of listeners who will be * notified when the control is verified. * * @param listener * the listener which should no longer be notified * * @exception IllegalArgumentException * <ul> * <li>ERROR_NULL_ARGUMENT - if the listener is null</li> * </ul> * @exception SWTException * <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver has been * disposed</li> * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the * thread that created the receiver</li> * </ul> * * @see VerifyListener * @see #addVerifyListener * * @since 3.1 */ public void removeVerifyListener(VerifyListener listener) { checkWidget(); if (listener == null) error(SWT.ERROR_NULL_ARGUMENT); if (eventTable == null) return; eventTable.unhook(SWT.Verify, listener); } /** * Selects the item at the given zero-relative index in the receiver's list. * If the item at the index was already selected, it remains selected. * Indices that are out of range are ignored. * * @param index * the index of the item to select * * @exception SWTException * <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver has been * disposed</li> * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the * thread that created the receiver</li> * </ul> */ public void select(int index) { } int setBounds(int x, int y, int width, int height, boolean move, boolean resize) { int newHeight = height; if (resize) newHeight = Math.max(getTextHeight(), height); return super.setBounds(x, y, width, newHeight, move, resize); } void setFontDescription(long /* int */font) { } /** * Sets the text of the item in the receiver's list at the given * zero-relative index to the string argument. * * @param index * the index for the item * @param string * the new text for the item * * @exception IllegalArgumentException * <ul> * <li>ERROR_INVALID_RANGE - if the index is not between 0 * and the number of elements in the list minus 1 (inclusive) * </li> * <li>ERROR_NULL_ARGUMENT - if the string is null</li> * </ul> * @exception SWTException * <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver has been * disposed</li> * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the * thread that created the receiver</li> * </ul> */ public void setItem(int index, String string) { } /** * Sets the receiver's list to be the given array of items. * * @param items * the array of items * * @exception IllegalArgumentException * <ul> * <li>ERROR_NULL_ARGUMENT - if the items array is null</li> * <li>ERROR_INVALID_ARGUMENT - if an item in the items array * is null</li> * </ul> * @exception SWTException * <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver has been * disposed</li> * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the * thread that created the receiver</li> * </ul> */ public void setItems(String[] items) { } /** * Marks the receiver's list as visible if the argument is <code>true</code> * , and marks it invisible otherwise. * <p> * If one of the receiver's ancestors is not visible or some other condition * makes the receiver not visible, marking it visible may not actually cause * it to be displayed. * </p> * * @param visible * the new visibility state * * @exception SWTException * <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver has been * disposed</li> * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the * thread that created the receiver</li> * </ul> * * @since 3.4 */ public void setListVisible(boolean visible) { } void setOrientation(boolean create) { } /** * Sets the orientation of the receiver, which must be one of the constants * <code>SWT.LEFT_TO_RIGHT</code> or <code>SWT.RIGHT_TO_LEFT</code>. * <p> * * @param orientation * new orientation style * * @exception SWTException * <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver has been * disposed</li> <li>ERROR_THREAD_INVALID_ACCESS - if not * called from the thread that created the receiver</li> * </ul> * * @since 2.1.2 */ public void setOrientation(int orientation) { super.setOrientation(orientation); } /** * Sets the selection in the receiver's text field to the range specified by * the argument whose x coordinate is the start of the selection and whose y * coordinate is the end of the selection. * * @param selection * a point representing the new selection start and end * * @exception IllegalArgumentException * <ul> * <li>ERROR_NULL_ARGUMENT - if the point is null</li> * </ul> * @exception SWTException * <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver has been * disposed</li> * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the * thread that created the receiver</li> * </ul> */ public void setSelection(Point selection) { } /** * Sets the contents of the receiver's text field to the given string. * <p> * This call is ignored when the receiver is read only and the given string * is not in the receiver's list. * </p> * <p> * Note: The text field in a <code>Combo</code> is typically only capable of * displaying a single line of text. Thus, setting the text to a string * containing line breaks or other special characters will probably cause it * to display incorrectly. * </p> * * @param string * the new text * * @exception IllegalArgumentException * <ul> * <li>ERROR_NULL_ARGUMENT - if the string is null</li> * </ul> * @exception SWTException * <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver has been * disposed</li> * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the * thread that created the receiver</li> * </ul> */ public void setText(String string) { } /** * Sets the maximum number of characters that the receiver's text field is * capable of holding to be the argument. * <p> * To reset this value to the default, use * <code>setTextLimit(Combo.LIMIT)</code>. Specifying a limit value larger * than <code>Combo.LIMIT</code> sets the receiver's limit to * <code>Combo.LIMIT</code>. * </p> * * @param limit * new text limit * * @exception IllegalArgumentException * <ul> * <li>ERROR_CANNOT_BE_ZERO - if the limit is zero</li> * </ul> * @exception SWTException * <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver has been * disposed</li> * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the * thread that created the receiver</li> * </ul> * * @see #LIMIT */ public void setTextLimit(int limit) { } void setToolTipText(Shell shell, String newString) { if (entryHandle != 0) shell.setToolTipText(entryHandle, newString); if (buttonHandle != 0) shell.setToolTipText(buttonHandle, newString); } /** * Sets the number of items that are visible in the drop down portion of the * receiver's list. * <p> * Note: This operation is a hint and is not supported on platforms that do * not have this concept. * </p> * * @param count * the new number of items to be visible * * @exception SWTException * <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver has been * disposed</li> * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the * thread that created the receiver</li> * </ul> * * @since 3.0 */ public void setVisibleItemCount(int count) { checkWidget(); if (count < 0) return; visibleCount = count; } }