diff options
Diffstat (limited to 'bundles/org.eclipse.swt/Eclipse SWT Theme/win32/org')
14 files changed, 0 insertions, 1548 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Theme/win32/org/eclipse/swt/internal/theme/ButtonDrawData.java b/bundles/org.eclipse.swt/Eclipse SWT Theme/win32/org/eclipse/swt/internal/theme/ButtonDrawData.java deleted file mode 100644 index 1d813c72db..0000000000 --- a/bundles/org.eclipse.swt/Eclipse SWT Theme/win32/org/eclipse/swt/internal/theme/ButtonDrawData.java +++ /dev/null @@ -1,109 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2007 IBM Corporation 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 - *******************************************************************************/ -package org.eclipse.swt.internal.theme; - -import org.eclipse.swt.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.internal.win32.*; - -public class ButtonDrawData extends DrawData { - -public ButtonDrawData() { - state = new int[1]; -} - -int[] getPartId(int part) { - int state = this.state[part]; - int style = this.style; - int iPartId = 0, iStateId = 0; - if ((style & SWT.PUSH) != 0) { - iPartId = OS.BP_PUSHBUTTON; - iStateId = OS.PBS_NORMAL; - if ((state & DrawData.DEFAULTED) != 0 && (state & DrawData.ACTIVE) != 0) iStateId = OS.PBS_DEFAULTED; - if ((state & DrawData.HOT) != 0) iStateId = OS.PBS_HOT; - if ((state & DrawData.PRESSED) != 0) iStateId = OS.PBS_PRESSED; - if ((state & DrawData.DISABLED) != 0) iStateId = OS.PBS_DISABLED; - } - if ((style & SWT.RADIO) != 0) { - iPartId = OS.BP_RADIOBUTTON; - } - if ((style & SWT.CHECK) != 0) { - iPartId = OS.BP_CHECKBOX; - } - if ((style & (SWT.CHECK | SWT.RADIO)) != 0) { - if ((state & DrawData.SELECTED) != 0) { - iStateId = OS.CBS_CHECKEDNORMAL; - if ((state & DrawData.HOT) != 0) iStateId = OS.CBS_CHECKEDHOT; - if ((state & DrawData.PRESSED) != 0) iStateId = OS.CBS_CHECKEDPRESSED; - if ((state & DrawData.DISABLED) != 0) iStateId = OS.CBS_CHECKEDDISABLED; - } else { - iStateId = OS.CBS_UNCHECKEDNORMAL; - if ((state & DrawData.HOT) != 0) iStateId = OS.CBS_UNCHECKEDHOT; - if ((state & DrawData.PRESSED) != 0) iStateId = OS.CBS_UNCHECKEDPRESSED; - if ((state & DrawData.DISABLED) != 0) iStateId = OS.CBS_UNCHECKEDDISABLED; - } - } - return new int[]{iPartId, iStateId}; -} - -void draw(Theme theme, GC gc, Rectangle bounds) { - if (OS.COMCTL32_MAJOR >= 6 && OS.IsAppThemed ()) { - //TODO - arrow and toggle - int /*long*/ hTheme = OS.OpenThemeData(0, getClassId()); - RECT rect = new RECT (); - rect.left = bounds.x; - rect.right = bounds.x + bounds.width; - rect.top = bounds.y; - rect.bottom = bounds.y + bounds.height; - int[] part = getPartId(DrawData.WIDGET_WHOLE); - if ((style & (SWT.CHECK | SWT.RADIO)) != 0) { - SIZE size = new SIZE(); - OS.GetThemePartSize(hTheme, gc.handle, part[0], part[1], rect, 2, size); - rect.right = rect.left + size.cx; - OS.DrawThemeBackground (hTheme, gc.handle, part[0], part[1], rect, null); - rect.left = rect.right + 3; - rect.right = rect.left + bounds.width - size.cx - 3; - } else { - OS.DrawThemeBackground (hTheme, gc.handle, part[0], part[1], rect, null); - } - Rectangle clientArea = this.clientArea; - if (clientArea != null) { - RECT contentRect = new RECT(); - OS.GetThemeBackgroundContentRect(hTheme, gc.handle, part[0], part[1], rect, contentRect); - clientArea.x = contentRect.left; - clientArea.y = contentRect.top; - clientArea.width = contentRect.right - contentRect.left; - clientArea.height = contentRect.bottom - contentRect.top; - } - OS.CloseThemeData(hTheme); - } -} - -int hit(Theme theme, Point position, Rectangle bounds) { - if (!(OS.COMCTL32_MAJOR >= 6 && OS.IsAppThemed ())) return DrawData.WIDGET_NOWHERE; - if (!bounds.contains(position)) return DrawData.WIDGET_NOWHERE; - int /*long*/ hTheme = OS.OpenThemeData(0, getClassId()); - RECT rect = new RECT (); - rect.left = bounds.x; - rect.right = bounds.x + bounds.width; - rect.top = bounds.y; - rect.bottom = bounds.y + bounds.height; - POINT pt = new POINT(); - pt.x = position.x; - pt.y = position.y; - short[] code = new short[1]; - int[] part = getPartId(DrawData.WIDGET_WHOLE); - OS.HitTestThemeBackground(hTheme, 0, part[0], part[1], 0, rect, 0, pt, code); - OS.CloseThemeData (hTheme); - return code[0] == OS.HTNOWHERE ? DrawData.WIDGET_NOWHERE : DrawData.WIDGET_WHOLE; -} - -} diff --git a/bundles/org.eclipse.swt/Eclipse SWT Theme/win32/org/eclipse/swt/internal/theme/ComboDrawData.java b/bundles/org.eclipse.swt/Eclipse SWT Theme/win32/org/eclipse/swt/internal/theme/ComboDrawData.java deleted file mode 100644 index 49da9f35bd..0000000000 --- a/bundles/org.eclipse.swt/Eclipse SWT Theme/win32/org/eclipse/swt/internal/theme/ComboDrawData.java +++ /dev/null @@ -1,104 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2007 IBM Corporation 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 - *******************************************************************************/ -package org.eclipse.swt.internal.theme; - -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.internal.win32.*; - -public class ComboDrawData extends DrawData { - -public ComboDrawData() { - state = new int[2]; -} - -void draw(Theme theme, GC gc, Rectangle bounds) { - if (OS.COMCTL32_MAJOR >= 6 && OS.IsAppThemed ()) { - int /*long*/ hTheme = OS.OpenThemeData(0, EDIT); - RECT rect = new RECT (); - rect.left = bounds.x; - rect.right = bounds.x + bounds.width; - rect.top = bounds.y; - rect.bottom = bounds.y + bounds.height; - int[] part = getPartId(DrawData.WIDGET_WHOLE); - OS.DrawThemeBackground (hTheme, gc.handle, part[0], part[1], rect, null); - RECT contentRect = new RECT(); - OS.GetThemeBackgroundContentRect(hTheme, gc.handle, part[0], part[1], rect, contentRect); - Rectangle clientArea = this.clientArea; - if (clientArea != null) { - clientArea.x = contentRect.left; - clientArea.y = contentRect.top; - clientArea.width = contentRect.right - contentRect.left; - clientArea.height = contentRect.bottom - contentRect.top; - } - OS.CloseThemeData(hTheme); - hTheme = OS.OpenThemeData(0, getClassId()); - int width = OS.GetThemeSysSize(hTheme, OS.SM_CXVSCROLL); - rect.left = contentRect.right - width; - rect.top = contentRect.top; - rect.right = contentRect.right; - rect.bottom = contentRect.bottom; - part = getPartId(DrawData.COMBO_ARROW); - OS.DrawThemeBackground (hTheme, gc.handle, part[0], part[1], rect, null); - OS.CloseThemeData(hTheme); - if (clientArea != null) { - clientArea.width -= width; - } - } -} - -char[] getClassId() { - return COMBOBOX; -} - -int[] getPartId(int part) { - int state = this.state[part]; - int iPartId = 0, iStateId = 0; - switch (part) { - case DrawData.WIDGET_WHOLE: - iPartId = OS.EP_EDITTEXT; - iStateId = OS.ETS_NORMAL; - if ((state & DrawData.DISABLED) != 0) iStateId = OS.ETS_DISABLED; - break; - case DrawData.COMBO_ARROW: - iPartId = OS.CP_DROPDOWNBUTTON; - iStateId = OS.CBXS_NORMAL; - if ((state & DrawData.DISABLED) != 0) iStateId = OS.CBXS_DISABLED; - if ((state & DrawData.HOT) != 0) iStateId = OS.CBXS_HOT; - if ((state & DrawData.PRESSED) != 0) iStateId = OS.CBXS_PRESSED; - break; - } - return new int[]{iPartId, iStateId}; -} - -int hit(Theme theme, Point position, Rectangle bounds) { - if (!(OS.COMCTL32_MAJOR >= 6 && OS.IsAppThemed ())) return DrawData.WIDGET_NOWHERE; - if (!bounds.contains(position)) return DrawData.WIDGET_NOWHERE; - int /*long*/ hTheme = OS.OpenThemeData(0, EDIT); - int[] part = getPartId(DrawData.WIDGET_WHOLE); - int iPartId = part[0]; - int iStateId = part[1]; - RECT rect = new RECT (); - rect.left = bounds.x; - rect.right = bounds.x + bounds.width; - rect.top = bounds.y; - rect.bottom = bounds.y + bounds.height; - RECT contentRect = new RECT(); - OS.GetThemeBackgroundContentRect(hTheme, 0, iPartId, iStateId, rect, contentRect); - OS.CloseThemeData(hTheme); - hTheme = OS.OpenThemeData(0, getClassId()); - int width = OS.GetThemeSysSize(hTheme, OS.SM_CXVSCROLL); - OS.CloseThemeData(hTheme); - Rectangle arrowRect = new Rectangle(contentRect.right - width, contentRect.top, contentRect.bottom - contentRect.top, width); - if (arrowRect.contains(position)) return DrawData.COMBO_ARROW; - return DrawData.WIDGET_WHOLE; -} - -} diff --git a/bundles/org.eclipse.swt/Eclipse SWT Theme/win32/org/eclipse/swt/internal/theme/DrawData.java b/bundles/org.eclipse.swt/Eclipse SWT Theme/win32/org/eclipse/swt/internal/theme/DrawData.java deleted file mode 100644 index 4ba89397d9..0000000000 --- a/bundles/org.eclipse.swt/Eclipse SWT Theme/win32/org/eclipse/swt/internal/theme/DrawData.java +++ /dev/null @@ -1,178 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2007 IBM Corporation 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 - *******************************************************************************/ -package org.eclipse.swt.internal.theme; - -import org.eclipse.swt.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.internal.win32.*; - -public class DrawData { - public int style; - public int[] state; - public Rectangle clientArea; - - /** Part states */ - public static final int SELECTED = 1 << 1; - public static final int FOCUSED = 1 << 2; - public static final int PRESSED = 1 << 3; - public static final int ACTIVE = 1 << 4; - public static final int DISABLED = 1 << 5; - public static final int HOT = 1 << 6; - public static final int DEFAULTED = 1 << 7; - public static final int GRAYED = 1 << 8; - - /** Text and Image drawing flags */ - public static final int DRAW_LEFT = 1 << 4; - public static final int DRAW_TOP = 1 << 5; - public static final int DRAW_RIGHT = 1 << 6; - public static final int DRAW_BOTTOM = 1 << 7; - public static final int DRAW_HCENTER = 1 << 8; - public static final int DRAW_VCENTER = 1 << 9; - - /** Widget parts */ - public static final int WIDGET_NOWHERE = -1; - public static final int WIDGET_WHOLE = 0; - - /** Scrollbar parts */ - public static final int SCROLLBAR_UP_ARROW = 1; - public static final int SCROLLBAR_DOWN_ARROW = 2; - public static final int SCROLLBAR_LEFT_ARROW = SCROLLBAR_UP_ARROW; - public static final int SCROLLBAR_RIGHT_ARROW = SCROLLBAR_DOWN_ARROW; - public static final int SCROLLBAR_UP_TRACK = 3; - public static final int SCROLLBAR_DOWN_TRACK = 4; - public static final int SCROLLBAR_LEFT_TRACK = SCROLLBAR_UP_TRACK; - public static final int SCROLLBAR_RIGHT_TRACK = SCROLLBAR_DOWN_TRACK; - public static final int SCROLLBAR_THUMB = 5; - - /** Scale parts */ - public static final int SCALE_UP_TRACK = 1; - public static final int SCALE_LEFT_TRACK = SCALE_UP_TRACK; - public static final int SCALE_DOWN_TRACK = 2; - public static final int SCALE_RIGHT_TRACK = SCALE_DOWN_TRACK; - public static final int SCALE_THUMB = 3; - - /** ToolItem parts */ - public static final int TOOLITEM_ARROW = 1; - - /** Combo parts */ - public static final int COMBO_ARROW = 1; - - static final char [] EDIT = new char [] {'E', 'D', 'I', 'T', 0}; - static final char [] COMBOBOX = new char [] {'C', 'O', 'M', 'B', 'O', 'B', 'O', 'X', 0}; - static final char [] BUTTON = new char [] {'B', 'U', 'T', 'T', 'O', 'N', 0}; - static final char [] PROGRESS = new char [] {'P', 'R', 'O', 'G', 'R', 'E', 'S', 'S', 0}; - static final char [] SCROLLBAR = new char [] {'S', 'C', 'R', 'O', 'L', 'L', 'B', 'A', 'R', 0}; - static final char [] TAB = new char [] {'T', 'A', 'B', 0}; - static final char [] TRACKBAR = new char [] {'T', 'R', 'A', 'C', 'K', 'B', 'A', 'R', 0}; - static final char [] TOOLBAR = new char [] {'T', 'O', 'O', 'L', 'B', 'A', 'R', 0}; - static final char [] TREEVIEW = new char [] {'T', 'R', 'E', 'E', 'V', 'I', 'E', 'W', 0}; - -public DrawData() { - state = new int[1]; -} - -Rectangle computeTrim(Theme theme, GC gc) { - return new Rectangle(clientArea.x, clientArea.y, clientArea.width, clientArea.height); -} - -void draw(Theme theme, GC gc, Rectangle bounds) { - -} - -void drawImage(Theme theme, Image image, GC gc, Rectangle bounds) { - if (OS.COMCTL32_MAJOR >= 6 && OS.IsAppThemed ()) { -// int /*long*/ hTheme = OS.OpenThemeData(0, getClassId()); -// RECT rect = new RECT (); -// rect.left = bounds.x; -// rect.right = bounds.x + bounds.width; -// rect.top = bounds.y; -// rect.bottom = bounds.y + bounds.height; -// //TODO - remove reference to widgets. -// ImageList imageList = new ImageList(0); -// int imageIndex = imageList.add(image); -// int[] part = getPartId(DrawData.WIDGET_WHOLE); -// OS.DrawThemeIcon(hTheme, gc.handle, part[0], part[1], rect, imageList.getHandle(), imageIndex); -// imageList.dispose(); -// OS.CloseThemeData(hTheme); - Rectangle rect = image.getBounds(); - gc.drawImage(image, 0, 0, rect.width, rect.height, bounds.x, bounds.y, bounds.width, bounds.height); - } -} - -void drawText(Theme theme, String text, int flags, GC gc, Rectangle bounds) { - if (OS.COMCTL32_MAJOR >= 6 && OS.IsAppThemed ()) { - int /*long*/ hTheme = OS.OpenThemeData(0, getClassId()); - char[] chars = new char[text.length()]; - text.getChars(0, chars.length, chars, 0); - int textFlags = OS.DT_SINGLELINE; - if ((flags & DrawData.DRAW_LEFT) != 0) textFlags |= OS.DT_LEFT; - if ((flags & DrawData.DRAW_HCENTER) != 0) textFlags |= OS.DT_CENTER; - if ((flags & DrawData.DRAW_RIGHT) != 0) textFlags |= OS.DT_RIGHT; - if ((flags & DrawData.DRAW_TOP) != 0) textFlags |= OS.DT_TOP; - if ((flags & DrawData.DRAW_BOTTOM) != 0) textFlags |= OS.DT_BOTTOM; - if ((flags & DrawData.DRAW_VCENTER) != 0) textFlags |= OS.DT_VCENTER; - RECT rect = new RECT (); - rect.left = bounds.x; - rect.right = bounds.x + bounds.width; - rect.top = bounds.y; - rect.bottom = bounds.y + bounds.height; - int[] part = getPartId(DrawData.WIDGET_WHOLE); - int iPartId = part[0]; - int iStateId = part[1]; - OS.DrawThemeText(hTheme, gc.handle, iPartId, iStateId, chars, chars.length, textFlags, 0, rect); - OS.CloseThemeData(hTheme); - } -} - -char[] getClassId() { - return BUTTON; -} - -int[] getPartId(int part) { - return new int[]{0, 0}; -} - -Rectangle getBounds(int part, Rectangle bounds) { - return new Rectangle(bounds.x, bounds.y, bounds.width, bounds.height); -} - -int hit(Theme theme, Point position, Rectangle bounds) { - return -1; -} - -Rectangle measureText(Theme theme, String text, int flags, GC gc, Rectangle bounds) { - if (!(OS.COMCTL32_MAJOR >= 6 && OS.IsAppThemed ())) return new Rectangle(0, 0, 0, 0); - int /*long*/ hTheme = OS.OpenThemeData(0, getClassId()); - char[] chars = new char[text.length()]; - text.getChars(0, chars.length, chars, 0); - //TODO - constant for VCENTER and flags - int textFlags = 0;//OS.DT_VCENTER | OS.DT_SINGLELINE | OS.DT_CALCRECT; - if ((style & SWT.LEFT) != 0) textFlags |= OS.DT_LEFT; - if ((style & SWT.CENTER) != 0) textFlags |= OS.DT_CENTER; - if ((style & SWT.RIGHT) != 0) textFlags |= OS.DT_RIGHT; - RECT extent = new RECT(); - RECT rect = null; - if (bounds != null) { - rect = new RECT(); - rect.left = bounds.x; - rect.right = bounds.x + bounds.width; - rect.top = bounds.y; - rect.bottom = bounds.y + bounds.height; - } - int[] part = getPartId(DrawData.WIDGET_WHOLE); - int iPartId = part[0]; - int iStateId = part[1]; - OS.GetThemeTextExtent(hTheme, gc.handle, iPartId, iStateId, chars, chars.length, textFlags, rect, extent); - OS.CloseThemeData(hTheme); - return new Rectangle(extent.left, extent.top, extent.right - extent.left, extent.bottom - extent.top); -} - -} diff --git a/bundles/org.eclipse.swt/Eclipse SWT Theme/win32/org/eclipse/swt/internal/theme/ExpanderDrawData.java b/bundles/org.eclipse.swt/Eclipse SWT Theme/win32/org/eclipse/swt/internal/theme/ExpanderDrawData.java deleted file mode 100644 index 04bf337c8b..0000000000 --- a/bundles/org.eclipse.swt/Eclipse SWT Theme/win32/org/eclipse/swt/internal/theme/ExpanderDrawData.java +++ /dev/null @@ -1,65 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2007 IBM Corporation 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 - *******************************************************************************/ -package org.eclipse.swt.internal.theme; - -import org.eclipse.swt.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.internal.win32.*; - -public class ExpanderDrawData extends DrawData { - -public ExpanderDrawData() { - state = new int[1]; -} - -void draw(Theme theme, GC gc, Rectangle bounds) { - if (OS.COMCTL32_MAJOR >= 6 && OS.IsAppThemed ()) { - int /*long*/ hTheme = OS.OpenThemeData(0, getClassId()); - int iStateId = OS.GLPS_CLOSED; - if ((this.style & SWT.DOWN) != 0) iStateId = OS.GLPS_OPENED; - SIZE size = new SIZE(); - OS.GetThemePartSize(hTheme, gc.handle, OS.TVP_GLYPH, iStateId, null, OS.TS_TRUE, size); - RECT rect = new RECT (); - rect.left = bounds.x; - rect.right = rect.left + size.cx; - rect.top = bounds.y; - rect.bottom = rect.top + size.cy; - OS.DrawThemeBackground (hTheme, gc.handle, OS.TVP_GLYPH, iStateId, rect, null); - OS.CloseThemeData (hTheme); - } -} - -char[] getClassId() { - return TREEVIEW; -} - -int[] getPartId(int part) { - int iPartId = OS.TVP_GLYPH; - int iStateId = OS.GLPS_CLOSED; - if ((this.style & SWT.DOWN) != 0) iStateId = OS.GLPS_OPENED; - return new int[]{iPartId, iStateId}; -} - -int hit(Theme theme, Point position, Rectangle bounds) { - if (!(OS.COMCTL32_MAJOR >= 6 && OS.IsAppThemed ())) return DrawData.WIDGET_NOWHERE; - if (!bounds.contains(position)) return DrawData.WIDGET_NOWHERE; - int /*long*/ hTheme = OS.OpenThemeData(0, getClassId()); - SIZE size = new SIZE(); - int[] part = getPartId(DrawData.WIDGET_WHOLE); - OS.GetThemePartSize(hTheme, 0, part[0], part[1], null, OS.TS_TRUE, size); - OS.CloseThemeData (hTheme); - if (new Rectangle(bounds.x, bounds.y, size.cx, size.cy).contains(position)) { - return DrawData.WIDGET_WHOLE; - } - return DrawData.WIDGET_NOWHERE; -} - -} diff --git a/bundles/org.eclipse.swt/Eclipse SWT Theme/win32/org/eclipse/swt/internal/theme/GroupDrawData.java b/bundles/org.eclipse.swt/Eclipse SWT Theme/win32/org/eclipse/swt/internal/theme/GroupDrawData.java deleted file mode 100644 index e02eaede12..0000000000 --- a/bundles/org.eclipse.swt/Eclipse SWT Theme/win32/org/eclipse/swt/internal/theme/GroupDrawData.java +++ /dev/null @@ -1,72 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2007 IBM Corporation 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 - *******************************************************************************/ -package org.eclipse.swt.internal.theme; - -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.internal.win32.*; - -public class GroupDrawData extends DrawData { - public int headerWidth; - public int headerHeight; - public Rectangle headerArea; - -public GroupDrawData() { - state = new int[1]; -} - -static final int GROUP_HEADER_X = 9; -static final int GROUP_HEADER_PAD = 2; -void draw(Theme theme, GC gc, Rectangle bounds) { - if (OS.COMCTL32_MAJOR >= 6 && OS.IsAppThemed ()) { - int /*long*/ hTheme = OS.OpenThemeData(0, getClassId()); - RECT rect = new RECT (); - rect.left = bounds.x; - rect.right = bounds.x + bounds.width; - rect.top = bounds.y + this.headerHeight / 2; - rect.bottom = bounds.y + bounds.height; - int headerX = bounds.x + GROUP_HEADER_X, headerY = bounds.y; - int savedDC = OS.SaveDC(gc.handle); - OS.ExcludeClipRect (gc.handle, headerX - GROUP_HEADER_PAD, headerY, headerX + this.headerWidth + GROUP_HEADER_PAD, headerY + this.headerHeight); - int[] part = getPartId(DrawData.WIDGET_WHOLE); - OS.DrawThemeBackground(hTheme, gc.handle, part[0], part[1], rect, null); - OS.RestoreDC(gc.handle, savedDC); - Rectangle headerArea = this.headerArea; - if (headerArea != null) { - headerArea.x = headerX; - headerArea.y = headerY; - headerArea.width = this.headerWidth; - headerArea.height = this.headerHeight; - } - Rectangle clientArea = this.clientArea; - if (clientArea != null) { - RECT contentRect = new RECT(); - OS.GetThemeBackgroundContentRect(hTheme, gc.handle, part[0], part[1], rect, contentRect); - clientArea.x = contentRect.left; - clientArea.y = contentRect.top; - clientArea.width = contentRect.right - contentRect.left; - clientArea.height = contentRect.bottom - contentRect.top; - } - OS.CloseThemeData(hTheme); - } -} - -int[] getPartId(int part) { - int state = this.state[part]; - int iPartId = OS.BP_GROUPBOX, iStateId = OS.GBS_NORMAL; - if ((state & DrawData.DISABLED) != 0) iStateId = OS.GBS_DISABLED; - return new int[]{iPartId, iStateId}; -} - -int hit(Theme theme, Point position, Rectangle bounds) { - return bounds.contains(position) ? DrawData.WIDGET_WHOLE : DrawData.WIDGET_NOWHERE; -} - -} diff --git a/bundles/org.eclipse.swt/Eclipse SWT Theme/win32/org/eclipse/swt/internal/theme/ProgressBarDrawData.java b/bundles/org.eclipse.swt/Eclipse SWT Theme/win32/org/eclipse/swt/internal/theme/ProgressBarDrawData.java deleted file mode 100644 index 00b72ee031..0000000000 --- a/bundles/org.eclipse.swt/Eclipse SWT Theme/win32/org/eclipse/swt/internal/theme/ProgressBarDrawData.java +++ /dev/null @@ -1,87 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2007 IBM Corporation 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 - *******************************************************************************/ -package org.eclipse.swt.internal.theme; - -import org.eclipse.swt.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.internal.win32.*; - -public class ProgressBarDrawData extends RangeDrawData { - -public ProgressBarDrawData() { - state = new int[1]; -} - -void draw(Theme theme, GC gc, Rectangle bounds) { - if (OS.COMCTL32_MAJOR >= 6 && OS.IsAppThemed ()) { - int /*long*/ hTheme = OS.OpenThemeData(0, getClassId()); - RECT rect = new RECT (); - rect.left = bounds.x; - rect.right = rect.left + bounds.width; - rect.top = bounds.y; - rect.bottom = rect.top + bounds.height; - int[] buffer = new int[1]; - OS.GetThemeInt(hTheme, 0, 0, OS.PROGRESSCHUNKSIZE, buffer); - int chunkSize = buffer[0]; - OS.GetThemeInt(hTheme, 0, 0, OS.PROGRESSSPACESIZE, buffer); - int spaceSize = buffer[0]; - RECT content = new RECT(); - int[] part = getPartId(DrawData.WIDGET_WHOLE); - if ((style & SWT.VERTICAL) != 0) { - OS.GetThemeBackgroundContentRect(hTheme, gc.handle, part[0], part[1], rect, content); - OS.DrawThemeBackground(hTheme, gc.handle, part[0], part[1], rect, null); - int top = content.bottom - (((content.bottom - content.top) * (selection - minimum)) / (maximum - minimum)); - content.top = content.bottom - chunkSize; - while (content.top >= top) { - OS.DrawThemeBackground(hTheme, gc.handle, OS.PP_CHUNKVERT, 0, content, null); - content.bottom -= chunkSize + spaceSize; - content.top = content.bottom - chunkSize; - } - if (selection != 0) { - OS.DrawThemeBackground(hTheme, gc.handle, OS.PP_CHUNKVERT, 0, content, null); - } - } else { - OS.GetThemeBackgroundContentRect(hTheme, gc.handle, part[0], part[1], rect, content); - OS.DrawThemeBackground(hTheme, gc.handle, part[0], part[1], rect, null); - int right = content.left + (((content.right - content.left) * (selection - minimum)) / (maximum - minimum)); - content.right = content.left + chunkSize; - while (content.right <= right) { - OS.DrawThemeBackground(hTheme, gc.handle, OS.PP_CHUNK, 0, content, null); - content.left += chunkSize + spaceSize; - content.right = content.left + chunkSize; - } - if (selection != 0) { - OS.DrawThemeBackground(hTheme, gc.handle, OS.PP_CHUNK, 0, content, null); - } - } - OS.CloseThemeData (hTheme); - } -} - -char[] getClassId() { - return PROGRESS; -} - -int[] getPartId(int part) { - int iPartId = 0, iStateId = 0; - if ((style & SWT.VERTICAL) != 0) { - iPartId = OS.PP_BARVERT; - } else { - iPartId = OS.PP_BAR; - } - return new int[]{iPartId, iStateId}; -} - -int hit(Theme theme, Point position, Rectangle bounds) { - return bounds.contains(position) ? DrawData.WIDGET_WHOLE : DrawData.WIDGET_NOWHERE; -} - -} diff --git a/bundles/org.eclipse.swt/Eclipse SWT Theme/win32/org/eclipse/swt/internal/theme/RangeDrawData.java b/bundles/org.eclipse.swt/Eclipse SWT Theme/win32/org/eclipse/swt/internal/theme/RangeDrawData.java deleted file mode 100644 index 51f7bcaff3..0000000000 --- a/bundles/org.eclipse.swt/Eclipse SWT Theme/win32/org/eclipse/swt/internal/theme/RangeDrawData.java +++ /dev/null @@ -1,23 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2006 IBM Corporation 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 - *******************************************************************************/ -package org.eclipse.swt.internal.theme; - -import org.eclipse.swt.graphics.*; - -public class RangeDrawData extends DrawData { - public int selection; - public int minimum; - public int maximum; - -int getSelection(Point position, Rectangle bounds) { - return 0; -} -} diff --git a/bundles/org.eclipse.swt/Eclipse SWT Theme/win32/org/eclipse/swt/internal/theme/ScaleDrawData.java b/bundles/org.eclipse.swt/Eclipse SWT Theme/win32/org/eclipse/swt/internal/theme/ScaleDrawData.java deleted file mode 100644 index 5493a67abd..0000000000 --- a/bundles/org.eclipse.swt/Eclipse SWT Theme/win32/org/eclipse/swt/internal/theme/ScaleDrawData.java +++ /dev/null @@ -1,97 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2007 IBM Corporation 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 - *******************************************************************************/ -package org.eclipse.swt.internal.theme; - -import org.eclipse.swt.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.internal.win32.*; - -public class ScaleDrawData extends RangeDrawData { - public int increment; - public int pageIncrement; - - static final int TICS_MARGIN = 10; - -public ScaleDrawData() { - state = new int[4]; -} - -void draw(Theme theme, GC gc, Rectangle bounds) { - if (OS.COMCTL32_MAJOR >= 6 && OS.IsAppThemed ()) { - // TODO - drawScale not done - int style = this.style; - int minimum = this.minimum; - int maximum = this.maximum; - int selection = this.selection; - int pageIncrement = this.pageIncrement; - int /*long*/ hTheme = OS.OpenThemeData(0, getClassId()); - RECT rect = new RECT (); - rect.left = bounds.x; - rect.right = rect.left + bounds.width; - rect.top = bounds.y; - rect.bottom = rect.top + bounds.height; - SIZE size = new SIZE(); - if ((style & SWT.VERTICAL) != 0) { - OS.GetThemePartSize(hTheme, gc.handle, OS.TKP_TRACKVERT, 0, null, OS.TS_TRUE, size); - int trackWidth = size.cx - 1; - OS.GetThemePartSize(hTheme, gc.handle, OS.TKP_THUMBVERT, 0, null, OS.TS_TRUE, size); - int thumbWidth = size.cx, thumbHeight = size.cy; - OS.GetThemePartSize(hTheme, gc.handle, OS.TKP_TICS, 0, rect, OS.TS_TRUE, size); - int ticWidth = size.cx; - int marginX = (thumbWidth - trackWidth) / 2; - int marginY = marginX; - marginX += TICS_MARGIN; - rect.left += marginX; - rect.top += marginY; - rect.right = rect.left + trackWidth; - rect.bottom -= marginY; - int trackHeight = rect.bottom - rect.top; - OS.DrawThemeBackground(hTheme, gc.handle, OS.TKP_TRACKVERT, 0, rect, null); - rect.top += ((trackHeight - thumbHeight) * (selection - minimum)) / Math.max(1, maximum - minimum); - rect.left -= (thumbWidth - trackWidth) / 2; - rect.right = rect.left + thumbWidth; - rect.bottom = rect.top + thumbHeight; - OS.DrawThemeBackground(hTheme, gc.handle, OS.TKP_THUMBVERT, 0, rect, null); - rect.top = bounds.y + marginY + thumbHeight / 2; - rect.bottom = rect.top + 1; - for (int sel = minimum; sel <= maximum; sel += pageIncrement) { - rect.left = bounds.x + TICS_MARGIN / 2; - rect.right = rect.left + ticWidth; - if (sel != minimum && sel != maximum) rect.left++; - rect.top = bounds.y + marginY + thumbHeight / 2; - rect.top += ((trackHeight - thumbHeight) * (sel - minimum)) / Math.max(1, maximum - minimum); - rect.bottom = rect.top + 1; - //TODO - why tics are ot drawn - OS.DrawThemeBackground(hTheme, gc.handle, OS.TKP_TICSVERT, 1, rect, null); - gc.drawLine(rect.left, rect.top, rect.right, rect.top); - rect.left = bounds.x + TICS_MARGIN + thumbWidth + 1; - rect.right = rect.left + ticWidth; - if (sel != minimum && sel != maximum) rect.right--; - //TODO - why tics are ot drawn - OS.DrawThemeBackground(hTheme, gc.handle, OS.TKP_TICSVERT, 1, rect, null); - gc.drawLine(rect.left, rect.top, rect.right, rect.top); - } - } else { - - } - OS.CloseThemeData (hTheme); - } -} - -char[] getClassId() { - return TRACKBAR; -} - -int hit(Theme theme, Point position, Rectangle bounds) { - return bounds.contains(position) ? DrawData.WIDGET_WHOLE : DrawData.WIDGET_NOWHERE; -} - -} diff --git a/bundles/org.eclipse.swt/Eclipse SWT Theme/win32/org/eclipse/swt/internal/theme/ScrollBarDrawData.java b/bundles/org.eclipse.swt/Eclipse SWT Theme/win32/org/eclipse/swt/internal/theme/ScrollBarDrawData.java deleted file mode 100644 index d71d9d5eda..0000000000 --- a/bundles/org.eclipse.swt/Eclipse SWT Theme/win32/org/eclipse/swt/internal/theme/ScrollBarDrawData.java +++ /dev/null @@ -1,288 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2007 IBM Corporation 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 - *******************************************************************************/ -package org.eclipse.swt.internal.theme; - -import org.eclipse.swt.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.internal.win32.*; - -public class ScrollBarDrawData extends RangeDrawData { - public int thumb; - public int increment; - public int pageIncrement; - -public ScrollBarDrawData() { - state = new int[6]; -} - -void draw(Theme theme, GC gc, Rectangle bounds) { - if (OS.COMCTL32_MAJOR >= 6 && OS.IsAppThemed ()) { - int /*long*/ hTheme = OS.OpenThemeData(0, getClassId()); - RECT rect = new RECT (); - if ((style & SWT.VERTICAL) != 0) { - int width = OS.GetThemeSysSize(hTheme, OS.SM_CXVSCROLL); - rect.left = bounds.x; - rect.right = rect.left + bounds.width; - rect.top = bounds.y; - rect.bottom = rect.top + width; - int[] part = getPartId(DrawData.SCROLLBAR_UP_ARROW); - OS.DrawThemeBackground (hTheme, gc.handle, part[0], part[1], rect, null); - rect.bottom = bounds.y + bounds.height; - rect.top = rect.bottom - width; - part = getPartId(DrawData.SCROLLBAR_DOWN_ARROW); - OS.DrawThemeBackground (hTheme, gc.handle, part[0], part[1], rect, null); - int totalWidth = bounds.height - 2 * width; - int thumbWidth = Math.max(width / 2, (totalWidth * thumb) / Math.max(1, (maximum - minimum)));//BAD - int thumbPos = bounds.y + width + Math.max(0, (totalWidth * selection) / Math.max(1, (maximum - minimum))); - rect.top = bounds.y + width; - rect.bottom = thumbPos; - part = getPartId(DrawData.SCROLLBAR_UP_TRACK); - OS.DrawThemeBackground (hTheme, gc.handle, part[0], part[1], rect, null); - rect.top = rect.bottom; - rect.bottom = rect.top + thumbWidth; - part = getPartId(DrawData.SCROLLBAR_THUMB); - OS.DrawThemeBackground (hTheme, gc.handle, part[0], part[1], rect, null); - OS.DrawThemeBackground (hTheme, gc.handle, OS.SBP_GRIPPERVERT, part[1], rect, null); - rect.top = rect.bottom; - rect.bottom = bounds.y + bounds.height - width; - part = getPartId(DrawData.SCROLLBAR_DOWN_TRACK); - OS.DrawThemeBackground (hTheme, gc.handle, part[0], part[1], rect, null); - } else { - //TODO - why SM_CXHSCROLL = 0? - int height = OS.GetThemeSysSize(hTheme, OS.SM_CXVSCROLL); - rect.top = bounds.y; - rect.bottom = rect.top + bounds.height; - rect.left = bounds.x; - rect.right = rect.left + height; - int[] part = getPartId(DrawData.SCROLLBAR_LEFT_ARROW); - OS.DrawThemeBackground (hTheme, gc.handle, part[0], part[1], rect, null); - rect.right = bounds.x + bounds.width; - rect.left = rect.right - height; - part = getPartId(DrawData.SCROLLBAR_RIGHT_ARROW); - OS.DrawThemeBackground (hTheme, gc.handle, part[0], part[1], rect, null); - int totalWidth = bounds.width - 2 * height; - int thumbWidth = Math.max(height / 2, (totalWidth * thumb) / (maximum - minimum));//BAD - int thumbPos = bounds.x + height + Math.max(0, (totalWidth * selection) / Math.max(1, (maximum - minimum))); - rect.left = bounds.x + height; - rect.right = thumbPos; - part = getPartId(DrawData.SCROLLBAR_UP_TRACK); - OS.DrawThemeBackground (hTheme, gc.handle, part[0], part[1], rect, null); - rect.left = rect.right; - rect.right = rect.left + thumbWidth; - part = getPartId(DrawData.SCROLLBAR_THUMB); - OS.DrawThemeBackground (hTheme, gc.handle, part[0], part[1], rect, null); - OS.DrawThemeBackground (hTheme, gc.handle, OS.SBP_GRIPPERHORZ, part[1], rect, null); - rect.left = rect.right; - rect.right = bounds.x + bounds.width - height; - part = getPartId(DrawData.SCROLLBAR_DOWN_TRACK); - OS.DrawThemeBackground (hTheme, gc.handle, part[0], part[1], rect, null); - } - OS.CloseThemeData (hTheme); - } -} - -char[] getClassId() { - return SCROLLBAR; -} - -int[] getPartId(int part) { - int iPartId = 0, iStateId = 0; - int state = this.state[part]; - switch (part) { - case DrawData.SCROLLBAR_UP_ARROW: - iPartId = OS.SBP_ARROWBTN; - if ((style & SWT.VERTICAL) != 0) { - iStateId = OS.ABS_UPNORMAL; - if ((state & DrawData.HOT) != 0) iStateId = OS.ABS_UPHOT; - if ((state & DrawData.PRESSED) != 0) iStateId = OS.ABS_UPPRESSED; - if ((state & DrawData.DISABLED) != 0) iStateId = OS.ABS_UPDISABLED; - } else { - iStateId = OS.ABS_LEFTNORMAL; - if ((state & DrawData.HOT) != 0) iStateId = OS.ABS_LEFTHOT; - if ((state & DrawData.PRESSED) != 0) iStateId = OS.ABS_LEFTPRESSED; - if ((state & DrawData.DISABLED) != 0) iStateId = OS.ABS_LEFTDISABLED; - } - break; - case DrawData.SCROLLBAR_DOWN_ARROW: - iPartId = OS.SBP_ARROWBTN; - if ((style & SWT.VERTICAL) != 0) { - iStateId = OS.ABS_DOWNNORMAL; - if ((state & DrawData.HOT) != 0) iStateId = OS.ABS_DOWNHOT; - if ((state & DrawData.PRESSED) != 0) iStateId = OS.ABS_DOWNPRESSED; - if ((state & DrawData.DISABLED) != 0) iStateId = OS.ABS_DOWNDISABLED; - } else { - iStateId = OS.ABS_RIGHTNORMAL; - if ((state & DrawData.HOT) != 0) iStateId = OS.ABS_RIGHTHOT; - if ((state & DrawData.PRESSED) != 0) iStateId = OS.ABS_RIGHTPRESSED; - if ((state & DrawData.DISABLED) != 0) iStateId = OS.ABS_RIGHTDISABLED; - } - break; - case DrawData.WIDGET_WHOLE: - case DrawData.SCROLLBAR_THUMB: - if ((style & SWT.VERTICAL) != 0) { - iPartId = OS.SBP_THUMBBTNVERT; - } else { - iPartId = OS.SBP_THUMBBTNHORZ; - } - break; - case DrawData.SCROLLBAR_UP_TRACK: - if ((style & SWT.VERTICAL) != 0) { - iPartId = OS.SBP_UPPERTRACKVERT; - } else { - iPartId = OS.SBP_UPPERTRACKHORZ; - } - break; - case DrawData.SCROLLBAR_DOWN_TRACK: - if ((style & SWT.VERTICAL) != 0) { - iPartId = OS.SBP_LOWERTRACKVERT; - } else { - iPartId = OS.SBP_LOWERTRACKHORZ; - } - break; - } - if (part != DrawData.SCROLLBAR_DOWN_ARROW && part != DrawData.SCROLLBAR_UP_ARROW) { - iStateId = OS.SCRBS_NORMAL; - if ((state & DrawData.HOT) != 0) iStateId = OS.SCRBS_HOT; - if ((state & DrawData.PRESSED) != 0) iStateId = OS.SCRBS_PRESSED; - if ((state & DrawData.DISABLED) != 0) iStateId = OS.SCRBS_DISABLED; - } - return new int[]{iPartId, iStateId}; -} - -Rectangle getBounds(int part, Rectangle bounds) { - if (OS.COMCTL32_MAJOR >= 6 && OS.IsAppThemed ()) { - int /*long*/ hTheme = OS.OpenThemeData(0, getClassId()); - if ((style & SWT.VERTICAL) != 0) { - int width = OS.GetThemeSysSize(hTheme, OS.SM_CXVSCROLL); - int totalWidth = bounds.height - 2 * width; - int thumbWidth = Math.max(width / 2, (totalWidth * thumb) / Math.max(1, (maximum - minimum)));//BAD - int thumbPos = bounds.y + width + Math.max(0, (totalWidth * selection) / Math.max(1, (maximum - minimum))); - switch (part) { - case DrawData.SCROLLBAR_DOWN_ARROW: - return new Rectangle(bounds.x, bounds.y + bounds.height - width, bounds.width, width); - case DrawData.SCROLLBAR_UP_ARROW: - return new Rectangle(bounds.x, bounds.y, bounds.width, width); - case DrawData.SCROLLBAR_UP_TRACK: - return new Rectangle(bounds.x, bounds.y + width, bounds.width, thumbPos - bounds.y - width); - case DrawData.SCROLLBAR_THUMB: - return new Rectangle(bounds.x, thumbPos, bounds.width, thumbWidth); - case DrawData.SCROLLBAR_DOWN_TRACK: - return new Rectangle(bounds.x, thumbPos + thumbWidth, bounds.width, bounds.y + bounds.height - width - thumbPos - thumbWidth); - } - } else { - - } - OS.CloseThemeData (hTheme); - } - return super.getBounds(part, bounds); -} - -int getSelection(Point position, Rectangle bounds) { - if (OS.COMCTL32_MAJOR >= 6 && OS.IsAppThemed ()) { - int /*long*/ hTheme = OS.OpenThemeData(0, getClassId()); - if ((style & SWT.VERTICAL) != 0) { - int width = OS.GetThemeSysSize(hTheme, OS.SM_CXVSCROLL); - int totalWidth = bounds.height - 2 * width; - int thumbPos = bounds.y + width + Math.max(0, (totalWidth * selection) / Math.max(1, (maximum - minimum))); - thumbPos += position.y; - int selection = ((thumbPos - bounds.y - width) * (maximum - minimum)) / totalWidth; - return Math.max(0, Math.min(selection, maximum - thumb)); - } else { - - } - OS.CloseThemeData (hTheme); - } - return 0; -} - -int hit(Theme theme, Point position, Rectangle bounds) { - if (!(OS.COMCTL32_MAJOR >= 6 && OS.IsAppThemed ())) return -1; - int /*long*/ hTheme = OS.OpenThemeData(0, getClassId()); - //TODO - should we take a GC? - int hDC = 0; - RECT rect = new RECT (); - POINT pt = new POINT(); - pt.x = position.x; - pt.y = position.y; - short[] code = new short[1]; - try { - if ((style & SWT.VERTICAL) != 0) { - int width = OS.GetThemeSysSize(hTheme, OS.SM_CXVSCROLL); - rect.left = bounds.x; - rect.right = rect.left + bounds.width; - rect.top = bounds.y; - rect.bottom = rect.top + width; - int[] part = getPartId(DrawData.SCROLLBAR_UP_ARROW); - OS.HitTestThemeBackground(hTheme, hDC, part[0], part[1], 0, rect, 0, pt, code); - if (code[0] != OS.HTNOWHERE) return DrawData.SCROLLBAR_UP_ARROW; - rect.bottom = bounds.y + bounds.height; - rect.top = rect.bottom - width; - part = getPartId(DrawData.SCROLLBAR_DOWN_ARROW); - OS.HitTestThemeBackground(hTheme, hDC, part[0], part[1], 0, rect, 0, pt, code); - if (code[0] != OS.HTNOWHERE) return DrawData.SCROLLBAR_DOWN_ARROW; - int totalWidth = bounds.height - 2 * width; - int thumbWidth = Math.max(width / 2, (totalWidth * thumb) / Math.max(1, (maximum - minimum)));//BAD - int thumbPos = bounds.y + width + Math.max(0, (totalWidth * selection) / Math.max(1, (maximum - minimum))); - rect.top = bounds.y + width; - rect.bottom = thumbPos; - part = getPartId(DrawData.SCROLLBAR_THUMB); - OS.HitTestThemeBackground(hTheme, hDC, part[0], part[1], 0, rect, 0, pt, code); - if (code[0] != OS.HTNOWHERE) return DrawData.SCROLLBAR_UP_TRACK; - rect.top = rect.bottom; - rect.bottom = rect.top + thumbWidth; - part = getPartId(DrawData.SCROLLBAR_UP_TRACK); - OS.HitTestThemeBackground(hTheme, hDC, part[0], part[1], 0, rect, 0, pt, code); - if (code[0] != OS.HTNOWHERE) return DrawData.SCROLLBAR_THUMB; - rect.top = rect.bottom; - rect.bottom = bounds.y + bounds.height - width; - part = getPartId(DrawData.SCROLLBAR_DOWN_TRACK); - OS.HitTestThemeBackground(hTheme, hDC, part[0], part[1], 0, rect, 0, pt, code); - if (code[0] != OS.HTNOWHERE) return DrawData.SCROLLBAR_DOWN_TRACK; - } else { - int height = OS.GetThemeSysSize(hTheme, OS.SM_CXVSCROLL);//BAD - why SM_CXHSCROLL = 0? - rect.top = bounds.y; - rect.bottom = rect.top + bounds.height; - rect.left = bounds.x; - rect.right = rect.left + height; - int[] part = getPartId(DrawData.SCROLLBAR_LEFT_ARROW); - OS.HitTestThemeBackground(hTheme, hDC, part[0], part[1], 0, rect, 0, pt, code); - if (code[0] != OS.HTNOWHERE) return DrawData.SCROLLBAR_UP_ARROW; - rect.right = bounds.x + bounds.width; - rect.left = rect.right - height; - part = getPartId(DrawData.SCROLLBAR_RIGHT_ARROW); - OS.HitTestThemeBackground(hTheme, hDC, part[0], part[1], 0, rect, 0, pt, code); - if (code[0] != OS.HTNOWHERE) return DrawData.SCROLLBAR_DOWN_ARROW; - int totalWidth = bounds.width - 2 * height; - int thumbWidth = Math.max(height / 2, (totalWidth * thumb) / (maximum - minimum));//BAD - int thumbPos = bounds.x + height + Math.max(0, (totalWidth * selection) / Math.max(1, (maximum - minimum))); - rect.left = bounds.x + height; - rect.right = thumbPos; - part = getPartId(DrawData.SCROLLBAR_LEFT_TRACK); - OS.HitTestThemeBackground(hTheme, hDC, part[0], part[1], 0, rect, 0, pt, code); - if (code[0] != OS.HTNOWHERE) return DrawData.SCROLLBAR_UP_TRACK; - rect.left = rect.right; - rect.right = rect.left + thumbWidth; - part = getPartId(DrawData.SCROLLBAR_THUMB); - OS.HitTestThemeBackground(hTheme, hDC, part[0], part[1], 0, rect, 0, pt, code); - if (code[0] != OS.HTNOWHERE) return DrawData.SCROLLBAR_THUMB; - rect.left = rect.right; - rect.right = bounds.x + bounds.width - height; - part = getPartId(DrawData.SCROLLBAR_RIGHT_TRACK); - OS.HitTestThemeBackground(hTheme, hDC, part[0], part[1], 0, rect, 0, pt, code); - if (code[0] != OS.HTNOWHERE) return DrawData.SCROLLBAR_DOWN_TRACK; - } - } finally { - OS.CloseThemeData (hTheme); - } - return DrawData.WIDGET_NOWHERE; -} - -} diff --git a/bundles/org.eclipse.swt/Eclipse SWT Theme/win32/org/eclipse/swt/internal/theme/TabFolderDrawData.java b/bundles/org.eclipse.swt/Eclipse SWT Theme/win32/org/eclipse/swt/internal/theme/TabFolderDrawData.java deleted file mode 100644 index b2048b308c..0000000000 --- a/bundles/org.eclipse.swt/Eclipse SWT Theme/win32/org/eclipse/swt/internal/theme/TabFolderDrawData.java +++ /dev/null @@ -1,81 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2007 IBM Corporation 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 - *******************************************************************************/ -package org.eclipse.swt.internal.theme; - -import org.eclipse.swt.SWT; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.internal.win32.*; - -public class TabFolderDrawData extends DrawData { - public int tabsWidth; - public int tabsHeight; - public Rectangle tabsArea; - public int selectedX; - public int selectedWidth; - public int spacing; - -public TabFolderDrawData() { - state = new int[1]; - if (SWT.getPlatform().equals("gtk")) { - spacing = -2; - } -} - -void draw(Theme theme, GC gc, Rectangle bounds) { - if (OS.COMCTL32_MAJOR >= 6 && OS.IsAppThemed ()) { - int /*long*/ hTheme = OS.OpenThemeData(0, getClassId()); - RECT rect = new RECT (); - rect.left = bounds.x; - rect.right = bounds.x + bounds.width; - rect.top = bounds.y; - if ((style & SWT.BOTTOM) != 0) { - rect.bottom = bounds.y + bounds.height - tabsHeight; - } else { - rect.top += tabsHeight; - rect.bottom = bounds.y + bounds.height; - } - int[] part = getPartId(DrawData.WIDGET_WHOLE); - OS.DrawThemeBackground (hTheme, gc.handle, part[0], part[1], rect, null); - OS.CloseThemeData(hTheme); - if (tabsArea != null) { - tabsArea.x = bounds.x; - tabsArea.y = bounds.y; - tabsArea.width = bounds.width; - tabsArea.height = tabsHeight; - if ((style & SWT.BOTTOM) != 0) { - tabsArea.y += bounds.height - tabsHeight; - } - } - } -} - -char[] getClassId() { - return TAB; -} - -int[] getPartId(int part) { - int state = this.state[part]; - int iPartId = OS.TABP_PANE, iStateId = OS.TIS_NORMAL; - if ((state & DrawData.DISABLED) != 0) { - iStateId = OS.TIS_DISABLED; - } else { - if ((state & DrawData.HOT) != 0) iStateId = OS.TIS_HOT; - if ((state & DrawData.SELECTED) != 0) iStateId = OS.TIS_SELECTED; - } - return new int[]{iPartId, iStateId}; -} - -int hit(Theme theme, Point position, Rectangle bounds) { - if (!bounds.contains(position)) return DrawData.WIDGET_NOWHERE; - return DrawData.WIDGET_WHOLE; -} - -} diff --git a/bundles/org.eclipse.swt/Eclipse SWT Theme/win32/org/eclipse/swt/internal/theme/TabItemDrawData.java b/bundles/org.eclipse.swt/Eclipse SWT Theme/win32/org/eclipse/swt/internal/theme/TabItemDrawData.java deleted file mode 100644 index 6998c22d85..0000000000 --- a/bundles/org.eclipse.swt/Eclipse SWT Theme/win32/org/eclipse/swt/internal/theme/TabItemDrawData.java +++ /dev/null @@ -1,129 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2007 IBM Corporation 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 - *******************************************************************************/ -package org.eclipse.swt.internal.theme; - -import org.eclipse.swt.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.internal.win32.*; - -public class TabItemDrawData extends DrawData { - - public TabFolderDrawData parent; - public int position; - - static final int TABITEM_INSET = 2; - static final int TABITEM_INSET2 = 6; - -public TabItemDrawData() { - state = new int[1]; -} - -Rectangle computeTrim(Theme theme, GC gc) { - if (OS.COMCTL32_MAJOR >= 6 && OS.IsAppThemed ()) { - int /*long*/ hTheme = OS.OpenThemeData(0, getClassId()); - int x = clientArea.x, y = clientArea.y, width = clientArea.width, height = clientArea.height; - if ((style & SWT.LEFT) != 0) { - x -= TABITEM_INSET; - width += TABITEM_INSET; - } - y -= TABITEM_INSET; - height += TABITEM_INSET; - RECT rect = new RECT (); - rect.left = x; - rect.right = x + width; - rect.top = y; - rect.bottom = y + height; - RECT extent = new RECT (); - int[] part = getPartId(DrawData.WIDGET_WHOLE); - OS.GetThemeBackgroundExtent(hTheme, gc.handle, part[0], part[1], rect, extent); - extent.left -= TABITEM_INSET2; - extent.top -= TABITEM_INSET2; - extent.right += TABITEM_INSET2; - OS.CloseThemeData(hTheme); - return new Rectangle(extent.left, extent.top, extent.right - extent.left, extent.bottom - extent.top); - } - return new Rectangle(0, 0, 0, 0); -} - -void draw(Theme theme, GC gc, Rectangle bounds) { - if (OS.COMCTL32_MAJOR >= 6 && OS.IsAppThemed ()) { - int state = this.state[DrawData.WIDGET_WHOLE]; - int /*long*/ hTheme = OS.OpenThemeData(0, getClassId()); - int x = bounds.x, y = bounds.y, width = bounds.width, height = bounds.height; - if ((position & SWT.LEFT) != 0) { - x += TABITEM_INSET; - width -= TABITEM_INSET; - } - y += TABITEM_INSET; - height -= TABITEM_INSET; - if ((state & DrawData.SELECTED) != 0) { - //TODO - draws outside of bounds - x -= TABITEM_INSET; - y -= TABITEM_INSET; - width += TABITEM_INSET * 2; - height += TABITEM_INSET * 2; - } - RECT rect = new RECT (); - rect.left = x; - rect.right = x + width; - rect.top = y; - rect.bottom = y + height; - int[] part = getPartId(DrawData.WIDGET_WHOLE); - OS.DrawThemeBackground (hTheme, gc.handle, part[0], part[1], rect, null); - OS.CloseThemeData(hTheme); - Rectangle clientArea = this.clientArea; - if (clientArea != null) { - RECT contentRect = new RECT(); - OS.GetThemeBackgroundContentRect(hTheme, gc.handle, part[0], part[1], rect, contentRect); - clientArea.x = contentRect.left; - clientArea.y = contentRect.top; - clientArea.width = contentRect.right - contentRect.left; - clientArea.height = contentRect.bottom - contentRect.top; - } - } -} - -char[] getClassId() { - return TAB; -} - -int[] getPartId(int part) { - int state = this.state[part]; - int iPartId = OS.TABP_TABITEM, iStateId = OS.TIS_NORMAL; - if ((style & SWT.LEFT) != 0 && (style & SWT.RIGHT) != 0) { - iPartId = OS.TABP_TABITEMLEFTEDGE; - } else if ((style & SWT.LEFT) != 0) { - iPartId = OS.TABP_TABITEMLEFTEDGE; - } else if ((style & SWT.RIGHT) != 0) { - } - if ((state & DrawData.HOT) != 0) iStateId = OS.TIS_HOT; - if ((state & DrawData.FOCUSED) != 0) iStateId = OS.TIS_FOCUSED; - if ((state & DrawData.SELECTED) != 0) iStateId = OS.TIS_SELECTED; - if ((state & DrawData.DISABLED) != 0) iStateId = OS.TIS_DISABLED; - return new int[]{iPartId, iStateId}; -} - -int hit(Theme theme, Point position, Rectangle bounds) { - if (!bounds.contains(position)) return DrawData.WIDGET_NOWHERE; - int style = this.style; - int x = bounds.x, y = bounds.y, width = bounds.width, height = bounds.height; - if ((style & SWT.LEFT) != 0) { - x += TABITEM_INSET; - width -= TABITEM_INSET; - } - y += TABITEM_INSET; - height -= TABITEM_INSET; - Rectangle content = new Rectangle(x, y, width, height); - if (!content.contains(position)) return DrawData.WIDGET_NOWHERE; - return DrawData.WIDGET_WHOLE; -} - -} diff --git a/bundles/org.eclipse.swt/Eclipse SWT Theme/win32/org/eclipse/swt/internal/theme/Theme.java b/bundles/org.eclipse.swt/Eclipse SWT Theme/win32/org/eclipse/swt/internal/theme/Theme.java deleted file mode 100644 index 0b86e9dc41..0000000000 --- a/bundles/org.eclipse.swt/Eclipse SWT Theme/win32/org/eclipse/swt/internal/theme/Theme.java +++ /dev/null @@ -1,113 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2006 IBM Corporation 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 - *******************************************************************************/ -package org.eclipse.swt.internal.theme; - -import org.eclipse.swt.*; -import org.eclipse.swt.graphics.*; - -public class Theme { - - Device device; - -public Theme(Device device) { - this.device = device; -} - -public Rectangle computeTrim(GC gc, DrawData data) { - checkTheme(); - if (gc == null) SWT.error(SWT.ERROR_NULL_ARGUMENT); - if (data == null) SWT.error(SWT.ERROR_NULL_ARGUMENT); - if (gc.isDisposed()) SWT.error(SWT.ERROR_INVALID_ARGUMENT); - return data.computeTrim(this, gc); -} - -void checkTheme() { - if (isDisposed()) SWT.error(SWT.ERROR_GRAPHIC_DISPOSED); -} - -public void dispose () { - device = null; -} - -public void drawBackground(GC gc, Rectangle bounds, DrawData data) { - checkTheme(); - if (gc == null) SWT.error(SWT.ERROR_NULL_ARGUMENT); - if (bounds == null) SWT.error(SWT.ERROR_NULL_ARGUMENT); - if (data == null) SWT.error(SWT.ERROR_NULL_ARGUMENT); - if (gc.isDisposed()) SWT.error(SWT.ERROR_INVALID_ARGUMENT); - data.draw(this, gc, bounds); -} - -public void drawFocus(GC gc, Rectangle bounds, DrawData data) { - checkTheme(); - if (gc == null) SWT.error(SWT.ERROR_NULL_ARGUMENT); - if (bounds == null) SWT.error(SWT.ERROR_NULL_ARGUMENT); - if (data == null) SWT.error(SWT.ERROR_NULL_ARGUMENT); - if (gc.isDisposed()) SWT.error(SWT.ERROR_INVALID_ARGUMENT); - gc.drawFocus(bounds.x, bounds.y, bounds.width, bounds.height); -} - -public void drawImage(GC gc, Rectangle bounds, DrawData data, Image image, int flags) { - checkTheme(); - if (gc == null) SWT.error(SWT.ERROR_NULL_ARGUMENT); - if (bounds == null) SWT.error(SWT.ERROR_NULL_ARGUMENT); - if (data == null) SWT.error(SWT.ERROR_NULL_ARGUMENT); - if (image == null) SWT.error(SWT.ERROR_NULL_ARGUMENT); - if (gc.isDisposed()) SWT.error(SWT.ERROR_INVALID_ARGUMENT); - data.drawImage(this, image, gc, bounds); -} - -public void drawText(GC gc, Rectangle bounds, DrawData data, String text, int flags) { - checkTheme(); - if (gc == null) SWT.error(SWT.ERROR_NULL_ARGUMENT); - if (bounds == null) SWT.error(SWT.ERROR_NULL_ARGUMENT); - if (data == null) SWT.error(SWT.ERROR_NULL_ARGUMENT); - if (text == null) SWT.error(SWT.ERROR_NULL_ARGUMENT); - if (gc.isDisposed()) SWT.error(SWT.ERROR_INVALID_ARGUMENT); - data.drawText(this, text, flags, gc, bounds); -} - -public Rectangle getBounds(int part, Rectangle bounds, DrawData data) { - checkTheme(); - if (bounds == null) SWT.error(SWT.ERROR_NULL_ARGUMENT); - if (data == null) SWT.error(SWT.ERROR_NULL_ARGUMENT); - return data.getBounds(part, bounds); -} - -public int getSelection(Point offset, Rectangle bounds, RangeDrawData data) { - checkTheme(); - if (offset == null) SWT.error(SWT.ERROR_NULL_ARGUMENT); - if (bounds == null) SWT.error(SWT.ERROR_NULL_ARGUMENT); - if (data == null) SWT.error(SWT.ERROR_NULL_ARGUMENT); - return data.getSelection(offset, bounds); -} - -public int hitBackground(Point position, Rectangle bounds, DrawData data) { - checkTheme(); - if (position == null) SWT.error(SWT.ERROR_NULL_ARGUMENT); - if (bounds == null) SWT.error(SWT.ERROR_NULL_ARGUMENT); - if (data == null) SWT.error(SWT.ERROR_NULL_ARGUMENT); - return data.hit(this, position, bounds); -} - -public boolean isDisposed() { - return device == null; -} - -public Rectangle measureText(GC gc, Rectangle bounds, DrawData data, String text, int flags) { - checkTheme(); - if (gc == null) SWT.error(SWT.ERROR_NULL_ARGUMENT); - if (data == null) SWT.error(SWT.ERROR_NULL_ARGUMENT); - if (text == null) SWT.error(SWT.ERROR_NULL_ARGUMENT); - if (gc.isDisposed()) SWT.error(SWT.ERROR_INVALID_ARGUMENT); - return data.measureText(this, text, flags, gc, bounds); -} -} diff --git a/bundles/org.eclipse.swt/Eclipse SWT Theme/win32/org/eclipse/swt/internal/theme/ToolBarDrawData.java b/bundles/org.eclipse.swt/Eclipse SWT Theme/win32/org/eclipse/swt/internal/theme/ToolBarDrawData.java deleted file mode 100644 index cce59534a5..0000000000 --- a/bundles/org.eclipse.swt/Eclipse SWT Theme/win32/org/eclipse/swt/internal/theme/ToolBarDrawData.java +++ /dev/null @@ -1,33 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2006 IBM Corporation 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 - *******************************************************************************/ -package org.eclipse.swt.internal.theme; - -import org.eclipse.swt.graphics.*; - -public class ToolBarDrawData extends DrawData { - -public ToolBarDrawData() { - state = new int[1]; -} - -void draw(Theme theme, GC gc, Rectangle bounds) { -} - -char[] getClassId() { - return TOOLBAR; -} - -int hit(Theme theme, Point position, Rectangle bounds) { - if (!bounds.contains(position)) return DrawData.WIDGET_NOWHERE; - return DrawData.WIDGET_WHOLE; -} - -} diff --git a/bundles/org.eclipse.swt/Eclipse SWT Theme/win32/org/eclipse/swt/internal/theme/ToolItemDrawData.java b/bundles/org.eclipse.swt/Eclipse SWT Theme/win32/org/eclipse/swt/internal/theme/ToolItemDrawData.java deleted file mode 100644 index 516595f9be..0000000000 --- a/bundles/org.eclipse.swt/Eclipse SWT Theme/win32/org/eclipse/swt/internal/theme/ToolItemDrawData.java +++ /dev/null @@ -1,169 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2007 IBM Corporation 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 - *******************************************************************************/ -package org.eclipse.swt.internal.theme; - -import org.eclipse.swt.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.internal.win32.*; - -public class ToolItemDrawData extends DrawData { - - public ToolBarDrawData parent; - - static final int INSET = 1; - -public ToolItemDrawData() { - state = new int[2]; -} - -Rectangle computeTrim(Theme theme, GC gc) { - if (OS.COMCTL32_MAJOR >= 6 && OS.IsAppThemed ()) { - int /*long*/ hTheme = OS.OpenThemeData(0, getClassId()); - RECT rect = new RECT (); - rect.left = clientArea.x; - rect.right = clientArea.x + clientArea.width; - rect.top = clientArea.y; - rect.bottom = clientArea.y + clientArea.height; - RECT extent = new RECT (); - int[] part = getPartId(DrawData.WIDGET_WHOLE); - OS.GetThemeBackgroundExtent(hTheme, gc.handle, part[0], part[1], rect, extent); - OS.CloseThemeData(hTheme); - if ((style & SWT.DROP_DOWN) != 0) { - SIZE size = new SIZE(); - part = getPartId(DrawData.TOOLITEM_ARROW); - OS.GetThemePartSize(hTheme, 0, part[0], part[1], null, OS.TS_TRUE, size); - extent.right = Math.max(extent.left, extent.right + size.cx); - } else { - extent.left -= INSET; - extent.top -= INSET; - extent.right += INSET; - extent.bottom += INSET; - } - return new Rectangle(extent.left, extent.top, extent.right - extent.left, extent.bottom - extent.top); - } - return new Rectangle(0, 0, 0, 0); -} - -void draw(Theme theme, GC gc, Rectangle bounds) { - if (OS.COMCTL32_MAJOR >= 6 && OS.IsAppThemed ()) { - int /*long*/ hTheme = OS.OpenThemeData(0, getClassId()); - RECT rect = new RECT (); - rect.left = bounds.x; - rect.right = bounds.x + bounds.width; - rect.top = bounds.y; - rect.bottom = bounds.y + bounds.height; - SIZE size = null; - int[] dropPart = null; - if ((style & SWT.DROP_DOWN) != 0) { - size = new SIZE(); - dropPart = getPartId(DrawData.TOOLITEM_ARROW); - OS.GetThemePartSize(hTheme, gc.handle, dropPart[0], dropPart[1], rect, OS.TS_TRUE, size); - rect.right -= size.cx; - if (rect.right < rect.left) rect.right = rect.left; - } - int[] part = getPartId(DrawData.WIDGET_WHOLE); - OS.DrawThemeBackground(hTheme, gc.handle, part[0], part[1], rect, null); - Rectangle clientArea = this.clientArea; - if (clientArea != null) { - RECT contentRect = new RECT(); - OS.GetThemeBackgroundContentRect(hTheme, gc.handle, part[0], part[1], rect, contentRect); - clientArea.x = contentRect.left; - clientArea.y = contentRect.top; - clientArea.width = contentRect.right - contentRect.left; - clientArea.height = contentRect.bottom - contentRect.top; - } - if ((style & SWT.DROP_DOWN) != 0) { - rect.left = rect.right; - rect.right = rect.left + size.cx; - OS.DrawThemeBackground(hTheme, gc.handle, dropPart[0], dropPart[1], rect, null); - } - OS.CloseThemeData(hTheme); - } -} - -char[] getClassId() { - return TOOLBAR; -} - -int[] getPartId(int part) { - int state = this.state[part]; - int iPartId = 0, iStateId = 0; - switch (part) { - case DrawData.WIDGET_WHOLE: - if ((style & (SWT.PUSH | SWT.CHECK | SWT.RADIO)) != 0) { - iPartId = OS.TP_BUTTON; - } else if ((style & SWT.DROP_DOWN) != 0) { - iPartId = OS.TP_SPLITBUTTON; - } else if ((style & SWT.SEPARATOR) != 0) { - if ((parent.style & SWT.VERTICAL) != 0) { - iPartId = OS.TP_SEPARATORVERT; - } else { - iPartId = OS.TP_SEPARATOR; - } - } - if ((style & SWT.SEPARATOR) == 0) { - if ((state & DrawData.HOT) != 0) { - if ((style & (SWT.RADIO | SWT.CHECK)) != 0 && (state & DrawData.SELECTED) != 0) { - iStateId = OS.TS_HOTCHECKED; - } else { - iStateId = OS.TS_HOT; - } - } - if ((style & (SWT.RADIO | SWT.CHECK)) != 0 && (state & DrawData.SELECTED) != 0) { - iStateId = OS.TS_CHECKED; - } - if ((state & DrawData.PRESSED) != 0) iStateId = OS.TS_PRESSED; - if ((state & DrawData.DISABLED) != 0) iStateId = OS.TS_DISABLED; - } - break; - case DrawData.TOOLITEM_ARROW: - iPartId = OS.TP_SPLITBUTTONDROPDOWN; - if ((state & DrawData.HOT) != 0) iStateId = OS.TS_HOT; - if ((state & DrawData.PRESSED) != 0) iStateId = OS.TS_PRESSED; - if ((state & DrawData.DISABLED) !=0) iStateId = OS.TS_DISABLED; - break; - } - return new int[]{iPartId, iStateId}; -} - -int hit(Theme theme, Point position, Rectangle bounds) { - if (!(OS.COMCTL32_MAJOR >= 6 && OS.IsAppThemed ())) return DrawData.WIDGET_NOWHERE; - if (!bounds.contains(position)) return DrawData.WIDGET_NOWHERE; - int /*long*/ hTheme = OS.OpenThemeData(0, getClassId()); - try { - RECT rect = new RECT (); - rect.left = bounds.x; - rect.right = bounds.x + bounds.width; - rect.top = bounds.y; - rect.bottom = bounds.y + bounds.height; - POINT pt = new POINT(); - pt.x = position.x; - pt.y = position.y; - short[] code = new short[1]; - int[] part = getPartId(DrawData.WIDGET_WHOLE); - OS.HitTestThemeBackground(hTheme, 0, part[0], part[1], 0, rect, 0, pt, code); - if (code[0] == OS.HTNOWHERE) return DrawData.WIDGET_NOWHERE; - int style = this.style; - if ((style & SWT.DROP_DOWN) != 0) { - SIZE size = new SIZE(); - part = getPartId(DrawData.TOOLITEM_ARROW); - OS.GetThemePartSize(hTheme, 0, part[0], part[1], rect, OS.TS_TRUE, size); - rect.left = Math.max(rect.left, rect.right - size.cx); - OS.HitTestThemeBackground(hTheme, 0, part[0], part[1], 0, rect, 0, pt, code); - if (code[0] != OS.HTNOWHERE) return DrawData.TOOLITEM_ARROW; - } - } finally { - OS.CloseThemeData(hTheme); - } - return DrawData.WIDGET_WHOLE; -} - -} |