public class CCombo extends Composite
CCombo was written to work around certain limitations in the native combo box. Specifically, on win32, the height of a CCombo can be set; attempts to set the height of a Combo are ignored. CCombo can be used anywhere that having the increased flexibility is more important than getting native L&F, but the decision should not be taken lightly. There is no is no strict requirement that CCombo look or behave the same as the native combo box.
Note that although this class is a subclass of Composite
,
it does not make sense to add children to it, or set a layout on it.
Modifier and Type | Field and Description |
---|---|
(package private) Shell |
_shell |
(package private) Button |
arrow |
(package private) Color |
background |
(package private) Listener |
filter |
(package private) Font |
font |
(package private) Color |
foreground |
(package private) boolean |
hasFocus |
(package private) List |
list |
(package private) Listener |
listener |
(package private) static java.lang.String |
PACKAGE_PREFIX |
(package private) Shell |
popup |
(package private) Text |
text |
(package private) int |
visibleItemCount |
Constructor and Description |
---|
CCombo(Composite parent,
int style)
Constructs a new instance of this class given its parent
and a style value describing its behavior and appearance.
|
Modifier and Type | Method and Description |
---|---|
(package private) char |
_findMnemonic(java.lang.String string) |
void |
add(java.lang.String string)
Adds the argument to the end of the receiver's list.
|
void |
add(java.lang.String string,
int index)
Adds the argument to the receiver's list at the given
zero-relative index.
|
void |
addModifyListener(ModifyListener listener)
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
ModifyListener
interface. |
void |
addSelectionListener(SelectionListener listener)
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
SelectionListener
interface. |
void |
addVerifyListener(VerifyListener listener)
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
VerifyListener
interface. |
(package private) void |
arrowEvent(Event event) |
(package private) static int |
checkStyle(int style) |
protected void |
checkSubclass()
Checks that this class can be subclassed.
|
void |
clearSelection()
Sets the selection in the receiver's text field to an empty
selection starting just before the first character.
|
(package private) void |
comboEvent(Event event) |
Point |
computeSize(int wHint,
int hHint,
boolean changed)
Returns the preferred size of the receiver.
|
void |
copy()
Copies the selected text.
|
(package private) void |
createPopup(java.lang.String[] items,
int selectionIndex) |
void |
cut()
Cuts the selected text.
|
void |
deselect(int index)
Deselects the item at the given zero-relative index in the receiver's
list.
|
void |
deselectAll()
Deselects all selected items in the receiver's list.
|
(package private) void |
dropDown(boolean drop) |
(package private) java.lang.String |
getAssociatedLabel() |
Control[] |
getChildren()
Returns a (possibly empty) array containing the receiver's children.
|
boolean |
getEditable()
Gets the editable state.
|
java.lang.String |
getItem(int index)
Returns the item at the given, zero-relative index in the
receiver's list.
|
int |
getItemCount()
Returns the number of items contained in the receiver's list.
|
int |
getItemHeight()
Returns the height of the area which would be used to
display one of the items in the receiver's list.
|
java.lang.String[] |
getItems()
Returns an array of
String s which are the items
in the receiver's list. |
boolean |
getListVisible()
Returns
true if the receiver's list is visible,
and false otherwise. |
Menu |
getMenu()
Returns the receiver's pop up menu if it has one, or null
if it does not.
|
Point |
getSelection()
Returns a
Point whose x coordinate is the start
of the selection in the receiver's text field, and whose y
coordinate is the end of the selection. |
int |
getSelectionIndex()
Returns the zero-relative index of the item which is currently
selected in the receiver's list, or -1 if no item is selected.
|
Shell |
getShell()
Returns the receiver's shell.
|
int |
getStyle()
Returns the receiver's style information.
|
java.lang.String |
getText()
Returns a string containing a copy of the contents of the
receiver's text field.
|
int |
getTextHeight()
Returns the height of the receivers's text field.
|
int |
getTextLimit()
Returns the maximum number of characters that the receiver's
text field is capable of holding.
|
int |
getVisibleItemCount()
Gets the number of items that are visible in the drop
down portion of the receiver's list.
|
(package private) void |
handleFocus(int type) |
(package private) void |
handleScroll(Event event) |
int |
indexOf(java.lang.String string)
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.
|
int |
indexOf(java.lang.String string,
int start)
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.
|
(package private) void |
initAccessible() |
(package private) void |
internalLayout(boolean changed) |
(package private) boolean |
isDropped() |
boolean |
isFocusControl()
Returns
true if the receiver has the user-interface
focus, and false otherwise. |
(package private) boolean |
isParentScrolling(Control scrollableParent) |
(package private) void |
listEvent(Event event) |
void |
paste()
Pastes text from clipboard.
|
(package private) void |
popupEvent(Event event) |
void |
redraw()
Causes the entire bounds of the receiver to be marked
as needing to be redrawn.
|
void |
redraw(int x,
int y,
int width,
int height,
boolean all)
Causes the rectangular area of the receiver specified by
the arguments to be marked as needing to be redrawn.
|
void |
remove(int index)
Removes the item from the receiver's list at the given
zero-relative index.
|
void |
remove(int start,
int end)
Removes the items from the receiver's list which are
between the given zero-relative start and end
indices (inclusive).
|
void |
remove(java.lang.String string)
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.
|
void |
removeAll()
Removes all of the items from the receiver's list and clear the
contents of receiver's text field.
|
void |
removeModifyListener(ModifyListener listener)
Removes the listener from the collection of listeners who will
be notified when the receiver's text is modified.
|
void |
removeSelectionListener(SelectionListener listener)
Removes the listener from the collection of listeners who will
be notified when the user changes the receiver's selection.
|
void |
removeVerifyListener(VerifyListener listener)
Removes the listener from the collection of listeners who will
be notified when the control is verified.
|
void |
select(int index)
Selects the item at the given zero-relative index in the receiver's
list.
|
void |
setBackground(Color color)
Sets the receiver's background color to the color specified
by the argument, or to the default system color for the control
if the argument is null.
|
void |
setEditable(boolean editable)
Sets the editable state.
|
void |
setEnabled(boolean enabled)
Enables the receiver if the argument is
true ,
and disables it otherwise. |
boolean |
setFocus()
Causes the receiver to have the keyboard focus,
such that all keyboard events will be delivered to it.
|
void |
setFont(Font font)
Sets the font that the receiver will use to paint textual information
to the font specified by the argument, or to the default font for that
kind of control if the argument is null.
|
void |
setForeground(Color color)
Sets the receiver's foreground color to the color specified
by the argument, or to the default system color for the control
if the argument is null.
|
void |
setItem(int index,
java.lang.String string)
Sets the text of the item in the receiver's list at the given
zero-relative index to the string argument.
|
void |
setItems(java.lang.String[] items)
Sets the receiver's list to be the given array of items.
|
void |
setLayout(Layout layout)
Sets the layout which is associated with the receiver to be
the argument which may be null.
|
void |
setListVisible(boolean visible)
Marks the receiver's list as visible if the argument is
true ,
and marks it invisible otherwise. |
void |
setMenu(Menu menu)
Sets the receiver's pop up menu to the argument.
|
void |
setSelection(Point selection)
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.
|
void |
setText(java.lang.String string)
Sets the contents of the receiver's text field to the
given string.
|
void |
setTextLimit(int limit)
Sets the maximum number of characters that the receiver's
text field is capable of holding to be the argument.
|
void |
setToolTipText(java.lang.String string)
Sets the receiver's tool tip text to the argument, which
may be null indicating that the default tool tip for the
control will be shown.
|
void |
setVisible(boolean visible)
Marks the receiver as visible if the argument is
true ,
and marks it invisible otherwise. |
void |
setVisibleItemCount(int count)
Sets the number of items that are visible in the drop
down portion of the receiver's list.
|
(package private) java.lang.String |
stripMnemonic(java.lang.String string) |
(package private) void |
textEvent(Event event) |
boolean |
traverse(int event)
Based on the argument, perform one of the expected platform
traversal action.
|
changed, drawBackground, getBackgroundMode, getLayout, getLayoutDeferred, getTabList, isLayoutDeferred, layout, layout, layout, layout, layout, setBackgroundMode, setLayoutDeferred, setTabList
computeTrim, getClientArea, getHorizontalBar, getScrollbarsMode, getVerticalBar
addControlListener, addDragDetectListener, addFocusListener, addGestureListener, addHelpListener, addKeyListener, addMenuDetectListener, addMouseListener, addMouseMoveListener, addMouseTrackListener, addMouseWheelListener, addPaintListener, addTouchListener, addTraverseListener, computeSize, dragDetect, dragDetect, forceFocus, getAccessible, getBackground, getBackgroundImage, getBorderWidth, getBounds, getCursor, getDragDetect, getEnabled, getFont, getForeground, getLayoutData, getLocation, getMonitor, getOrientation, getParent, getRegion, getSize, getToolTipText, getTouchEnabled, getVisible, internal_dispose_GC, internal_new_GC, isEnabled, isReparentable, isVisible, moveAbove, moveBelow, pack, pack, print, removeControlListener, removeDragDetectListener, removeFocusListener, removeGestureListener, removeHelpListener, removeKeyListener, removeMenuDetectListener, removeMouseListener, removeMouseMoveListener, removeMouseTrackListener, removeMouseWheelListener, removePaintListener, removeTouchListener, removeTraverseListener, setBackgroundImage, setBounds, setBounds, setCapture, setCursor, setDragDetect, setLayoutData, setLocation, setLocation, setOrientation, setParent, setRedraw, setRegion, setSize, setSize, setTouchEnabled, toControl, toControl, toDisplay, toDisplay, traverse, traverse, update
addDisposeListener, addListener, checkWidget, dispose, getData, getData, getDisplay, getListeners, isDisposed, isListening, notifyListeners, removeDisposeListener, removeListener, removeListener, reskin, setData, setData, toString
Text text
List list
int visibleItemCount
Shell popup
Button arrow
boolean hasFocus
Listener listener
Listener filter
Color foreground
Color background
Font font
Shell _shell
static final java.lang.String PACKAGE_PREFIX
public CCombo(Composite parent, int style)
The style value is either one of the style constants defined in
class SWT
which is applicable to instances of this
class, or must be built by bitwise OR'ing together
(that is, using the int
"|" operator) two or more
of those SWT
style constants. The class description
lists the style constants that are applicable to the class.
Style bits are also inherited from superclasses.
parent
- a widget which will be the parent of the new instance (cannot be null)style
- the style of widget to constructjava.lang.IllegalArgumentException
- SWTException
- SWT.BORDER
,
SWT.READ_ONLY
,
SWT.FLAT
,
Widget.getStyle()
static int checkStyle(int style)
public void add(java.lang.String string)
string
- the new itemjava.lang.IllegalArgumentException
- SWTException
- add(String,int)
public void add(java.lang.String string, int index)
Note: To add an item at the end of the list, use the
result of calling getItemCount()
as the
index or use add(String)
.
string
- the new itemindex
- the index for the itemjava.lang.IllegalArgumentException
- SWTException
- add(String)
public void addModifyListener(ModifyListener listener)
ModifyListener
interface.listener
- the listener which should be notifiedjava.lang.IllegalArgumentException
- SWTException
- ModifyListener
,
removeModifyListener(org.eclipse.swt.events.ModifyListener)
public void addSelectionListener(SelectionListener listener)
SelectionListener
interface.
widgetSelected
is called when the combo's list selection changes.
widgetDefaultSelected
is typically called when ENTER is pressed the combo's text area.
listener
- the listener which should be notified when the user changes the receiver's selectionjava.lang.IllegalArgumentException
- SWTException
- SelectionListener
,
removeSelectionListener(org.eclipse.swt.events.SelectionListener)
,
SelectionEvent
public void addVerifyListener(VerifyListener listener)
VerifyListener
interface.listener
- the listener which should be notifiedjava.lang.IllegalArgumentException
- SWTException
- VerifyListener
,
removeVerifyListener(org.eclipse.swt.events.VerifyListener)
void arrowEvent(Event event)
protected void checkSubclass()
Widget
The SWT class library is intended to be subclassed
only at specific, controlled points (most notably,
Composite
and Canvas
when
implementing new widgets). This method enforces this
rule unless it is overridden.
IMPORTANT: By providing an implementation of this method that allows a subclass of a class which does not normally allow subclassing to be created, the implementer agrees to be fully responsible for the fact that any such subclass will likely fail between SWT releases and will be strongly platform specific. No support is provided for user-written classes which are implemented in this fashion.
The ability to subclass outside of the allowed SWT classes is intended purely to enable those not on the SWT development team to implement patches in order to get around specific limitations in advance of when those limitations can be addressed by the team. Subclassing should not be attempted without an intimate and detailed understanding of the hierarchy.
checkSubclass
in class Composite
public void clearSelection()
Note: To clear the selected items in the receiver's list,
use deselectAll()
.
SWTException
- deselectAll()
void comboEvent(Event event)
public Point computeSize(int wHint, int hHint, boolean changed)
Control
The preferred size of a control is the size that it would
best be displayed at. The width hint and height hint arguments
allow the caller to ask a control questions such as "Given a particular
width, how high does the control need to be to show all of the contents?"
To indicate that the caller does not wish to constrain a particular
dimension, the constant SWT.DEFAULT
is passed for the hint.
If the changed flag is true
, it indicates that the receiver's
contents have changed, therefore any caches that a layout manager
containing the control may have been keeping need to be flushed. When the
control is resized, the changed flag will be false
, so layout
manager caches can be retained.
computeSize
in class Composite
wHint
- the width hint (can be SWT.DEFAULT
)hHint
- the height hint (can be SWT.DEFAULT
)changed
- true
if the control's contents have changed, and false
otherwiseLayout
,
Control.getBorderWidth()
,
Control.getBounds()
,
Control.getSize()
,
Control.pack(boolean)
,
"computeTrim, getClientArea for controls that implement them"public void copy()
The current selection is copied to the clipboard.
SWTException
- void createPopup(java.lang.String[] items, int selectionIndex)
public void cut()
The current selection is first copied to the clipboard and then deleted from the widget.
SWTException
- public void deselect(int index)
index
- the index of the item to deselectSWTException
- public void deselectAll()
Note: To clear the selection in the receiver's text field,
use clearSelection()
.
SWTException
- clearSelection()
void dropDown(boolean drop)
char _findMnemonic(java.lang.String string)
java.lang.String getAssociatedLabel()
public Control[] getChildren()
Composite
Note: This is not the actual structure used by the receiver to maintain its list of children, so modifying the array will not affect the receiver.
getChildren
in class Composite
Control.moveAbove(org.eclipse.swt.widgets.Control)
,
Control.moveBelow(org.eclipse.swt.widgets.Control)
public boolean getEditable()
SWTException
- public java.lang.String getItem(int index)
index
- the index of the item to returnjava.lang.IllegalArgumentException
- SWTException
- public int getItemCount()
SWTException
- public int getItemHeight()
SWTException
- public java.lang.String[] getItems()
String
s which are the items
in the receiver's list.
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.
SWTException
- public boolean getListVisible()
true
if the receiver's list is visible,
and false
otherwise.
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.
SWTException
- public Menu getMenu()
Control
public Point getSelection()
Point
whose x coordinate is the start
of the selection in the receiver's text field, and whose y
coordinate is the end of the selection. The returned values
are zero-relative. An "empty" selection as indicated by
the the x and y coordinates having the same value.SWTException
- public int getSelectionIndex()
SWTException
- public Shell getShell()
Control
getShell
in class Control
Control.getParent()
public int getStyle()
Widget
Note that the value which is returned by this method may
not match the value which was provided to the constructor
when the receiver was created. This can occur when the underlying
operating system does not support a particular combination of
requested styles. For example, if the platform widget used to
implement a particular SWT widget always has scroll bars, the
result of calling this method would always have the
SWT.H_SCROLL
and SWT.V_SCROLL
bits set.
public java.lang.String getText()
SWTException
- public int getTextHeight()
SWTException
- public int getTextLimit()
setTextLimit()
, it will be the constant
Combo.LIMIT
.SWTException
- public int getVisibleItemCount()
SWTException
- void handleFocus(int type)
void handleScroll(Event event)
public int indexOf(java.lang.String string)
string
- the search itemjava.lang.IllegalArgumentException
- SWTException
- public int indexOf(java.lang.String string, int start)
string
- the search itemstart
- the zero-relative index at which to begin the searchjava.lang.IllegalArgumentException
- SWTException
- void initAccessible()
boolean isDropped()
public boolean isFocusControl()
Control
true
if the receiver has the user-interface
focus, and false
otherwise.isFocusControl
in class Control
boolean isParentScrolling(Control scrollableParent)
void internalLayout(boolean changed)
void listEvent(Event event)
public void paste()
The selected text is deleted from the widget and new text inserted from the clipboard.
SWTException
- void popupEvent(Event event)
public void redraw()
Control
redraw
in class Control
Control.update()
,
PaintListener
,
SWT.Paint
,
SWT.NO_BACKGROUND
,
SWT.NO_REDRAW_RESIZE
,
SWT.NO_MERGE_PAINTS
,
SWT.DOUBLE_BUFFERED
public void redraw(int x, int y, int width, int height, boolean all)
Control
all
flag is true
, any
children of the receiver which intersect with the specified
area will also paint their intersecting areas. If the
all
flag is false
, the children
will not be painted.redraw
in class Control
x
- the x coordinate of the area to drawy
- the y coordinate of the area to drawwidth
- the width of the area to drawheight
- the height of the area to drawall
- true
if children should redraw, and false
otherwiseControl.update()
,
PaintListener
,
SWT.Paint
,
SWT.NO_BACKGROUND
,
SWT.NO_REDRAW_RESIZE
,
SWT.NO_MERGE_PAINTS
,
SWT.DOUBLE_BUFFERED
public void remove(int index)
index
- the index for the itemjava.lang.IllegalArgumentException
- SWTException
- public void remove(int start, int end)
start
- the start of the rangeend
- the end of the rangejava.lang.IllegalArgumentException
- SWTException
- public void remove(java.lang.String string)
string
- the item to removejava.lang.IllegalArgumentException
- SWTException
- public void removeAll()
SWTException
- public void removeModifyListener(ModifyListener listener)
listener
- the listener which should no longer be notifiedjava.lang.IllegalArgumentException
- SWTException
- ModifyListener
,
addModifyListener(org.eclipse.swt.events.ModifyListener)
public void removeSelectionListener(SelectionListener listener)
listener
- the listener which should no longer be notifiedjava.lang.IllegalArgumentException
- SWTException
- SelectionListener
,
addSelectionListener(org.eclipse.swt.events.SelectionListener)
public void removeVerifyListener(VerifyListener listener)
listener
- the listener which should no longer be notifiedjava.lang.IllegalArgumentException
- SWTException
- VerifyListener
,
addVerifyListener(org.eclipse.swt.events.VerifyListener)
public void select(int index)
index
- the index of the item to selectSWTException
- public void setBackground(Color color)
Control
Note: This operation is a hint and may be overridden by the platform. For example, on Windows the background of a Button cannot be changed.
setBackground
in class Control
color
- the new color (or null)public void setEditable(boolean editable)
editable
- the new editable stateSWTException
- public void setEnabled(boolean enabled)
Control
true
,
and disables it otherwise. A disabled control is typically
not selectable from the user interface and draws with an
inactive or "grayed" look.setEnabled
in class Control
enabled
- the new enabled statepublic boolean setFocus()
Control
setFocus
in class Composite
true
if the control got focus, and false
if it was unable to.Control.forceFocus()
public void setFont(Font font)
Control
public void setForeground(Color color)
Control
Note: This operation is a hint and may be overridden by the platform.
setForeground
in class Control
color
- the new color (or null)public void setItem(int index, java.lang.String string)
remove
'ing the old item at the index, and then
add
'ing the new item at that index.index
- the index for the itemstring
- the new text for the itemjava.lang.IllegalArgumentException
- SWTException
- public void setItems(java.lang.String[] items)
items
- the array of itemsjava.lang.IllegalArgumentException
- SWTException
- public void setLayout(Layout layout)
Note: No Layout can be set on this Control because it already manages the size and position of its children.
setLayout
in class Composite
layout
- the receiver's new layout or nullSWTException
- public void setListVisible(boolean visible)
true
,
and marks it invisible otherwise.
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.
visible
- the new visibility stateSWTException
- public void setMenu(Menu menu)
Control
Note: Disposing of a control that has a pop up menu will dispose of the menu. To avoid this behavior, set the menu to null before the control is disposed.
public void setSelection(Point selection)
selection
- a point representing the new selection start and endjava.lang.IllegalArgumentException
- SWTException
- public void setText(java.lang.String string)
Note: The text field in a Combo
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.
string
- the new textjava.lang.IllegalArgumentException
- SWTException
- public void setTextLimit(int limit)
limit
- new text limitjava.lang.IllegalArgumentException
- SWTException
- public void setToolTipText(java.lang.String string)
Control
The mnemonic indicator (character '&') is not displayed in a tool tip. To display a single '&' in the tool tip, the character '&' can be escaped by doubling it in the string.
setToolTipText
in class Control
string
- the new tool tip text (or null)public void setVisible(boolean visible)
Control
true
,
and marks it invisible otherwise.
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.
setVisible
in class Control
visible
- the new visibility statepublic void setVisibleItemCount(int count)
count
- the new number of items to be visibleSWTException
- java.lang.String stripMnemonic(java.lang.String string)
void textEvent(Event event)
public boolean traverse(int event)
Control
SWT.TRAVERSE_ESCAPE
, SWT.TRAVERSE_RETURN
,
SWT.TRAVERSE_TAB_NEXT
, SWT.TRAVERSE_TAB_PREVIOUS
,
SWT.TRAVERSE_ARROW_NEXT
, SWT.TRAVERSE_ARROW_PREVIOUS
,
SWT.TRAVERSE_PAGE_NEXT
and SWT.TRAVERSE_PAGE_PREVIOUS
.