From 0518886266e58bed0332ced870ae5a7ec6da9dcb Mon Sep 17 00:00:00 2001 From: dcherepanov Date: Mon, 7 Dec 2009 13:43:04 +0300 Subject: 6823138: Need to replace ComponentAccessor with AWTAccessor Reviewed-by: art, anthony --- src/share/classes/java/awt/Component.java | 69 ++- src/share/classes/java/awt/Window.java | 12 + src/share/classes/sun/awt/AWTAccessor.java | 124 +++++- src/share/classes/sun/awt/ComponentAccessor.java | 483 --------------------- src/share/classes/sun/awt/GlobalCursorManager.java | 4 +- src/share/classes/sun/awt/SunToolkit.java | 12 + src/share/classes/sun/awt/WindowAccessor.java | 96 ---- .../classes/sun/awt/X11/XComponentPeer.java | 34 +- .../classes/sun/awt/X11/XContentWindow.java | 5 +- .../classes/sun/awt/X11/XDecoratedPeer.java | 32 +- src/solaris/classes/sun/awt/X11/XDialogPeer.java | 6 +- .../sun/awt/X11/XDragSourceContextPeer.java | 5 +- .../classes/sun/awt/X11/XEmbedChildProxy.java | 7 +- .../classes/sun/awt/X11/XGlobalCursorManager.java | 35 +- src/solaris/classes/sun/awt/X11/XTextAreaPeer.java | 19 +- .../classes/sun/awt/X11/XTextFieldPeer.java | 15 +- src/solaris/classes/sun/awt/X11/XToolkit.java | 2 +- src/solaris/classes/sun/awt/X11/XTrayIconPeer.java | 2 +- src/solaris/classes/sun/awt/X11/XWindow.java | 15 +- src/solaris/classes/sun/awt/X11/XWindowPeer.java | 31 +- .../classes/sun/awt/windows/WCanvasPeer.java | 2 - .../classes/sun/awt/windows/WComponentPeer.java | 4 +- .../classes/sun/awt/windows/WDialogPeer.java | 2 +- .../classes/sun/awt/windows/WFileDialogPeer.java | 4 +- .../classes/sun/awt/windows/WPrintDialogPeer.java | 4 +- 25 files changed, 314 insertions(+), 710 deletions(-) delete mode 100644 src/share/classes/sun/awt/ComponentAccessor.java delete mode 100644 src/share/classes/sun/awt/WindowAccessor.java diff --git a/src/share/classes/java/awt/Component.java b/src/share/classes/java/awt/Component.java index 6a942e9ec..702d81b8f 100644 --- a/src/share/classes/java/awt/Component.java +++ b/src/share/classes/java/awt/Component.java @@ -871,7 +871,7 @@ public abstract class Component implements ImageObserver, MenuContainer, return comp.canBeFocusOwner(); } - public boolean isVisible_NoClientCode(Component comp) { + public boolean isVisible(Component comp) { return comp.isVisible_NoClientCode(); } public void setRequestFocusController @@ -885,6 +885,71 @@ public abstract class Component implements ImageObserver, MenuContainer, public void setAppContext(Component comp, AppContext appContext) { comp.appContext = appContext; } + public Container getParent(Component comp) { + return comp.getParent_NoClientCode(); + } + public void setParent(Component comp, Container parent) { + comp.parent = parent; + } + public void setSize(Component comp, int width, int height) { + comp.width = width; + comp.height = height; + } + public Point getLocation(Component comp) { + return comp.location_NoClientCode(); + } + public void setLocation(Component comp, int x, int y) { + comp.x = x; + comp.y = y; + } + public boolean isEnabled(Component comp) { + return comp.isEnabledImpl(); + } + public boolean isDisplayable(Component comp) { + return comp.peer != null; + } + public Cursor getCursor(Component comp) { + return comp.getCursor_NoClientCode(); + } + public ComponentPeer getPeer(Component comp) { + return comp.peer; + } + public void setPeer(Component comp, ComponentPeer peer) { + comp.peer = peer; + } + public boolean isLightweight(Component comp) { + return (comp.peer instanceof LightweightPeer); + } + public boolean getIgnoreRepaint(Component comp) { + return comp.ignoreRepaint; + } + public int getWidth(Component comp) { + return comp.width; + } + public int getHeight(Component comp) { + return comp.height; + } + public int getX(Component comp) { + return comp.x; + } + public int getY(Component comp) { + return comp.y; + } + public Color getForeground(Component comp) { + return comp.foreground; + } + public Color getBackground(Component comp) { + return comp.background; + } + public void setBackground(Component comp, Color background) { + comp.background = background; + } + public Font getFont(Component comp) { + return comp.getFont_NoClientCode(); + } + public void processEvent(Component comp, AWTEvent e) { + comp.processEvent(e); + } }); } @@ -8021,7 +8086,7 @@ public abstract class Component implements ImageObserver, MenuContainer, Container getNativeContainer() { Container p = parent; while (p != null && p.peer instanceof LightweightPeer) { - p = p.getParent(); + p = p.getParent_NoClientCode(); } return p; } diff --git a/src/share/classes/java/awt/Window.java b/src/share/classes/java/awt/Window.java index 88a196918..a1882030c 100644 --- a/src/share/classes/java/awt/Window.java +++ b/src/share/classes/java/awt/Window.java @@ -3964,6 +3964,18 @@ public class Window extends Container implements Accessible { public void setLWRequestStatus(Window changed, boolean status) { changed.syncLWRequests = status; } + + public boolean isAutoRequestFocus(Window w) { + return w.autoRequestFocus; + } + + public boolean isTrayIconWindow(Window w) { + return w.isTrayIconWindow; + } + + public void setTrayIconWindow(Window w, boolean isTrayIconWindow) { + w.isTrayIconWindow = isTrayIconWindow; + } }); // WindowAccessor } // static diff --git a/src/share/classes/sun/awt/AWTAccessor.java b/src/share/classes/sun/awt/AWTAccessor.java index 67eb05100..964e3e0e7 100644 --- a/src/share/classes/sun/awt/AWTAccessor.java +++ b/src/share/classes/sun/awt/AWTAccessor.java @@ -98,7 +98,7 @@ public final class AWTAccessor { * Returns whether the component is visible without invoking * any client code. */ - boolean isVisible_NoClientCode(Component comp); + boolean isVisible(Component comp); /** * Sets the RequestFocusController. @@ -114,6 +114,112 @@ public final class AWTAccessor { * Sets the appContext of the component. */ void setAppContext(Component comp, AppContext appContext); + + /** + * Returns the parent of the component. + */ + Container getParent(Component comp); + + /** + * Sets the parent of the component to the specified parent. + */ + void setParent(Component comp, Container parent); + + /** + * Resizes the component to the specified width and height. + */ + void setSize(Component comp, int width, int height); + + /** + * Returns the location of the component. + */ + Point getLocation(Component comp); + + /** + * Moves the component to the new location. + */ + void setLocation(Component comp, int x, int y); + + /** + * Determines whether this component is enabled. + */ + boolean isEnabled(Component comp); + + /** + * Determines whether this component is displayable. + */ + boolean isDisplayable(Component comp); + + /** + * Gets the cursor set in the component. + */ + Cursor getCursor(Component comp); + + /** + * Returns the peer of the component. + */ + ComponentPeer getPeer(Component comp); + + /** + * Sets the peer of the component to the specified peer. + */ + void setPeer(Component comp, ComponentPeer peer); + + /** + * Determines whether this component is lightweight. + */ + boolean isLightweight(Component comp); + + /** + * Returns whether or not paint messages received from + * the operating system should be ignored. + */ + boolean getIgnoreRepaint(Component comp); + + /** + * Returns the width of the component. + */ + int getWidth(Component comp); + + /** + * Returns the height of the component. + */ + int getHeight(Component comp); + + /** + * Returns the x coordinate of the component. + */ + int getX(Component comp); + + /** + * Returns the y coordinate of the component. + */ + int getY(Component comp); + + /** + * Gets the foreground color of this component. + */ + Color getForeground(Component comp); + + /** + * Gets the background color of this component. + */ + Color getBackground(Component comp); + + /** + * Sets the background of this component to the specified color. + */ + void setBackground(Component comp, Color background); + + /** + * Gets the font of the component. + */ + Font getFont(Component comp); + + /** + * Processes events occurring on this component. + */ + void processEvent(Component comp, AWTEvent e); } /* @@ -169,6 +275,22 @@ public final class AWTAccessor { * components in the specified window to the specified value. */ void setLWRequestStatus(Window changed, boolean status); + + /** + * Indicates whether this window should receive focus on subsequently + * being shown, or being moved to the front. + */ + boolean isAutoRequestFocus(Window w); + + /** + * Indicates whether the specified window is an utility window for TrayIcon. + */ + boolean isTrayIconWindow(Window w); + + /** + * Marks the specified window as an utility window for TrayIcon. + */ + void setTrayIconWindow(Window w, boolean isTrayIconWindow); } /* diff --git a/src/share/classes/sun/awt/ComponentAccessor.java b/src/share/classes/sun/awt/ComponentAccessor.java deleted file mode 100644 index d186363e5..000000000 --- a/src/share/classes/sun/awt/ComponentAccessor.java +++ /dev/null @@ -1,483 +0,0 @@ -/* - * Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.awt; - -import java.awt.Component; -import java.awt.Container; -import java.awt.AWTEvent; -import java.awt.Font; -import java.awt.Color; -import java.awt.Cursor; -import java.awt.Point; - -import java.awt.peer.ComponentPeer; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.lang.reflect.InvocationTargetException; - -import sun.util.logging.PlatformLogger; - -import java.security.AccessController; -import java.security.PrivilegedAction; - -/** - * A collection of methods for modifying package private fields in AWT components. - * This class is meant to be used by Peer code only. Previously peer code - * got around this problem by modifying fields from native code. However - * as we move away from native code to Pure-java peers we need this class. - * - * @author Bino George - */ - - -public class ComponentAccessor -{ - private static Class componentClass; - private static Field fieldX; - private static Field fieldY; - private static Field fieldWidth; - private static Field fieldHeight; - private static Method methodGetParentNoClientCode; - private static Method methodGetFontNoClientCode; - private static Method methodProcessEvent; - private static Method methodEnableEvents; - private static Field fieldParent; - private static Field fieldBackground; - private static Field fieldForeground; - private static Field fieldFont; - private static Field fieldPacked; - private static Field fieldIgnoreRepaint; - private static Field fieldPeer; - private static Field fieldVisible; - private static Method methodIsEnabledImpl; - private static Method methodGetCursorNoClientCode; - private static Method methodLocationNoClientCode; - - private static final PlatformLogger log = PlatformLogger.getLogger("sun.awt.ComponentAccessor"); - - private ComponentAccessor() { - } - - static { - AccessController.doPrivileged( new PrivilegedAction() { - public Object run() { - try { - componentClass = Class.forName("java.awt.Component"); - fieldX = componentClass.getDeclaredField("x"); - fieldX.setAccessible(true); - fieldY = componentClass.getDeclaredField("y"); - fieldY.setAccessible(true); - fieldWidth = componentClass.getDeclaredField("width"); - fieldWidth.setAccessible(true); - fieldHeight = componentClass.getDeclaredField("height"); - fieldHeight.setAccessible(true); - fieldForeground = componentClass.getDeclaredField("foreground"); - fieldForeground.setAccessible(true); - fieldBackground = componentClass.getDeclaredField("background"); - fieldBackground.setAccessible(true); - fieldFont = componentClass.getDeclaredField("font"); - fieldFont.setAccessible(true); - methodGetParentNoClientCode = componentClass.getDeclaredMethod("getParent_NoClientCode", (Class[]) null); - methodGetParentNoClientCode.setAccessible(true); - methodGetFontNoClientCode = componentClass.getDeclaredMethod("getFont_NoClientCode", (Class[]) null); - methodGetFontNoClientCode.setAccessible(true); - Class[] argTypes = { AWTEvent.class }; - methodProcessEvent = componentClass.getDeclaredMethod("processEvent",argTypes); - methodProcessEvent.setAccessible(true); - Class[] argTypesForMethodEnableEvents = { Long.TYPE }; - methodEnableEvents = componentClass.getDeclaredMethod("enableEvents",argTypesForMethodEnableEvents); - methodEnableEvents.setAccessible(true); - - fieldParent = componentClass.getDeclaredField("parent"); - fieldParent.setAccessible(true); - fieldPacked = componentClass.getDeclaredField("isPacked"); - fieldPacked.setAccessible(true); - fieldIgnoreRepaint = componentClass.getDeclaredField("ignoreRepaint"); - fieldIgnoreRepaint.setAccessible(true); - - fieldPeer = componentClass.getDeclaredField("peer"); - fieldPeer.setAccessible(true); - - fieldVisible = componentClass.getDeclaredField("visible"); - fieldVisible.setAccessible(true); - - methodIsEnabledImpl = componentClass.getDeclaredMethod("isEnabledImpl", (Class[]) null); - methodIsEnabledImpl.setAccessible(true); - - methodGetCursorNoClientCode = componentClass.getDeclaredMethod("getCursor_NoClientCode", (Class[]) null); - methodGetCursorNoClientCode.setAccessible(true); - - methodLocationNoClientCode = componentClass.getDeclaredMethod("location_NoClientCode", (Class[]) null); - methodLocationNoClientCode.setAccessible(true); - } - catch (NoSuchFieldException e) { - log.fine("Unable to initialize ComponentAccessor", e); - } - catch (ClassNotFoundException e) { - log.fine("Unable to initialize ComponentAccessor", e); - } - catch (NoSuchMethodException e) { - log.fine("Unable to initialize ComponentAccessor", e); - } - // to please javac - return null; - } - }); - } - - public static void setX(Component c, int x) - { - try { - fieldX.setInt(c,x); - } - catch (IllegalAccessException e) - { - log.fine("Unable to access the Component object", e); - } - } - - public static void setY(Component c, int y) - { - try { - fieldY.setInt(c,y); - } - catch (IllegalAccessException e) - { - log.fine("Unable to access the Component object", e); - } - } - - public static void setWidth(Component c, int width) - { - try { - fieldWidth.setInt(c,width); - } - catch (IllegalAccessException e) - { - log.fine("Unable to access the Component object", e); - } - } - - public static void setHeight(Component c, int height) - { - try { - fieldHeight.setInt(c,height); - } - catch (IllegalAccessException e) - { - log.fine("Unable to access the Component object", e); - } - } - - public static void setBounds(Component c, int x, int y, int width, int height) - { - try { - fieldX.setInt(c,x); - fieldY.setInt(c,y); - fieldWidth.setInt(c,width); - fieldHeight.setInt(c,height); - } - catch (IllegalAccessException e) - { - log.fine("Unable to access the Component object", e); - } - } - - public static int getX(Component c) { - try { - return fieldX.getInt(c); - } - catch (IllegalAccessException e) - { - log.fine("Unable to access the Component object", e); - } - return 0; - } - - public static int getY(Component c) { - try { - return fieldY.getInt(c); - } - catch (IllegalAccessException e) - { - log.fine("Unable to access the Component object", e); - } - return 0; - } - - public static int getWidth(Component c) { - try { - return fieldWidth.getInt(c); - } - catch (IllegalAccessException e) - { - log.fine("Unable to access the Component object", e); - } - return 0; - } - - public static int getHeight(Component c) { - try { - return fieldHeight.getInt(c); - } - catch (IllegalAccessException e) - { - log.fine("Unable to access the Component object", e); - } - return 0; - } - - public static boolean getIsPacked(Component c) { - try { - return fieldPacked.getBoolean(c); - } - catch (IllegalAccessException e) - { - log.fine("Unable to access the Component object", e); - } - return false; - } - - public static Container getParent_NoClientCode(Component c) { - Container parent=null; - - try { - parent = (Container) methodGetParentNoClientCode.invoke(c, (Object[]) null); - } - catch (IllegalAccessException e) - { - log.fine("Unable to access the Component object", e); - } - catch (InvocationTargetException e) { - log.fine("Unable to invoke on the Component object", e); - } - - return parent; - } - - public static Font getFont_NoClientCode(Component c) { - Font font=null; - - try { - font = (Font) methodGetFontNoClientCode.invoke(c, (Object[]) null); - } - catch (IllegalAccessException e) - { - log.fine("Unable to access the Component object", e); - } - catch (InvocationTargetException e) { - log.fine("Unable to invoke on the Component object", e); - } - - return font; - } - - public static void processEvent(Component c, AWTEvent event) { - Font font=null; - - try { - Object[] args = new Object[1]; - args[0] = event; - methodProcessEvent.invoke(c,args); - } - catch (IllegalAccessException e) - { - log.fine("Unable to access the Component object", e); - } - catch (InvocationTargetException e) { - log.fine("Unable to invoke on the Component object", e); - } - } - - public static void enableEvents(Component c, long event_mask) { - try { - Object[] args = new Object[1]; - args[0] = Long.valueOf(event_mask); - methodEnableEvents.invoke(c,args); - } - catch (IllegalAccessException e) - { - log.fine("Unable to access the Component object", e); - } - catch (InvocationTargetException e) { - log.fine("Unable to invoke on the Component object", e); - } - } - - public static void setParent(Component c, Container parent) - { - try { - fieldParent.set(c,parent); - } - catch (IllegalAccessException e) - { - log.fine("Unable to access the Component object", e); - } - } - - public static Color getForeground(Component c) - { - Color color = null; - try { - color = (Color) fieldForeground.get(c); - } - catch (IllegalAccessException e) - { - log.fine("Unable to access the Component object", e); - } - return color; - } - - public static Color getBackground(Component c) - { - Color color = null; - try { - color = (Color) fieldBackground.get(c); - } - catch (IllegalAccessException e) - { - log.fine("Unable to access the Component object", e); - } - return color; - } - - public static void setBackground(Component c, Color color) { - try { - fieldBackground.set(c, color); - } - catch (IllegalAccessException e) - { - log.fine("Unable to access the Component object", e); - } - } - - public static Font getFont(Component c) - { - Font f = null; - try { - f = (Font) fieldFont.get(c); - } - catch (IllegalAccessException e) - { - log.fine("Unable to access the Component object", e); - } - return f; - } - - public static ComponentPeer getPeer(Component c) { - ComponentPeer peer = null; - try { - peer = (ComponentPeer)fieldPeer.get(c); - } - catch (IllegalAccessException e) - { - log.fine("Unable to access the Component object", e); - } - return peer; - } - - public static void setPeer(Component c, ComponentPeer peer) { - try { - fieldPeer.set(c, peer); - } catch (IllegalAccessException e) - { - log.fine("Unable to access the Component object", e); - } - } - - public static boolean getIgnoreRepaint(Component comp) { - try { - return fieldIgnoreRepaint.getBoolean(comp); - } - catch (IllegalAccessException e) { - log.fine("Unable to access the Component object", e); - } - - return false; - } - - public static boolean getVisible(Component c) { - try { - return fieldVisible.getBoolean(c); - } - catch (IllegalAccessException e) - { - log.fine("Unable to access the Component object", e); - } - return false; - } - - public static boolean isEnabledImpl(Component c) { - boolean enabled = true; - try { - enabled = (Boolean) methodIsEnabledImpl.invoke(c, (Object[]) null); - } - catch (IllegalAccessException e) - { - log.fine("Unable to access the Component object", e); - } - catch (InvocationTargetException e) { - log.fine("Unable to invoke on the Component object", e); - } - return enabled; - } - - public static Cursor getCursor_NoClientCode(Component c) { - Cursor cursor = null; - - try { - cursor = (Cursor) methodGetCursorNoClientCode.invoke(c, (Object[]) null); - } - catch (IllegalAccessException e) - { - log.fine("Unable to access the Component object", e); - } - catch (InvocationTargetException e) { - log.fine("Unable to invoke on the Component object", e); - } - - return cursor; - } - - public static Point getLocation_NoClientCode(Component c) { - Point loc = null; - - try { - loc = (Point) methodLocationNoClientCode.invoke(c, (Object[]) null); - } - catch (IllegalAccessException e) - { - log.fine("Unable to access the Component object", e); - } - catch (InvocationTargetException e) { - log.fine("Unable to invoke on the Component object", e); - } - - return loc; - } - -} diff --git a/src/share/classes/sun/awt/GlobalCursorManager.java b/src/share/classes/sun/awt/GlobalCursorManager.java index ae54c2b01..8a0eb4dd4 100644 --- a/src/share/classes/sun/awt/GlobalCursorManager.java +++ b/src/share/classes/sun/awt/GlobalCursorManager.java @@ -183,7 +183,7 @@ public abstract class GlobalCursorManager { } if (comp instanceof Window) { - p = ComponentAccessor.getLocation_NoClientCode(comp); + p = AWTAccessor.getComponentAccessor().getLocation(comp); } else if (comp instanceof Container) { p = getLocationOnScreen(comp); } @@ -202,7 +202,7 @@ public abstract class GlobalCursorManager { } } - setCursor(comp, ComponentAccessor.getCursor_NoClientCode(comp), useCache); + setCursor(comp, AWTAccessor.getComponentAccessor().getCursor(comp), useCache); } catch (IllegalComponentStateException e) { // Shouldn't happen, but if it does, abort. diff --git a/src/share/classes/sun/awt/SunToolkit.java b/src/share/classes/sun/awt/SunToolkit.java index 0b1e7aab4..31f577bd1 100644 --- a/src/share/classes/sun/awt/SunToolkit.java +++ b/src/share/classes/sun/awt/SunToolkit.java @@ -1118,6 +1118,18 @@ public abstract class SunToolkit extends Toolkit return Toolkit.getNativeContainer(c); } + /** + * Gives native peers the ability to query the closest HW component. + * If the given component is heavyweight, then it returns this. Otherwise, + * it goes one level up in the hierarchy and tests next component. + */ + public static Component getHeavyweightComponent(Component c) { + while (c != null && AWTAccessor.getComponentAccessor().isLightweight(c)) { + c = AWTAccessor.getComponentAccessor().getParent(c); + } + return c; + } + /** * Returns a new input method window, with behavior as specified in * {@link java.awt.im.spi.InputMethodContext#createInputMethodWindow}. diff --git a/src/share/classes/sun/awt/WindowAccessor.java b/src/share/classes/sun/awt/WindowAccessor.java deleted file mode 100644 index e1fb7c4fc..000000000 --- a/src/share/classes/sun/awt/WindowAccessor.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright 2007 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.awt; - -import java.awt.Window; - -import java.lang.reflect.Field; - -import sun.util.logging.PlatformLogger; - -import java.security.AccessController; -import java.security.PrivilegedAction; - -public class WindowAccessor { - - private static Class windowClass; - private static Field fieldIsAutoRequestFocus; - private static Field fieldIsTrayIconWindow; - - private static final PlatformLogger log = PlatformLogger.getLogger("sun.awt.WindowAccessor"); - - private WindowAccessor() { - } - - static { - AccessController.doPrivileged( new PrivilegedAction() { - public Object run() { - try { - windowClass = Class.forName("java.awt.Window"); - fieldIsAutoRequestFocus = windowClass.getDeclaredField("autoRequestFocus"); - fieldIsAutoRequestFocus.setAccessible(true); - fieldIsTrayIconWindow = windowClass.getDeclaredField("isTrayIconWindow"); - fieldIsTrayIconWindow.setAccessible(true); - - } catch (NoSuchFieldException e) { - log.fine("Unable to initialize WindowAccessor: ", e); - } catch (ClassNotFoundException e) { - log.fine("Unable to initialize WindowAccessor: ", e); - } - return null; - } - }); - } - - public static boolean isAutoRequestFocus(Window w) { - try { - return fieldIsAutoRequestFocus.getBoolean(w); - - } catch (IllegalAccessException e) { - log.fine("Unable to access the Window object", e); - } - return true; - } - - public static boolean isTrayIconWindow(Window w) { - try { - return fieldIsTrayIconWindow.getBoolean(w); - - } catch (IllegalAccessException e) { - log.fine("Unable to access the Window object", e); - } - return false; - } - - public static void setTrayIconWindow(Window w, boolean isTrayIconWindow) { - try { - fieldIsTrayIconWindow.set(w, isTrayIconWindow); - - } catch (IllegalAccessException e) { - log.fine("Unable to access the Window object", e); - } - } -} diff --git a/src/solaris/classes/sun/awt/X11/XComponentPeer.java b/src/solaris/classes/sun/awt/X11/XComponentPeer.java index a0ca6efb4..78bc4e02c 100644 --- a/src/solaris/classes/sun/awt/X11/XComponentPeer.java +++ b/src/solaris/classes/sun/awt/X11/XComponentPeer.java @@ -212,27 +212,6 @@ public class XComponentPeer extends XWindow implements ComponentPeer, DropTarget return true; } - static XComponentPeer getNativeContainer(Component comp) { - if (comp == null) { - return null; - } - - synchronized(comp.getTreeLock()) { - while (comp != null && (ComponentAccessor.getPeer(comp) instanceof LightweightPeer)) { - comp = ComponentAccessor.getParent_NoClientCode(comp); - } - - if (comp != null) { - ComponentPeer peer = ComponentAccessor.getPeer(comp); - if (peer != null && peer instanceof XComponentPeer) { - return (XComponentPeer)peer; - } - } - } - - return null; - } - /************************************************* * FOCUS STUFF *************************************************/ @@ -508,13 +487,14 @@ public class XComponentPeer extends XWindow implements ComponentPeer, DropTarget } XWindowPeer getParentTopLevel() { - Container parent = (target instanceof Container) ? ((Container)target) : (ComponentAccessor.getParent_NoClientCode(target)); + AWTAccessor.ComponentAccessor compAccessor = AWTAccessor.getComponentAccessor(); + Container parent = (target instanceof Container) ? ((Container)target) : (compAccessor.getParent(target)); // Search for parent window while (parent != null && !(parent instanceof Window)) { - parent = ComponentAccessor.getParent_NoClientCode(parent); + parent = compAccessor.getParent(parent); } if (parent != null) { - return (XWindowPeer)ComponentAccessor.getPeer(parent); + return (XWindowPeer)compAccessor.getPeer(parent); } else { return null; } @@ -828,7 +808,7 @@ public class XComponentPeer extends XWindow implements ComponentPeer, DropTarget public void endLayout() { if (!paintPending && !paintArea.isEmpty() - && !ComponentAccessor.getIgnoreRepaint(target)) + && !AWTAccessor.getComponentAccessor().getIgnoreRepaint(target)) { // if not waiting for native painting repaint damaged area postEvent(new PaintEvent(target, PaintEvent.PAINT, @@ -1239,11 +1219,11 @@ public class XComponentPeer extends XWindow implements ComponentPeer, DropTarget // End of multi-buffering public void notifyTextComponentChange(boolean add){ - Container parent = ComponentAccessor.getParent_NoClientCode(target); + Container parent = AWTAccessor.getComponentAccessor().getParent(target); while(!(parent == null || parent instanceof java.awt.Frame || parent instanceof java.awt.Dialog)) { - parent = ComponentAccessor.getParent_NoClientCode(parent); + parent = AWTAccessor.getComponentAccessor().getParent(parent); } /* FIX ME - FIX ME need to implement InputMethods diff --git a/src/solaris/classes/sun/awt/X11/XContentWindow.java b/src/solaris/classes/sun/awt/X11/XContentWindow.java index 0c4cf626e..d55dc42b0 100644 --- a/src/solaris/classes/sun/awt/X11/XContentWindow.java +++ b/src/solaris/classes/sun/awt/X11/XContentWindow.java @@ -32,7 +32,7 @@ import java.awt.event.ComponentEvent; import sun.util.logging.PlatformLogger; -import sun.awt.ComponentAccessor; +import sun.awt.AWTAccessor; /** * This class implements window which serves as content window for decorated frames. @@ -135,8 +135,7 @@ public final class XContentWindow extends XWindow { // NOTE: This method may be called by privileged threads. // DO NOT INVOKE CLIENT CODE ON THIS THREAD! public void handleResize(Rectangle bounds) { - ComponentAccessor.setWidth((Component)target, bounds.width); - ComponentAccessor.setHeight((Component)target, bounds.height); + AWTAccessor.getComponentAccessor().setSize((Component)target, bounds.width, bounds.height); postEvent(new ComponentEvent(target, ComponentEvent.COMPONENT_RESIZED)); } diff --git a/src/solaris/classes/sun/awt/X11/XDecoratedPeer.java b/src/solaris/classes/sun/awt/X11/XDecoratedPeer.java index be9599ce3..50d50dd02 100644 --- a/src/solaris/classes/sun/awt/X11/XDecoratedPeer.java +++ b/src/solaris/classes/sun/awt/X11/XDecoratedPeer.java @@ -32,7 +32,7 @@ import java.awt.event.WindowEvent; import sun.util.logging.PlatformLogger; -import sun.awt.ComponentAccessor; +import sun.awt.AWTAccessor; import sun.awt.SunToolkit; abstract class XDecoratedPeer extends XWindowPeer { @@ -167,10 +167,11 @@ abstract class XDecoratedPeer extends XWindowPeer { } public Graphics getGraphics() { + AWTAccessor.ComponentAccessor compAccessor = AWTAccessor.getComponentAccessor(); return getGraphics(content.surfaceData, - ComponentAccessor.getForeground(target), - ComponentAccessor.getBackground(target), - ComponentAccessor.getFont_NoClientCode(target)); + compAccessor.getForeground(target), + compAccessor.getBackground(target), + compAccessor.getFont(target)); } public void setTitle(String title) { @@ -404,8 +405,7 @@ abstract class XDecoratedPeer extends XWindowPeer { public void handleMoved(WindowDimensions dims) { Point loc = dims.getLocation(); - ComponentAccessor.setX((Component)target, loc.x); - ComponentAccessor.setY((Component)target, loc.y); + AWTAccessor.getComponentAccessor().setLocation((Component)target, loc.x, loc.y); postEvent(new ComponentEvent(target, ComponentEvent.COMPONENT_MOVED)); } @@ -511,8 +511,8 @@ abstract class XDecoratedPeer extends XWindowPeer { // its location changes. Point oldLocation = getLocation(); - Point newLocation = new Point(ComponentAccessor.getX((Component)target), - ComponentAccessor.getY((Component)target)); + Point newLocation = new Point(AWTAccessor.getComponentAccessor().getX((Component)target), + AWTAccessor.getComponentAccessor().getY((Component)target)); if (!newLocation.equals(oldLocation)) { handleMoved(newDimensions); @@ -710,10 +710,7 @@ abstract class XDecoratedPeer extends XWindowPeer { updateChildrenSizes(); // Bounds of the window - Rectangle targetBounds = new Rectangle(ComponentAccessor.getX((Component)target), - ComponentAccessor.getY((Component)target), - ComponentAccessor.getWidth((Component)target), - ComponentAccessor.getHeight((Component)target)); + Rectangle targetBounds = AWTAccessor.getComponentAccessor().getBounds((Component)target); Point newLocation = targetBounds.getLocation(); if (xe.get_send_event() || runningWM == XWM.NO_WM || XWM.isNonReparentingWM()) { @@ -1042,10 +1039,11 @@ abstract class XDecoratedPeer extends XWindowPeer { } final void dumpTarget() { - int getWidth = ComponentAccessor.getWidth((Component)target); - int getHeight = ComponentAccessor.getHeight((Component)target); - int getTargetX = ComponentAccessor.getX((Component)target); - int getTargetY = ComponentAccessor.getY((Component)target); + AWTAccessor.ComponentAccessor compAccessor = AWTAccessor.getComponentAccessor(); + int getWidth = compAccessor.getWidth((Component)target); + int getHeight = compAccessor.getHeight((Component)target); + int getTargetX = compAccessor.getX((Component)target); + int getTargetY = compAccessor.getY((Component)target); System.err.println(">>> Target: " + getTargetX + ", " + getTargetY + ", " + getWidth + ", " + getHeight); } @@ -1208,7 +1206,7 @@ abstract class XDecoratedPeer extends XWindowPeer { Window owner = XWindowPeer.getDecoratedOwner(actualFocusedWindow); if (owner != null && owner == target) { - setActualFocusedWindow((XWindowPeer) ComponentAccessor.getPeer(actualFocusedWindow)); + setActualFocusedWindow((XWindowPeer) AWTAccessor.getComponentAccessor().getPeer(actualFocusedWindow)); } } super.handleWindowFocusOut(oppositeWindow, serial); diff --git a/src/solaris/classes/sun/awt/X11/XDialogPeer.java b/src/solaris/classes/sun/awt/X11/XDialogPeer.java index ef7bfdaa0..6b1da2510 100644 --- a/src/solaris/classes/sun/awt/X11/XDialogPeer.java +++ b/src/solaris/classes/sun/awt/X11/XDialogPeer.java @@ -28,7 +28,7 @@ import java.util.*; import java.awt.*; import java.awt.peer.*; import java.awt.event.*; -import sun.awt.ComponentAccessor; +import sun.awt.AWTAccessor; import sun.awt.*; @@ -117,7 +117,7 @@ class XDialogPeer extends XDecoratedPeer implements DialogPeer { try { javaToplevels = XWindowPeer.collectJavaToplevels(); for (Window w : toBlock) { - XWindowPeer wp = (XWindowPeer)ComponentAccessor.getPeer(w); + XWindowPeer wp = (XWindowPeer)AWTAccessor.getComponentAccessor().getPeer(w); if (wp != null) { wp.setModalBlocked((Dialog)target, true, javaToplevels); } @@ -139,7 +139,7 @@ class XDialogPeer extends XDecoratedPeer implements DialogPeer { XWindowPeer focusedWindowPeer = null; if (focusedWindow != null) { - focusedWindowPeer = (XWindowPeer)ComponentAccessor.getPeer(focusedWindow); + focusedWindowPeer = (XWindowPeer)AWTAccessor.getComponentAccessor().getPeer(focusedWindow); } else { /* * For the case when a potential blocked window is not yet focused diff --git a/src/solaris/classes/sun/awt/X11/XDragSourceContextPeer.java b/src/solaris/classes/sun/awt/X11/XDragSourceContextPeer.java index 5188fe716..da84049fe 100644 --- a/src/solaris/classes/sun/awt/X11/XDragSourceContextPeer.java +++ b/src/solaris/classes/sun/awt/X11/XDragSourceContextPeer.java @@ -39,11 +39,10 @@ import java.util.*; import sun.util.logging.PlatformLogger; -import sun.awt.ComponentAccessor; - import sun.awt.dnd.SunDragSourceContextPeer; import sun.awt.dnd.SunDropTargetContextPeer; import sun.awt.SunToolkit; +import sun.awt.AWTAccessor; /** * The XDragSourceContextPeer class is the class responsible for handling @@ -117,7 +116,7 @@ public final class XDragSourceContextPeer XWindowPeer wpeer = null; for (c = component; c != null && !(c instanceof Window); - c = ComponentAccessor.getParent_NoClientCode(c)); + c = AWTAccessor.getComponentAccessor().getParent(c)); if (c instanceof Window) { wpeer = (XWindowPeer)c.getPeer(); diff --git a/src/solaris/classes/sun/awt/X11/XEmbedChildProxy.java b/src/solaris/classes/sun/awt/X11/XEmbedChildProxy.java index 47b4da501..baf3a14f0 100644 --- a/src/solaris/classes/sun/awt/X11/XEmbedChildProxy.java +++ b/src/solaris/classes/sun/awt/X11/XEmbedChildProxy.java @@ -27,7 +27,7 @@ package sun.awt.X11; import java.awt.Component; import java.awt.Toolkit; -import sun.awt.ComponentAccessor; +import sun.awt.AWTAccessor; public class XEmbedChildProxy extends Component { long handle; @@ -39,8 +39,9 @@ public class XEmbedChildProxy extends Component { public void addNotify() { synchronized(getTreeLock()) { - if (ComponentAccessor.getPeer(this) == null) { - ComponentAccessor.setPeer(this, ((XToolkit)Toolkit.getDefaultToolkit()).createEmbedProxy(this)); + if (AWTAccessor.getComponentAccessor().getPeer(this) == null) { + AWTAccessor.getComponentAccessor(). + setPeer(this,((XToolkit)Toolkit.getDefaultToolkit()).createEmbedProxy(this)); } super.addNotify(); } diff --git a/src/solaris/classes/sun/awt/X11/XGlobalCursorManager.java b/src/solaris/classes/sun/awt/X11/XGlobalCursorManager.java index 43ae1f890..244c0ac6a 100644 --- a/src/solaris/classes/sun/awt/X11/XGlobalCursorManager.java +++ b/src/solaris/classes/sun/awt/X11/XGlobalCursorManager.java @@ -31,7 +31,7 @@ import java.awt.peer.LightweightPeer; import java.lang.ref.WeakReference; import java.lang.reflect.Field; import java.lang.reflect.Method; -import sun.awt.ComponentAccessor; +import sun.awt.AWTAccessor; import sun.awt.GlobalCursorManager; import sun.awt.SunToolkit; @@ -94,11 +94,11 @@ public final class XGlobalCursorManager extends GlobalCursorManager { nc = nativeContainer.get(); } } else { - nc = getNativeContainer(comp); + nc = SunToolkit.getHeavyweightComponent(comp); } if (nc != null) { - ComponentPeer nc_peer = ComponentAccessor.getPeer(nc); + ComponentPeer nc_peer = AWTAccessor.getComponentAccessor().getPeer(nc); if (nc_peer instanceof XComponentPeer) { synchronized (this) { nativeContainer = new WeakReference(nc); @@ -133,13 +133,6 @@ public final class XGlobalCursorManager extends GlobalCursorManager { updateGrabbedCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); } - private Component getNativeContainer(Component comp) { - while (comp != null && ComponentAccessor.getPeer(comp) instanceof LightweightPeer) { - comp = ComponentAccessor.getParent_NoClientCode(comp); - } - return comp; - } - protected void getCursorPos(Point p) { if (!((XToolkit)Toolkit.getDefaultToolkit()).getLastCursorPos(p)) { @@ -186,27 +179,29 @@ public final class XGlobalCursorManager extends GlobalCursorManager { } private Cursor getCapableCursor(Component comp) { + AWTAccessor.ComponentAccessor compAccessor = AWTAccessor.getComponentAccessor(); + Component c = comp; while ((c != null) && !(c instanceof Window) - && ComponentAccessor.isEnabledImpl(c) - && ComponentAccessor.getVisible(c) - && ComponentAccessor.getPeer(c) != null) + && compAccessor.isEnabled(c) + && compAccessor.isVisible(c) + && compAccessor.isDisplayable(c)) { - c = ComponentAccessor.getParent_NoClientCode(c); + c = compAccessor.getParent(c); } if (c instanceof Window) { - return (ComponentAccessor.isEnabledImpl(c) - && ComponentAccessor.getVisible(c) - && (ComponentAccessor.getPeer(c) != null) - && ComponentAccessor.isEnabledImpl(comp)) + return (compAccessor.isEnabled(c) + && compAccessor.isVisible(c) + && compAccessor.isDisplayable(c) + && compAccessor.isEnabled(comp)) ? - ComponentAccessor.getCursor_NoClientCode(comp) + compAccessor.getCursor(comp) : Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR); } else if (c == null) { return null; } - return getCapableCursor(ComponentAccessor.getParent_NoClientCode(c)); + return getCapableCursor(compAccessor.getParent(c)); } /* This methods needs to be called from within XToolkit.awtLock / XToolkit.awtUnlock section. */ diff --git a/src/solaris/classes/sun/awt/X11/XTextAreaPeer.java b/src/solaris/classes/sun/awt/X11/XTextAreaPeer.java index d0b2da84d..51cc74ce6 100644 --- a/src/solaris/classes/sun/awt/X11/XTextAreaPeer.java +++ b/src/solaris/classes/sun/awt/X11/XTextAreaPeer.java @@ -60,7 +60,7 @@ import javax.swing.text.JTextComponent; import javax.swing.plaf.BorderUIResource; import java.awt.im.InputMethodRequests; import sun.awt.CausedFocusEvent; -import sun.awt.ComponentAccessor; +import sun.awt.AWTAccessor; class XTextAreaPeer extends XComponentPeer implements TextAreaPeer { @@ -119,13 +119,14 @@ class XTextAreaPeer extends XComponentPeer implements TextAreaPeer { textPane.setVisible(true); textPane.validate(); - foreground = ComponentAccessor.getForeground(target); + AWTAccessor.ComponentAccessor compAccessor = AWTAccessor.getComponentAccessor(); + foreground = compAccessor.getForeground(target); if (foreground == null) { foreground = SystemColor.textText; } setForeground(foreground); - background = ComponentAccessor.getBackground(target); + background = compAccessor.getBackground(target); if (background == null) { if (target.isEditable()) background = SystemColor.text; else background = SystemColor.control; @@ -134,8 +135,8 @@ class XTextAreaPeer extends XComponentPeer implements TextAreaPeer { if (!target.isBackgroundSet()) { // This is a way to set the background color of the TextArea - // without calling setBackground - go through reflection - ComponentAccessor.setBackground(target, background); + // without calling setBackground - go through accessor + compAccessor.setBackground(target, background); } if (!target.isForegroundSet()) { target.setForeground(SystemColor.textText); @@ -311,13 +312,13 @@ class XTextAreaPeer extends XComponentPeer implements TextAreaPeer { } void handleJavaKeyEvent(KeyEvent e) { - ComponentAccessor.processEvent(jtext,e); + AWTAccessor.getComponentAccessor().processEvent(jtext,e); } public boolean handlesWheelScrolling() { return true; } void handleJavaMouseWheelEvent(MouseWheelEvent e) { - ComponentAccessor.processEvent(textPane,e); + AWTAccessor.getComponentAccessor().processEvent(textPane,e); } public void handleJavaMouseEvent( MouseEvent e ) { @@ -1111,7 +1112,7 @@ class XTextAreaPeer extends XComponentPeer implements TextAreaPeer { this.xwin = xwin; setDoubleBuffered(true); jt.addFocusListener(this); - ComponentAccessor.setParent(this,parent); + AWTAccessor.getComponentAccessor().setParent(this,parent); setViewportBorder(new BevelBorder(false,SystemColor.controlDkShadow,SystemColor.controlLtHighlight) ); this.jtext = jt; setFocusable(false); @@ -1308,7 +1309,7 @@ class XTextAreaPeer extends XComponentPeer implements TextAreaPeer { c = current.getButton(); p = toLocalSpace( c, p ); } - ComponentAccessor.processEvent( c, newMouseEvent( c, p, event ) ); + AWTAccessor.getComponentAccessor().processEvent( c, newMouseEvent( c, p, event ) ); break; } } diff --git a/src/solaris/classes/sun/awt/X11/XTextFieldPeer.java b/src/solaris/classes/sun/awt/X11/XTextFieldPeer.java index 981478fd7..f8726e418 100644 --- a/src/solaris/classes/sun/awt/X11/XTextFieldPeer.java +++ b/src/solaris/classes/sun/awt/X11/XTextFieldPeer.java @@ -55,7 +55,7 @@ import java.awt.im.InputMethodRequests; import sun.util.logging.PlatformLogger; import sun.awt.CausedFocusEvent; -import sun.awt.ComponentAccessor; +import sun.awt.AWTAccessor; public class XTextFieldPeer extends XComponentPeer implements TextFieldPeer { private static final PlatformLogger log = PlatformLogger.getLogger("sun.awt.X11.XTextField"); @@ -115,13 +115,14 @@ public class XTextFieldPeer extends XComponentPeer implements TextFieldPeer { setBounds(x, y, width, height, SET_BOUNDS); - foreground = ComponentAccessor.getForeground(target); + AWTAccessor.ComponentAccessor compAccessor = AWTAccessor.getComponentAccessor(); + foreground = compAccessor.getForeground(target); if (foreground == null) foreground = SystemColor.textText; setForeground(foreground); - background = ComponentAccessor.getBackground(target); + background = compAccessor.getBackground(target); if (background == null) { if (((TextField)target).isEditable()) background = SystemColor.text; else background = SystemColor.control; @@ -130,8 +131,8 @@ public class XTextFieldPeer extends XComponentPeer implements TextFieldPeer { if (!target.isBackgroundSet()) { // This is a way to set the background color of the TextArea - // without calling setBackground - go through reflection - ComponentAccessor.setBackground(target, background); + // without calling setBackground - go through accessor + compAccessor.setBackground(target, background); } if (!target.isForegroundSet()) { target.setForeground(SystemColor.textText); @@ -392,7 +393,7 @@ public class XTextFieldPeer extends XComponentPeer implements TextFieldPeer { } void handleJavaKeyEvent(KeyEvent e) { - ComponentAccessor.processEvent(xtext,e); + AWTAccessor.getComponentAccessor().processEvent(xtext,e); } @@ -620,7 +621,7 @@ public class XTextFieldPeer extends XComponentPeer implements TextFieldPeer { this.peer = peer; setDoubleBuffered(true); setFocusable(false); - ComponentAccessor.setParent(this,parent); + AWTAccessor.getComponentAccessor().setParent(this,parent); setBackground(peer.getPeerBackground()); setForeground(peer.getPeerForeground()); setFont(peer.getPeerFont()); diff --git a/src/solaris/classes/sun/awt/X11/XToolkit.java b/src/solaris/classes/sun/awt/X11/XToolkit.java index f1ec80042..7ad6980e5 100644 --- a/src/solaris/classes/sun/awt/X11/XToolkit.java +++ b/src/solaris/classes/sun/awt/X11/XToolkit.java @@ -626,7 +626,7 @@ public final class XToolkit extends UNIXToolkit implements Runnable { Component owner = XKeyboardFocusManagerPeer.getCurrentNativeFocusOwner(); if (owner != null) { - XWindow ownerWindow = (XWindow) ComponentAccessor.getPeer(owner); + XWindow ownerWindow = (XWindow) AWTAccessor.getComponentAccessor().getPeer(owner); if (ownerWindow != null) { w = ownerWindow.getContentWindow(); } diff --git a/src/solaris/classes/sun/awt/X11/XTrayIconPeer.java b/src/solaris/classes/sun/awt/X11/XTrayIconPeer.java index 64ab4c268..f4b29f7d5 100644 --- a/src/solaris/classes/sun/awt/X11/XTrayIconPeer.java +++ b/src/solaris/classes/sun/awt/X11/XTrayIconPeer.java @@ -295,7 +295,7 @@ public class XTrayIconPeer implements TrayIconPeer, } public static void suppressWarningString(Window w) { - WindowAccessor.setTrayIconWindow(w, true); + AWTAccessor.getWindowAccessor().setTrayIconWindow(w, true); } public void setToolTip(String tooltip) { diff --git a/src/solaris/classes/sun/awt/X11/XWindow.java b/src/solaris/classes/sun/awt/X11/XWindow.java index 58d1fe8bd..e482d69aa 100644 --- a/src/solaris/classes/sun/awt/X11/XWindow.java +++ b/src/solaris/classes/sun/awt/X11/XWindow.java @@ -325,9 +325,9 @@ public class XWindow extends XBaseWindow implements X11ComponentPeer { if (!(target instanceof Container) || win == null || win.getTarget() == null) { return false; } - Container parent = ComponentAccessor.getParent_NoClientCode(win.target); + Container parent = AWTAccessor.getComponentAccessor().getParent(win.target); while (parent != null && parent != target) { - parent = ComponentAccessor.getParent_NoClientCode(parent); + parent = AWTAccessor.getComponentAccessor().getParent(parent); } return (parent == target); } @@ -560,10 +560,11 @@ public class XWindow extends XBaseWindow implements X11ComponentPeer { int h = xe.get_height(); Component target = (Component)getEventSource(); + AWTAccessor.ComponentAccessor compAccessor = AWTAccessor.getComponentAccessor(); - if (!ComponentAccessor.getIgnoreRepaint(target) - && ComponentAccessor.getWidth(target) != 0 - && ComponentAccessor.getHeight(target) != 0) + if (!compAccessor.getIgnoreRepaint(target) + && compAccessor.getWidth(target) != 0 + && compAccessor.getHeight(target) != 0) { handleExposeEvent(target, x, y, w, h); } @@ -950,7 +951,7 @@ public class XWindow extends XBaseWindow implements X11ComponentPeer { XAwtState.setComponentMouseEntered(null); } } else { - ((XComponentPeer) ComponentAccessor.getPeer(target)) + ((XComponentPeer) AWTAccessor.getComponentAccessor().getPeer(target)) .pSetCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); } } @@ -1387,7 +1388,7 @@ public class XWindow extends XBaseWindow implements X11ComponentPeer { Component comp = target; while (comp != null && !(comp instanceof Window)) { - comp = ComponentAccessor.getParent_NoClientCode(comp); + comp = AWTAccessor.getComponentAccessor().getParent(comp); } // applets, embedded, etc - translate directly diff --git a/src/solaris/classes/sun/awt/X11/XWindowPeer.java b/src/solaris/classes/sun/awt/X11/XWindowPeer.java index b7957dd8f..30d93365b 100644 --- a/src/solaris/classes/sun/awt/X11/XWindowPeer.java +++ b/src/solaris/classes/sun/awt/X11/XWindowPeer.java @@ -51,8 +51,6 @@ import java.util.concurrent.atomic.AtomicBoolean; import sun.util.logging.PlatformLogger; import sun.awt.AWTAccessor; -import sun.awt.ComponentAccessor; -import sun.awt.WindowAccessor; import sun.awt.DisplayChangedListener; import sun.awt.SunToolkit; import sun.awt.X11GraphicsDevice; @@ -254,7 +252,7 @@ class XWindowPeer extends XPanelPeer implements WindowPeer, if (((Window)target).getWarningString() != null) { // accessSystemTray permission allows to display TrayIcon, TrayIcon tooltip // and TrayIcon balloon windows without a warning window. - if (!WindowAccessor.isTrayIconWindow((Window)target)) { + if (!AWTAccessor.getWindowAccessor().isTrayIconWindow((Window)target)) { warningWindow = new XWarningWindow((Window)target, getWindow(), this); } } @@ -546,7 +544,7 @@ class XWindowPeer extends XPanelPeer implements WindowPeer, boolean isAutoRequestFocus() { if (XToolkit.isToolkitThread()) { - return WindowAccessor.isAutoRequestFocus((Window)target); + return AWTAccessor.getWindowAccessor().isAutoRequestFocus((Window)target); } else { return ((Window)target).isAutoRequestFocus(); } @@ -1086,10 +1084,11 @@ class XWindowPeer extends XPanelPeer implements WindowPeer, if (warningWindow != null) { // We can't use the coordinates stored in the XBaseWindow since // they are zeros for decorated frames. - int x = ComponentAccessor.getX(target); - int y = ComponentAccessor.getY(target); - int width = ComponentAccessor.getWidth(target); - int height = ComponentAccessor.getHeight(target); + AWTAccessor.ComponentAccessor compAccessor = AWTAccessor.getComponentAccessor(); + int x = compAccessor.getX(target); + int y = compAccessor.getY(target); + int width = compAccessor.getWidth(target); + int height = compAccessor.getHeight(target); warningWindow.reposition(x, y, width, height); } } @@ -1172,7 +1171,7 @@ class XWindowPeer extends XPanelPeer implements WindowPeer, if (isSimpleWindow()) { if (target == XKeyboardFocusManagerPeer.getCurrentNativeFocusedWindow()) { Window owner = getDecoratedOwner((Window)target); - ((XWindowPeer)ComponentAccessor.getPeer(owner)).requestWindowFocus(); + ((XWindowPeer)AWTAccessor.getComponentAccessor().getPeer(owner)).requestWindowFocus(); } } } @@ -1399,7 +1398,7 @@ class XWindowPeer extends XPanelPeer implements WindowPeer, XToolkit.awtLock(); try { if (isReparented() && delayedModalBlocking) { - addToTransientFors((XDialogPeer) ComponentAccessor.getPeer(modalBlocker)); + addToTransientFors((XDialogPeer) AWTAccessor.getComponentAccessor().getPeer(modalBlocker)); delayedModalBlocking = false; } } finally { @@ -1483,7 +1482,7 @@ class XWindowPeer extends XPanelPeer implements WindowPeer, try { // State lock should always be after awtLock synchronized(getStateLock()) { - XDialogPeer blockerPeer = (XDialogPeer) ComponentAccessor.getPeer(d); + XDialogPeer blockerPeer = (XDialogPeer) AWTAccessor.getComponentAccessor().getPeer(d); if (blocked) { log.fine("{0} is blocked by {1}", this, blockerPeer); modalBlocker = d; @@ -1763,7 +1762,7 @@ class XWindowPeer extends XPanelPeer implements WindowPeer, // current chain iterator in the order from next to prev XWindowPeer chainToSplit = prevTransientFor; while (chainToSplit != null) { - XWindowPeer blocker = (XWindowPeer) ComponentAccessor.getPeer(chainToSplit.modalBlocker); + XWindowPeer blocker = (XWindowPeer) AWTAccessor.getComponentAccessor().getPeer(chainToSplit.modalBlocker); if (thisChainBlockers.contains(blocker)) { // add to this dialog's chain setToplevelTransientFor(thisChain, chainToSplit, true, false); @@ -1791,7 +1790,7 @@ class XWindowPeer extends XPanelPeer implements WindowPeer, static Window getDecoratedOwner(Window window) { while ((null != window) && !(window instanceof Frame || window instanceof Dialog)) { - window = (Window) ComponentAccessor.getParent_NoClientCode(window); + window = (Window) AWTAccessor.getComponentAccessor().getParent(window); } return window; } @@ -1824,7 +1823,7 @@ class XWindowPeer extends XPanelPeer implements WindowPeer, } focusLog.fine("Parent window is not active"); - XDecoratedPeer wpeer = (XDecoratedPeer)ComponentAccessor.getPeer(ownerWindow); + XDecoratedPeer wpeer = (XDecoratedPeer)AWTAccessor.getComponentAccessor().getPeer(ownerWindow); if (wpeer != null && wpeer.requestWindowFocus(this, time, timeProvided)) { focusLog.fine("Parent window accepted focus request - generating focus for this window"); return true; @@ -2154,9 +2153,9 @@ class XWindowPeer extends XPanelPeer implements WindowPeer, if (toplevel != null) { Window w = (Window)toplevel.target; while (w != null && toplevel != this && !(toplevel instanceof XDialogPeer)) { - w = (Window) ComponentAccessor.getParent_NoClientCode(w); + w = (Window) AWTAccessor.getComponentAccessor().getParent(w); if (w != null) { - toplevel = (XWindowPeer) ComponentAccessor.getPeer(w); + toplevel = (XWindowPeer) AWTAccessor.getComponentAccessor().getPeer(w); } } if (w == null || (w != this.target && w instanceof Dialog)) { diff --git a/src/windows/classes/sun/awt/windows/WCanvasPeer.java b/src/windows/classes/sun/awt/windows/WCanvasPeer.java index fc5fc1076..6682ffa85 100644 --- a/src/windows/classes/sun/awt/windows/WCanvasPeer.java +++ b/src/windows/classes/sun/awt/windows/WCanvasPeer.java @@ -28,8 +28,6 @@ import java.awt.*; import java.awt.peer.*; import java.lang.ref.WeakReference; import java.lang.reflect.Method; -import sun.awt.AWTAccessor; -import sun.awt.ComponentAccessor; import sun.awt.SunToolkit; import sun.awt.Win32GraphicsDevice; import sun.awt.PaintEventDispatcher; diff --git a/src/windows/classes/sun/awt/windows/WComponentPeer.java b/src/windows/classes/sun/awt/windows/WComponentPeer.java index e5c51d7b7..f508d5d9a 100644 --- a/src/windows/classes/sun/awt/windows/WComponentPeer.java +++ b/src/windows/classes/sun/awt/windows/WComponentPeer.java @@ -57,7 +57,7 @@ import sun.awt.event.IgnorePaintEvent; import java.awt.dnd.DropTarget; import java.awt.dnd.peer.DropTargetPeer; -import sun.awt.ComponentAccessor; +import sun.awt.AWTAccessor; import sun.util.logging.PlatformLogger; @@ -817,7 +817,7 @@ public abstract class WComponentPeer extends WObjectPeer } private void postPaintIfNecessary(int x, int y, int w, int h) { - if ( !ComponentAccessor.getIgnoreRepaint( (Component) target) ) { + if ( !AWTAccessor.getComponentAccessor().getIgnoreRepaint( (Component) target) ) { PaintEvent event = PaintEventDispatcher.getPaintEventDispatcher(). createPaintEvent((Component)target, x, y, w, h); if (event != null) { diff --git a/src/windows/classes/sun/awt/windows/WDialogPeer.java b/src/windows/classes/sun/awt/windows/WDialogPeer.java index 703edd0fd..918cd035e 100644 --- a/src/windows/classes/sun/awt/windows/WDialogPeer.java +++ b/src/windows/classes/sun/awt/windows/WDialogPeer.java @@ -98,7 +98,7 @@ class WDialogPeer extends WWindowPeer implements DialogPeer { public void blockWindows(java.util.List toBlock) { for (Window w : toBlock) { - WWindowPeer wp = (WWindowPeer)ComponentAccessor.getPeer(w); + WWindowPeer wp = (WWindowPeer)AWTAccessor.getComponentAccessor().getPeer(w); if (wp != null) { wp.setModalBlocked((Dialog)target, true); } diff --git a/src/windows/classes/sun/awt/windows/WFileDialogPeer.java b/src/windows/classes/sun/awt/windows/WFileDialogPeer.java index 9575b2475..bc4e8470f 100644 --- a/src/windows/classes/sun/awt/windows/WFileDialogPeer.java +++ b/src/windows/classes/sun/awt/windows/WFileDialogPeer.java @@ -35,7 +35,7 @@ import java.util.ResourceBundle; import java.util.MissingResourceException; import java.util.Vector; import sun.awt.AppContext; -import sun.awt.ComponentAccessor; +import sun.awt.AWTAccessor; public class WFileDialogPeer extends WWindowPeer implements FileDialogPeer { @@ -187,7 +187,7 @@ public class WFileDialogPeer extends WWindowPeer implements FileDialogPeer { public void blockWindows(java.util.List toBlock) { for (Window w : toBlock) { - WWindowPeer wp = (WWindowPeer)ComponentAccessor.getPeer(w); + WWindowPeer wp = (WWindowPeer)AWTAccessor.getComponentAccessor().getPeer(w); if (wp != null) { blockWindow(wp); } diff --git a/src/windows/classes/sun/awt/windows/WPrintDialogPeer.java b/src/windows/classes/sun/awt/windows/WPrintDialogPeer.java index d4ec57302..f507ce195 100644 --- a/src/windows/classes/sun/awt/windows/WPrintDialogPeer.java +++ b/src/windows/classes/sun/awt/windows/WPrintDialogPeer.java @@ -31,7 +31,7 @@ import java.awt.peer.ComponentPeer; import java.awt.dnd.DropTarget; import java.util.Vector; import sun.awt.AppContext; -import sun.awt.ComponentAccessor; +import sun.awt.AWTAccessor; public class WPrintDialogPeer extends WWindowPeer implements DialogPeer { @@ -103,7 +103,7 @@ public class WPrintDialogPeer extends WWindowPeer implements DialogPeer { public void blockWindows(java.util.List toBlock) { for (Window w : toBlock) { - WWindowPeer wp = (WWindowPeer)ComponentAccessor.getPeer(w); + WWindowPeer wp = (WWindowPeer)AWTAccessor.getComponentAccessor().getPeer(w); if (wp != null) { blockWindow(wp); } -- cgit v1.2.3