678 lines · 20.0 KB · Java
RawDownload
/* * Copyright (c) 2008, 2011, Oracle and/or its affiliates. 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.  Oracle designates this * particular file as subject to the "Classpath" exception as provided * by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. */ package sun.awt; import java.awt.*;import java.awt.event.InputEvent;import java.awt.geom.Point2D;import java.awt.image.BufferedImage; import sun.misc.Unsafe;import java.awt.peer.ComponentPeer; import java.security.AccessController;import java.security.AccessControlContext; /** * The AWTAccessor utility class. * The main purpose of this class is to enable accessing * private and package-private fields of classes from * different classes/packages. See sun.misc.SharedSecretes * for another example. */public final class AWTAccessor {     private static final Unsafe unsafe = Unsafe.getUnsafe();     /*     * We don't need any objects of this class.     * It's rather a collection of static methods     * and interfaces.     */    private AWTAccessor() {    }     /*     * An interface of accessor for the java.awt.Component class.     */    public interface ComponentAccessor {        /*         * Sets whether the native background erase for a component         * has been disabled via SunToolkit.disableBackgroundErase().         */        void setBackgroundEraseDisabled(Component comp, boolean disabled);        /*         * Indicates whether the native background erase for a         * component has been disabled via         * SunToolkit.disableBackgroundErase().         */        boolean getBackgroundEraseDisabled(Component comp);        /*         *         * Gets the bounds of this component in the form of a         * <code>Rectangle</code> object. The bounds specify this         * component's width, height, and location relative to         * its parent.         */        Rectangle getBounds(Component comp);        /*         * Sets the shape of a lw component to cut out from hw components.         *         * See 6797587, 6776743, 6768307, and 6768332 for details         */        void setMixingCutoutShape(Component comp, Shape shape);         /**         * Sets GraphicsConfiguration value for the component.         */        void setGraphicsConfiguration(Component comp, GraphicsConfiguration gc);        /*         * Requests focus to the component.         */        boolean requestFocus(Component comp, CausedFocusEvent.Cause cause);        /*         * Determines if the component can gain focus.         */        boolean canBeFocusOwner(Component comp);         /**         * Returns whether the component is visible without invoking         * any client code.         */        boolean isVisible(Component comp);         /**         * Sets the RequestFocusController.         */        void setRequestFocusController(RequestFocusController requestController);         /**         * Returns the appContext of the component.         */        AppContext getAppContext(Component comp);         /**         * 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);          /*         * Returns the acc this component was constructed with.         */        AccessControlContext getAccessControlContext(Component comp);     }     /*     * An interface of accessor for the java.awt.Container class.     */    public interface ContainerAccessor {        /**         * Validates the container unconditionally.         */        void validateUnconditionally(Container cont);    }     /*     * An interface of accessor for java.awt.Window class.     */    public interface WindowAccessor {        /*         * Get opacity level of the given window.         */        float getOpacity(Window window);        /*         * Set opacity level to the given window.         */        void setOpacity(Window window, float opacity);        /*         * Get a shape assigned to the given window.         */        Shape getShape(Window window);        /*         * Set a shape to the given window.         */        void setShape(Window window, Shape shape);        /*         * Set the opaque preoperty to the given window.         */        void setOpaque(Window window, boolean isOpaque);        /*         * Update the image of a non-opaque (translucent) window.         */        void updateWindow(Window window);         /** Get the size of the security warning.         */        Dimension getSecurityWarningSize(Window w);         /**         * Set the size of the security warning.         */        void setSecurityWarningSize(Window w, int width, int height);         /** Set the position of the security warning.         */        void setSecurityWarningPosition(Window w, Point2D point,                float alignmentX, float alignmentY);         /** Request to recalculate the new position of the security warning for         * the given window size/location as reported by the native system.         */        Point2D calculateSecurityWarningPosition(Window window,                double x, double y, double w, double h);         /** Sets the synchronous status of focus requests on lightweight         * 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);    }     /*     * An accessor for the AWTEvent class.     */    public interface AWTEventAccessor {        /**         * Marks the event as posted.         */        void setPosted(AWTEvent ev);         /**         * Sets the flag on this AWTEvent indicating that it was         * generated by the system.         */        void setSystemGenerated(AWTEvent ev);         /**         * Indicates whether this AWTEvent was generated by the system.         */        boolean isSystemGenerated(AWTEvent ev);          /*         * Returns the acc this event was constructed with.         */        AccessControlContext getAccessControlContext(AWTEvent ev);     }     public interface InputEventAccessor {        /*         * Accessor for InputEvent.getButtonDownMasks()         */        int[] getButtonDownMasks();    }     /*     * An accessor for the java.awt.Frame class.     */    public interface FrameAccessor {        /*         * Sets the state of this frame.         */        void setExtendedState(Frame frame, int state);        /*         * Gets the state of this frame.         */       int getExtendedState(Frame frame);        /*         * Gets the maximized bounds of this frame.         */       Rectangle getMaximizedBounds(Frame frame);    }     /*     * An interface of accessor for the java.awt.KeyboardFocusManager class.     */    public interface KeyboardFocusManagerAccessor {        /*         * Indicates whether the native implementation should         * proceed with a pending focus request for the heavyweight.         */        int shouldNativelyFocusHeavyweight(Component heavyweight,                                           Component descendant,                                           boolean temporary,                                           boolean focusedWindowChangeAllowed,                                           long time,                                           CausedFocusEvent.Cause cause);        /*         * Delivers focus for the lightweight descendant of the heavyweight         * synchronously.         */        boolean processSynchronousLightweightTransfer(Component heavyweight,                                                      Component descendant,                                                      boolean temporary,                                                      boolean focusedWindowChangeAllowed,                                                      long time);        /*         * Removes the last focus request for the heavyweight from the queue.         */        void removeLastFocusRequest(Component heavyweight);         /*         * Sets the most recent focus owner in the window.         */        void setMostRecentFocusOwner(Window window, Component component);    }     /*     * An accessor for the MenuComponent class.     */    public interface MenuComponentAccessor {        /**         * Returns the appContext of the menu component.         */        AppContext getAppContext(MenuComponent menuComp);         /**         * Sets the appContext of the menu component.         */        void setAppContext(MenuComponent menuComp, AppContext appContext);         /**         * Returns the menu container of the menu component         */        MenuContainer getParent(MenuComponent menuComp);    }     /*     * An accessor for the EventQueue class     */    public interface EventQueueAccessor {        /*         * Gets the event dispatch thread.         */        Thread getDispatchThread(EventQueue eventQueue);        /*         * Checks if the current thread is EDT for the given EQ.         */        public boolean isDispatchThreadImpl(EventQueue eventQueue);    }     /*     * An accessor for the PopupMenu class     */    public interface PopupMenuAccessor {        /*         * Returns whether the popup menu is attached to a tray         */        boolean isTrayIconPopup(PopupMenu popupMenu);    }     /*     * An accessor for the FileDialog class     */    public interface FileDialogAccessor {        /*         * Sets the files the user selects         */        void setFiles(FileDialog fileDialog, String directory, String files[]);         /*         * Sets the file the user selects         */        void setFile(FileDialog fileDialog, String file);         /*         * Sets the directory the user selects         */        void setDirectory(FileDialog fileDialog, String directory);         /*         * Returns whether the file dialog allows the multiple file selection.         */        boolean isMultipleMode(FileDialog fileDialog);    }     /*     * Accessor instances are initialized in the static initializers of     * corresponding AWT classes by using setters defined below.     */    private static ComponentAccessor componentAccessor;    private static ContainerAccessor containerAccessor;    private static WindowAccessor windowAccessor;    private static AWTEventAccessor awtEventAccessor;    private static InputEventAccessor inputEventAccessor;    private static FrameAccessor frameAccessor;    private static KeyboardFocusManagerAccessor kfmAccessor;    private static MenuComponentAccessor menuComponentAccessor;    private static EventQueueAccessor eventQueueAccessor;    private static PopupMenuAccessor popupMenuAccessor;    private static FileDialogAccessor fileDialogAccessor;     /*     * Set an accessor object for the java.awt.Component class.     */    public static void setComponentAccessor(ComponentAccessor ca) {        componentAccessor = ca;    }     /*     * Retrieve the accessor object for the java.awt.Component class.     */    public static ComponentAccessor getComponentAccessor() {        if (componentAccessor == null) {

Lines 1–500 of 678.