⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 toolitem.java

📁 源码为Eclipse开源开发平台桌面开发工具SWT的源代码,
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
	toolTipText = null;	disabledImage = hotImage = null;	if (disabledImage2 != null) disabledImage2.dispose ();	disabledImage2 = null;}void releaseImages () {	TBBUTTONINFO info = new TBBUTTONINFO ();	info.cbSize = TBBUTTONINFO.sizeof;	info.dwMask = OS.TBIF_IMAGE | OS.TBIF_STYLE;	int hwnd = parent.handle;	OS.SendMessage (hwnd, OS.TB_GETBUTTONINFO, id, info);	/*	* Feature in Windows.  For some reason, a tool item that has	* the style BTNS_SEP does not return I_IMAGENONE when queried	* for an image index, despite the fact that no attempt has been	* made to assign an image to the item.  As a result, operations	* on an image list that use the wrong index cause random results.		* The fix is to ensure that the tool item is not a separator	* before using the image index.  Since separators cannot have	* an image and one is never assigned, this is not a problem.	*/	if ((info.fsStyle & OS.BTNS_SEP) == 0 && info.iImage != OS.I_IMAGENONE) {		ImageList imageList = parent.getImageList ();		ImageList hotImageList = parent.getHotImageList ();		ImageList disabledImageList = parent.getDisabledImageList();		if (imageList != null) imageList.put (info.iImage, null);		if (hotImageList != null) hotImageList.put (info.iImage, null);		if (disabledImageList != null) disabledImageList.put (info.iImage, null);	}}/** * Removes the listener from the collection of listeners who will * be notified when the control is selected. * * @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 #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);	}void resizeControl () {	if (control != null && !control.isDisposed ()) {		/*		* Set the size and location of the control		* separately to minimize flashing in the		* case where the control does not resize		* to the size that was requested.  This		* case can occur when the control is a		* combo box.		*/		Rectangle itemRect = getBounds ();		control.setSize (itemRect.width, itemRect.height);		Rectangle rect = control.getBounds ();		rect.x = itemRect.x + (itemRect.width - rect.width) / 2;		rect.y = itemRect.y + (itemRect.height - rect.height) / 2;		control.setLocation (rect.x, rect.y);	}}void selectRadio () {	int index = 0;	ToolItem [] items = parent.getItems ();	while (index < items.length && items [index] != this) index++;	int i = index - 1;	while (i >= 0 && items [i].setRadioSelection (false)) --i;	int j = index + 1;	while (j < items.length && items [j].setRadioSelection (false)) j++;	setSelection (true);}/** * Sets the control that is used to fill the bounds of * the item when the items is a <code>SEPARATOR</code>. * * @param control the new control * * @exception IllegalArgumentException <ul> *    <li>ERROR_INVALID_ARGUMENT - if the control has been disposed</li>  *    <li>ERROR_INVALID_PARENT - if the control is not in the same widget tree</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 setControl (Control control) {	checkWidget();	if (control != null) {		if (control.isDisposed()) error (SWT.ERROR_INVALID_ARGUMENT);		if (control.parent != parent) error (SWT.ERROR_INVALID_PARENT);	}	if ((style & SWT.SEPARATOR) == 0) return;	this.control = control;	resizeControl ();}/** * Enables the receiver if the argument is <code>true</code>, * and disables it otherwise. * <p> * A disabled control is typically * not selectable from the user interface and draws with an * inactive or "grayed" look. * </p> * * @param enabled the new enabled 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> */public void setEnabled (boolean enabled) {	checkWidget();	int hwnd = parent.handle;	int fsState = OS.SendMessage (hwnd, OS.TB_GETSTATE, id, 0);	fsState &= ~OS.TBSTATE_ENABLED;	if (enabled) fsState |= OS.TBSTATE_ENABLED;	OS.SendMessage (hwnd, OS.TB_SETSTATE, id, fsState);	if (image != null) updateImages ();}/** * Sets the receiver's disabled image to the argument, which may be * null indicating that no disabled image should be displayed. * <p> * The disbled image is displayed when the receiver is disabled. * </p> * * @param image the disabled image to display on the receiver (may be null) * * @exception IllegalArgumentException <ul> *    <li>ERROR_INVALID_ARGUMENT - if the image has been disposed</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 setDisabledImage (Image image) {	checkWidget();	if ((style & SWT.SEPARATOR) != 0) return;	if (image != null && image.isDisposed()) error(SWT.ERROR_INVALID_ARGUMENT);	disabledImage = image;	updateImages ();}/** * Sets the receiver's hot image to the argument, which may be * null indicating that no hot image should be displayed. * <p> * The hot image is displayed when the mouse enters the receiver. * </p> * * @param image the hot image to display on the receiver (may be null) * * @exception IllegalArgumentException <ul> *    <li>ERROR_INVALID_ARGUMENT - if the image has been disposed</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 setHotImage (Image image) {	checkWidget();	if ((style & SWT.SEPARATOR) != 0) return;	if (image != null && image.isDisposed()) error(SWT.ERROR_INVALID_ARGUMENT);	hotImage = image;	updateImages ();}public void setImage (Image image) {	checkWidget();	if ((style & SWT.SEPARATOR) != 0) return;	if (image != null && image.isDisposed()) error(SWT.ERROR_INVALID_ARGUMENT);	super.setImage (image);	updateImages ();}boolean setRadioSelection (boolean value) {	if ((style & SWT.RADIO) == 0) return false;	if (getSelection () != value) {		setSelection (value);		postEvent (SWT.Selection);	}	return true;}/** * Sets the selection state of the receiver. * <p> * When the receiver is of type <code>CHECK</code> or <code>RADIO</code>, * it is selected when it is checked (which some platforms draw as a * pushed in button). * </p> * * @param selected the new selection 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> */public void setSelection (boolean selected) {	checkWidget();	if ((style & (SWT.CHECK | SWT.RADIO)) == 0) return;	int hwnd = parent.handle;	int fsState = OS.SendMessage (hwnd, OS.TB_GETSTATE, id, 0);	fsState &= ~OS.TBSTATE_CHECKED;	if (selected) fsState |= OS.TBSTATE_CHECKED;	OS.SendMessage (hwnd, OS.TB_SETSTATE, id, fsState);}/** * Sets the receiver's text. The string may include * the mnemonic character. * </p> * <p> * Mnemonics are indicated by an '&amp' that causes the next * character to be the mnemonic.  When the user presses a * key sequence that matches the mnemonic, a selection * event occurs. On most platforms, the mnemonic appears * underlined but may be emphasised in a platform specific * manner.  The mnemonic indicator character '&amp' can be * escaped by doubling it in the string, causing a single *'&amp' to be displayed. * </p> *  * @param string the new text * * @exception IllegalArgumentException <ul> *    <li>ERROR_NULL_ARGUMENT - if the text 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) {	checkWidget();	if (string == null) error (SWT.ERROR_NULL_ARGUMENT);	if ((style & SWT.SEPARATOR) != 0) return;	super.setText (string);	int hwnd = parent.handle;	int hHeap = OS.GetProcessHeap ();	TCHAR buffer = new TCHAR (parent.getCodePage (), string, true);	int byteCount = buffer.length () * TCHAR.sizeof;	int pszText = OS.HeapAlloc (hHeap, OS.HEAP_ZERO_MEMORY, byteCount);	OS.MoveMemory (pszText, buffer, byteCount); 	TBBUTTONINFO info = new TBBUTTONINFO ();	info.cbSize = TBBUTTONINFO.sizeof;	info.dwMask = OS.TBIF_TEXT | OS.TBIF_STYLE;	info.pszText = pszText;	info.fsStyle = (byte) (widgetStyle () | OS.BTNS_AUTOSIZE);	if (string.length () != 0) info.fsStyle |= OS.BTNS_SHOWTEXT;	OS.SendMessage (hwnd, OS.TB_SETBUTTONINFO, id, info);	OS.HeapFree (hHeap, 0, pszText);		/*	* Bug in Windows.  For some reason, when the font is set	* before any tool item has text, the tool items resize to	* a very small size.  Also, a tool item will only show text	* when text has already been set on one item and then a new	* item is created.  The fix is to use WM_SETFONT to force	* the tool bar to redraw and layout.  [1G0G7TV, 1G0FUJ5]	*/	int hFont = OS.SendMessage (hwnd, OS.WM_GETFONT, 0, 0);	OS.SendMessage (hwnd, OS.WM_SETFONT, hFont, 0);		parent.layoutItems ();}/** * Sets the receiver's tool tip text to the argument, which * may be null indicating that no tool tip text should be shown. * * @param string the new tool tip text (or null) * * @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 setToolTipText (String string) {	checkWidget();	toolTipText = string;}/** * Sets the width of the receiver. * * @param width the new width * * @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 setWidth (int width) {	checkWidget();	if ((style & SWT.SEPARATOR) == 0) return;	if (width < 0) return;	int hwnd = parent.handle;	TBBUTTONINFO info = new TBBUTTONINFO ();	info.cbSize = TBBUTTONINFO.sizeof;	info.dwMask = OS.TBIF_SIZE;	info.cx = (short) width;	OS.SendMessage (hwnd, OS.TB_SETBUTTONINFO, id, info);	parent.layoutItems ();}void updateImages () {	int hwnd = parent.handle;	TBBUTTONINFO info = new TBBUTTONINFO ();	info.cbSize = TBBUTTONINFO.sizeof;	info.dwMask = OS.TBIF_IMAGE;	OS.SendMessage (hwnd, OS.TB_GETBUTTONINFO, id, info);	if (info.iImage == OS.I_IMAGENONE && image == null) return;	ImageList imageList = parent.getImageList ();	ImageList hotImageList = parent.getHotImageList ();	ImageList disabledImageList = parent.getDisabledImageList();	if (info.iImage == OS.I_IMAGENONE) {		Rectangle bounds = image.getBounds ();		Point size = new Point (bounds.width, bounds.height);		if (imageList == null) imageList = display.getToolImageList (size);		info.iImage = imageList.add (image);		parent.setImageList (imageList);		if (disabledImageList == null) disabledImageList = display.getToolDisabledImageList (size);		Image disabled = disabledImage;		if (disabledImage == null) {			if (disabledImage2 != null) disabledImage2.dispose ();			disabledImage2 = null;			disabled = image;			if (!getEnabled ()) {				Color color = parent.getBackground ();				disabled = disabledImage2 = createDisabledImage (image, color);			}		}		disabledImageList.add (disabled);		parent.setDisabledImageList (disabledImageList);//		if ((parent.style & SWT.FLAT) != 0) {			if (hotImageList == null) hotImageList = display.getToolHotImageList (size);			hotImageList.add (hotImage != null ? hotImage : image);			parent.setHotImageList (hotImageList);//		}	} else {		if (imageList != null) imageList.put (info.iImage, image);		if (disabledImageList != null) {			Image disabled = null;			if (image != null) {				if (disabledImage2 != null) disabledImage2.dispose ();				disabledImage2 = null;				disabled = disabledImage;				if (disabledImage == null) {					disabled = image;					if (!getEnabled ()) {						Color color = parent.getBackground ();						disabled = disabledImage2 = createDisabledImage (image, color);					}				}			}			disabledImageList.put (info.iImage, disabled);		}		if (hotImageList != null) {			Image hot = null;			if (image != null) hot = hotImage != null ? hotImage : image;			hotImageList.put (info.iImage, hot);		}		if (image == null) info.iImage = OS.I_IMAGENONE;	}	OS.SendMessage (hwnd, OS.TB_SETBUTTONINFO, id, info);		parent.layoutItems ();}int widgetStyle () {	if ((style & SWT.DROP_DOWN) != 0) return OS.BTNS_DROPDOWN;	if ((style & SWT.PUSH) != 0) return OS.BTNS_BUTTON;	if ((style & SWT.CHECK) != 0) return OS.BTNS_CHECK;	/*	* This code is intentionally commented.  In order to	* consistently support radio tool items across platforms,	* the platform radio behavior is not used.	*///	if ((style & SWT.RADIO) != 0) return OS.BTNS_CHECKGROUP;	if ((style & SWT.RADIO) != 0) return OS.BTNS_CHECK;	if ((style & SWT.SEPARATOR) != 0) return OS.BTNS_SEP;	return OS.BTNS_BUTTON;}LRESULT wmCommandChild (int wParam, int lParam) {	if ((style & SWT.RADIO) != 0) {		if ((parent.getStyle () & SWT.NO_RADIO_GROUP) == 0) {			selectRadio ();		}	}	postEvent (SWT.Selection);	return null;}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -