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

📄 composite.java

📁 源码为Eclipse开源开发平台桌面开发工具SWT的源代码,
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
			Control control = tabList [i];			if (control == null) error (SWT.ERROR_INVALID_ARGUMENT);			if (control.isDisposed ()) error (SWT.ERROR_INVALID_ARGUMENT);			if (control.parent != this) error (SWT.ERROR_INVALID_PARENT);		}		Control [] newList = new Control [tabList.length];		System.arraycopy (tabList, 0, newList, 0, tabList.length);		tabList = newList;	} 	this.tabList = tabList;}void setResizeChildren (boolean resize) {	if (resize) {		resizeChildren ();	} else {		int count = getChildrenCount ();		if (count > 1 && lpwp == null) {			lpwp = new WINDOWPOS [count];		}	}}boolean setTabGroupFocus () {	if (isTabItem ()) return setTabItemFocus ();	boolean takeFocus = (style & SWT.NO_FOCUS) == 0;	if ((state & CANVAS) != 0) {		takeFocus = hooksKeys ();		if ((style & SWT.EMBEDDED) != 0) takeFocus = true;	}	if (takeFocus && setTabItemFocus ()) return true;	Control [] children = _getChildren ();	for (int i=0; i<children.length; i++) {		Control child = children [i];		if (child.isTabItem () && child.setRadioFocus ()) return true;	}	for (int i=0; i<children.length; i++) {		Control child = children [i];		if (child.isTabItem () && child.setTabItemFocus ()) return true;	}	return false;}String toolTipText (NMTTDISPINFO hdr) {	if ((hdr.uFlags & OS.TTF_IDISHWND) == 0) {		return null;	}	int hwnd = hdr.idFrom;	if (hwnd == 0) return null;	Control control = display.getControl (hwnd);	if (control == null) return null;	return control.toolTipText;}boolean translateMnemonic (Event event, Control control) {	if (super.translateMnemonic (event, control)) return true;	if (control != null) {		Control [] children = _getChildren ();		for (int i=0; i<children.length; i++) {			Control child = children [i];			if (child.translateMnemonic (event, control)) return true;		}	}	return false;}boolean translateTraversal (MSG msg) {	if ((state & CANVAS) != 0 && (style & SWT.EMBEDDED) != 0) return false;	return super.translateTraversal (msg);}void updateFont (Font oldFont, Font newFont) {	Control [] children = _getChildren ();	for (int i=0; i<children.length; i++) {		Control control = children [i];		if (!control.isDisposed ()) {			control.updateFont (oldFont, newFont);		}	}	super.updateFont (oldFont, newFont);	layout (true);}int widgetStyle () {	/* Force clipping of children by setting WS_CLIPCHILDREN */	return super.widgetStyle () | OS.WS_CLIPCHILDREN;}LRESULT WM_ERASEBKGND (int wParam, int lParam) {	LRESULT result = super.WM_ERASEBKGND (wParam, lParam);	if (result != null) return result;	if ((state & CANVAS) != 0) {		/* Return zero to indicate that the background was not erased */		if ((style & SWT.NO_BACKGROUND) != 0) return LRESULT.ZERO;	}	return result;}LRESULT WM_GETDLGCODE (int wParam, int lParam) {	LRESULT result = super.WM_GETDLGCODE (wParam, lParam);	if (result != null) return result;	if ((state & CANVAS) != 0) {		if ((style & SWT.NO_FOCUS) != 0) return new LRESULT (OS.DLGC_STATIC);		if (hooksKeys ()) {			int flags = OS.DLGC_WANTALLKEYS | OS.DLGC_WANTARROWS | OS.DLGC_WANTTAB;			return new LRESULT (flags);		}		if (OS.GetWindow (handle, OS.GW_CHILD) != 0) return new LRESULT (OS.DLGC_STATIC);	}	return result;}LRESULT WM_GETFONT (int wParam, int lParam) {	LRESULT result = super.WM_GETFONT (wParam, lParam);	if (result != null) return result;	int code = callWindowProc (OS.WM_GETFONT, wParam, lParam);	if (code != 0) return new LRESULT (code);	if (font == 0) font = defaultFont ();	return new LRESULT (font);}LRESULT WM_LBUTTONDOWN (int wParam, int lParam) {	LRESULT result = super.WM_LBUTTONDOWN (wParam, lParam);	/* Set focus for a canvas with no children */	if ((state & CANVAS) != 0) {		if ((style & SWT.NO_FOCUS) == 0 && hooksKeys ()) {			if (OS.GetWindow (handle, OS.GW_CHILD) == 0) setFocus ();		}	}	return result;}LRESULT WM_NOTIFY (int wParam, int lParam) {	if (!OS.IsWinCE) {		NMHDR hdr = new NMHDR ();		OS.MoveMemory (hdr, lParam, NMHDR.sizeof);		switch (hdr.code) {			/*			* Feature in Windows.  When the tool tip control is			* created, the parent of the tool tip is the shell.			* If SetParent () is used to reparent the tool bar			* into a new shell, the tool tip is not reparented			* and pops up underneath the new shell.  The fix is			* to make sure the tool tip is a topmost window.			*/			case OS.TTN_SHOW:			case OS.TTN_POP: {				/*				* Bug in Windows 98 and NT.  Setting the tool tip to be the				* top most window using HWND_TOPMOST can result in a parent				* dialog shell being moved behind its parent if the dialog				* has a sibling that is currently on top.  The fix is to				* lock the z-order of the active window.				* 				* Feature in Windows.  Using SetWindowPos() with HWND_NOTOPMOST				* to clear the topmost state of a window whose parent is already				* topmost clears the topmost state of the parent.  The fix is to				* check if the parent is already on top and neither set or clear				* the topmost status of the tool tip.				*/				int hwndParent = hdr.hwndFrom;				do {					hwndParent = OS.GetParent (hwndParent);					if (hwndParent == 0) break;					int style = OS.GetWindowLong (hwndParent, OS.GWL_EXSTYLE);					if ((style & OS.WS_EX_TOPMOST) != 0) break;				} while (true);				if (hwndParent != 0) break;				display.lockActiveWindow = true;				int flags = OS.SWP_NOACTIVATE | OS.SWP_NOMOVE | OS.SWP_NOSIZE;				int hwndInsertAfter = hdr.code == OS.TTN_SHOW ? OS.HWND_TOPMOST : OS.HWND_NOTOPMOST;				SetWindowPos (hdr.hwndFrom, hwndInsertAfter, 0, 0, 0, 0, flags);				display.lockActiveWindow = false;				break;			}			/*			* Bug in Windows 98.  For some reason, the tool bar control			* sends both TTN_GETDISPINFOW and TTN_GETDISPINFOA to get			* the tool tip text and the tab folder control sends only 			* TTN_GETDISPINFOW.  The fix is to handle only TTN_GETDISPINFOW,			* even though it should never be sent on Windows 98.			*			* NOTE:  Because the size of NMTTDISPINFO differs between			* Windows 98 and NT, guard against the case where the wrong			* kind of message occurs by inlining the memory moves and			* the UNICODE conversion code.			*/			case OS.TTN_GETDISPINFOA:			case OS.TTN_GETDISPINFOW: {				NMTTDISPINFO lpnmtdi;				if (hdr.code == OS.TTN_GETDISPINFOA) {					lpnmtdi = new NMTTDISPINFOA ();					OS.MoveMemory ((NMTTDISPINFOA)lpnmtdi, lParam, NMTTDISPINFOA.sizeof);				} else {					lpnmtdi = new NMTTDISPINFOW ();					OS.MoveMemory ((NMTTDISPINFOW)lpnmtdi, lParam, NMTTDISPINFOW.sizeof);				}				String string = toolTipText (lpnmtdi);				if (string != null) {					Shell shell = getShell ();					string = Display.withCrLf (string);					int length = string.length ();					char [] chars = new char [length + 1];					string.getChars (0, length, chars, 0);										/*					* Ensure that the orientation of the tool tip matches					* the orientation of the control.					*/					int hwnd = hdr.idFrom;					if (hwnd != 0 && ((lpnmtdi.uFlags & OS.TTF_IDISHWND) != 0)) {						Control control = display.getControl (hwnd);						if (control != null) {							if ((control.getStyle () & SWT.RIGHT_TO_LEFT) != 0) {								lpnmtdi.uFlags |= OS.TTF_RTLREADING;							} else {								lpnmtdi.uFlags &= ~OS.TTF_RTLREADING;							}						}					}										if (hdr.code == OS.TTN_GETDISPINFOA) {						byte [] bytes = new byte [chars.length * 2];						OS.WideCharToMultiByte (OS.CP_ACP, 0, chars, chars.length, bytes, bytes.length, null, null);						shell.setToolTipText (lpnmtdi, bytes);						OS.MoveMemory (lParam, (NMTTDISPINFOA)lpnmtdi, NMTTDISPINFOA.sizeof);					} else {						shell.setToolTipText (lpnmtdi, chars);						OS.MoveMemory (lParam, (NMTTDISPINFOW)lpnmtdi, NMTTDISPINFOW.sizeof);					}					return LRESULT.ZERO;				}				break;			}		}	}	return super.WM_NOTIFY (wParam, lParam);}LRESULT WM_PAINT (int wParam, int lParam) {	if ((state & CANVAS) == 0) {		return super.WM_PAINT (wParam, lParam);	}	/* Set the clipping bits */	int oldBits = 0, newBits = 0;	if (!OS.IsWinCE) {		oldBits = OS.GetWindowLong (handle, OS.GWL_STYLE);		newBits = oldBits | OS.WS_CLIPSIBLINGS | OS.WS_CLIPCHILDREN;			if (newBits != oldBits) OS.SetWindowLong (handle, OS.GWL_STYLE, newBits);	}	/* Paint the control and the background */	PAINTSTRUCT ps = new PAINTSTRUCT ();	if (hooks (SWT.Paint)) {				/* Get the damage */		int [] lpRgnData = null;		boolean isComplex = false;		boolean exposeRegion = false;		if ((style & SWT.NO_MERGE_PAINTS) != 0) {			int rgn = OS.CreateRectRgn (0, 0, 0, 0);			isComplex = OS.GetUpdateRgn (handle, rgn, false) == OS.COMPLEXREGION;			if (isComplex) {				int nBytes = OS.GetRegionData (rgn, 0, null);				lpRgnData = new int [nBytes / 4];				exposeRegion = OS.GetRegionData (rgn, nBytes, lpRgnData) != 0;			}			OS.DeleteObject (rgn);		}			/* Create the paint GC */		GCData data = new GCData ();		data.ps = ps;		GC gc = GC.win32_new (this, data);		int hDC = gc.handle;				/* Send the paint event */		Event event = new Event ();		event.gc = gc;		if (isComplex && exposeRegion) {			RECT rect = new RECT ();			int count = lpRgnData [2];			for (int i=0; i<count; i++) {				OS.SetRect (rect,					lpRgnData [8 + (i << 2)],					lpRgnData [8 + (i << 2) + 1],					lpRgnData [8 + (i << 2) + 2],					lpRgnData [8 + (i << 2) + 3]);				if ((style & SWT.NO_BACKGROUND) == 0) {					drawBackground (hDC, rect);				}				event.x = rect.left;				event.y = rect.top;				event.width = rect.right - rect.left;				event.height = rect.bottom - rect.top;				event.count = count - 1 - i;				/*				* It is possible (but unlikely), that application				* code could have disposed the widget in the paint				* event.  If this happens, attempt to give back the				* paint GC anyways because this is a scarce Windows				* resource.				*/				sendEvent (SWT.Paint, event);				if (isDisposed ()) break;			}		} else {			if ((style & SWT.NO_BACKGROUND) == 0) {				RECT rect = new RECT ();				OS.SetRect (rect, ps.left, ps.top, ps.right, ps.bottom);				drawBackground (hDC, rect);			}			event.x = ps.left;			event.y = ps.top;			event.width = ps.right - ps.left;			event.height = ps.bottom - ps.top;			sendEvent (SWT.Paint, event);		}		// widget could be disposed at this point			/* Dispose the paint GC */		event.gc = null;		gc.dispose ();	} else {		int hDC = OS.BeginPaint (handle, ps);		if ((style & SWT.NO_BACKGROUND) == 0) {			RECT rect = new RECT ();			OS.SetRect (rect, ps.left, ps.top, ps.right, ps.bottom);			drawBackground (hDC, rect);		}		OS.EndPaint (handle, ps);	}	/* Restore the clipping bits */	if (!OS.IsWinCE) { 		if (newBits != oldBits) {			/*			* It is possible (but unlikely), that application			* code could have disposed the widget in the paint			* event.  If this happens, don't attempt to restore			* the style.			*/			if (!isDisposed ()) {				OS.SetWindowLong (handle, OS.GWL_STYLE, oldBits);			}		}	}	return LRESULT.ZERO;}LRESULT WM_PRINTCLIENT (int wParam, int lParam) {	LRESULT result = super.WM_PRINTCLIENT (wParam, lParam);	if (result != null) return result;	if ((state & CANVAS) != 0) {		forceResize ();		int nSavedDC = OS.SaveDC (wParam);		RECT rect = new RECT ();		OS.GetClientRect (handle, rect);		if ((style & SWT.NO_BACKGROUND) == 0) {			drawBackground (wParam, rect);		}		GCData data = new GCData ();		data.device = display;		GC gc = GC.win32_new (wParam, data);		Event event = new Event ();		event.gc = gc;		event.x = rect.left;		event.y = rect.top;		event.width = rect.right - rect.left;		event.height = rect.bottom - rect.top;		sendEvent (SWT.Paint, event);		event.gc = null;		gc.dispose ();		OS.RestoreDC (wParam, nSavedDC);	}	return result;}LRESULT WM_SETFONT (int wParam, int lParam) {	return super.WM_SETFONT (font = wParam, lParam);}LRESULT WM_SIZE (int wParam, int lParam) {		/* Begin deferred window positioning */	setResizeChildren (false);		/* Resize and Layout */	LRESULT result = super.WM_SIZE (wParam, lParam);	/*	* It is possible (but unlikely), that application	* code could have disposed the widget in the resize	* event.  If this happens, end the processing of the	* Windows message by returning the result of the	* WM_SIZE message.	*/	if (isDisposed ()) return result;	if (layout != null) layout.layout (this, false);	/* End deferred window positioning */	setResizeChildren (true);		/* Damage the widget to cause a repaint */	if ((state & CANVAS) != 0) {		if ((style & SWT.NO_REDRAW_RESIZE) == 0) {			if (hooks (SWT.Paint)) {				OS.InvalidateRect (handle, null, true);			}		}	}	/* Resize the embedded window */	if ((state & CANVAS) != 0 && (style & SWT.EMBEDDED) != 0) {		int hwndChild = OS.GetWindow (handle, OS.GW_CHILD);		if (hwndChild != 0) {			int threadId = OS.GetWindowThreadProcessId (hwndChild, null);			if (threadId != OS.GetCurrentThreadId ()) {				if (display.msgHook == 0) {					if (!OS.IsWinCE) {						display.getMsgCallback = new Callback (display, "getMsgProc", 3);						display.getMsgProc = display.getMsgCallback.getAddress ();						if (display.getMsgProc == 0) error (SWT.ERROR_NO_MORE_CALLBACKS);						display.msgHook = OS.SetWindowsHookEx (OS.WH_GETMESSAGE, display.getMsgProc, OS.GetLibraryHandle(), threadId);					}				}				OS.PostThreadMessage (threadId, Display.SWT_RESIZE, hwndChild, lParam);			}		}	}	return result;}LRESULT WM_SYSCOLORCHANGE (int wParam, int lParam) {	Control [] children = _getChildren ();	for (int i=0; i<children.length; i++) {		int hwndChild = children [i].handle;		OS.SendMessage (hwndChild, OS.WM_SYSCOLORCHANGE, 0, 0);	}	return null;}LRESULT WM_SYSCOMMAND (int wParam, int lParam) {	LRESULT result = super.WM_SYSCOMMAND (wParam, lParam);	if (result != null) return result;			/*	* Check to see if the command is a system command or	* a user menu item that was added to the system menu.	*/	if ((wParam & 0xF000) == 0) return result;	/*	* Bug in Windows.  When a vertical or horizontal scroll bar is	* hidden or shown while the opposite scroll bar is being scrolled	* by the user (with WM_HSCROLL code SB_LINEDOWN), the scroll bar	* does not redraw properly.  The fix is to detect this case and	* redraw the non-client area.	*/	if (!OS.IsWinCE) {		int cmd = wParam & 0xFFF0;		switch (cmd) {			case OS.SC_HSCROLL:			case OS.SC_VSCROLL:				boolean showHBar = horizontalBar != null && horizontalBar.getVisible ();				boolean showVBar = verticalBar != null && verticalBar.getVisible ();				int code = callWindowProc (OS.WM_SYSCOMMAND, wParam, lParam);				if ((showHBar != (horizontalBar != null && horizontalBar.getVisible ())) ||					(showVBar != (verticalBar != null && verticalBar.getVisible ()))) {						int flags = OS.RDW_FRAME | OS.RDW_INVALIDATE | OS.RDW_UPDATENOW;						OS.RedrawWindow (handle, null, 0, flags);					}						if (code == 0) return LRESULT.ZERO;				return new LRESULT (code);		}	}	/* Return the result */	return result;}}

⌨️ 快捷键说明

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