< prev index next >

src/windows/classes/sun/awt/windows/WToolkit.java

Print this page




  13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14  * version 2 for more details (a copy is included in the LICENSE file that
  15  * accompanied this code).
  16  *
  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any
  23  * questions.
  24  */
  25 
  26 package sun.awt.windows;
  27 
  28 import java.awt.*;
  29 import java.awt.im.InputMethodHighlight;
  30 import java.awt.im.spi.InputMethodDescriptor;
  31 import java.awt.image.*;
  32 import java.awt.peer.*;

  33 import java.awt.event.KeyEvent;

  34 import java.awt.datatransfer.Clipboard;

  35 import java.awt.TrayIcon;
  36 import java.beans.PropertyChangeListener;
  37 import java.security.AccessController;
  38 import java.security.PrivilegedAction;


  39 import sun.awt.AppContext;

  40 import sun.awt.AWTAutoShutdown;
  41 import sun.awt.LightweightFrame;
  42 import sun.awt.SunToolkit;
  43 import sun.misc.ThreadGroupUtils;
  44 import sun.awt.Win32GraphicsDevice;
  45 import sun.awt.Win32GraphicsEnvironment;
  46 import sun.awt.datatransfer.DataTransferer;
  47 import sun.java2d.d3d.D3DRenderQueue;
  48 import sun.java2d.opengl.OGLRenderQueue;
  49 
  50 import sun.print.PrintJob2D;
  51 
  52 import java.awt.dnd.DragSource;
  53 import java.awt.dnd.DragGestureListener;
  54 import java.awt.dnd.DragGestureEvent;
  55 import java.awt.dnd.DragGestureRecognizer;
  56 import java.awt.dnd.MouseDragGestureRecognizer;
  57 import java.awt.dnd.InvalidDnDOperationException;
  58 import java.awt.dnd.peer.DragSourceContextPeer;
  59 


1084     public boolean useBufferPerWindow() {
1085         return !Win32GraphicsEnvironment.isDWMCompositionEnabled();
1086     }
1087 
1088     @Override
1089     @SuppressWarnings("deprecation")
1090     public void grab(Window w) {
1091         if (w.getPeer() != null) {
1092             ((WWindowPeer)w.getPeer()).grab();
1093         }
1094     }
1095 
1096     @Override
1097     @SuppressWarnings("deprecation")
1098     public void ungrab(Window w) {
1099         if (w.getPeer() != null) {
1100            ((WWindowPeer)w.getPeer()).ungrab();
1101         }
1102     }
1103 























































1104     @Override
1105     public native boolean syncNativeQueue(final long timeout);
1106     @Override
1107     public boolean isDesktopSupported() {
1108         return true;
1109     }
1110 
1111     @Override
1112     public DesktopPeer createDesktopPeer(Desktop target) {
1113         return new WDesktopPeer();
1114     }
1115 
1116     private static native void setExtraMouseButtonsEnabledNative(boolean enable);
1117 
1118     @Override
1119     public boolean areExtraMouseButtonsEnabled() throws HeadlessException {
1120         return areExtraMouseButtonsEnabled;
1121     }
1122 
1123     private native synchronized int getNumberOfButtonsImpl();




  13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14  * version 2 for more details (a copy is included in the LICENSE file that
  15  * accompanied this code).
  16  *
  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any
  23  * questions.
  24  */
  25 
  26 package sun.awt.windows;
  27 
  28 import java.awt.*;
  29 import java.awt.im.InputMethodHighlight;
  30 import java.awt.im.spi.InputMethodDescriptor;
  31 import java.awt.image.*;
  32 import java.awt.peer.*;
  33 import java.awt.event.FocusEvent;
  34 import java.awt.event.KeyEvent;
  35 import java.awt.event.MouseEvent;
  36 import java.awt.datatransfer.Clipboard;
  37 import java.awt.TextComponent;
  38 import java.awt.TrayIcon;
  39 import java.beans.PropertyChangeListener;
  40 import java.security.AccessController;
  41 import java.security.PrivilegedAction;
  42 import javax.swing.text.JTextComponent;
  43 
  44 import sun.awt.AppContext;
  45 import sun.awt.AWTAccessor;
  46 import sun.awt.AWTAutoShutdown;
  47 import sun.awt.LightweightFrame;
  48 import sun.awt.SunToolkit;
  49 import sun.misc.ThreadGroupUtils;
  50 import sun.awt.Win32GraphicsDevice;
  51 import sun.awt.Win32GraphicsEnvironment;
  52 import sun.awt.datatransfer.DataTransferer;
  53 import sun.java2d.d3d.D3DRenderQueue;
  54 import sun.java2d.opengl.OGLRenderQueue;
  55 
  56 import sun.print.PrintJob2D;
  57 
  58 import java.awt.dnd.DragSource;
  59 import java.awt.dnd.DragGestureListener;
  60 import java.awt.dnd.DragGestureEvent;
  61 import java.awt.dnd.DragGestureRecognizer;
  62 import java.awt.dnd.MouseDragGestureRecognizer;
  63 import java.awt.dnd.InvalidDnDOperationException;
  64 import java.awt.dnd.peer.DragSourceContextPeer;
  65 


1090     public boolean useBufferPerWindow() {
1091         return !Win32GraphicsEnvironment.isDWMCompositionEnabled();
1092     }
1093 
1094     @Override
1095     @SuppressWarnings("deprecation")
1096     public void grab(Window w) {
1097         if (w.getPeer() != null) {
1098             ((WWindowPeer)w.getPeer()).grab();
1099         }
1100     }
1101 
1102     @Override
1103     @SuppressWarnings("deprecation")
1104     public void ungrab(Window w) {
1105         if (w.getPeer() != null) {
1106            ((WWindowPeer)w.getPeer()).ungrab();
1107         }
1108     }
1109 
1110     ///////////////////////////////////////////////////////////////////////////
1111     // The following code is used for support of automatic showing of the touch
1112     // keyboard for text components and is accessed only from EDT.
1113     ///////////////////////////////////////////////////////////////////////////
1114     private volatile Component compOnTouchDownEvent;
1115     private volatile Component compOnMousePressedEvent;
1116 
1117     @Override
1118     public void showOrHideTouchKeyboard(Component comp, AWTEvent e) {
1119         if ((comp == null) || (e == null) ||
1120             (!(comp instanceof TextComponent) &&
1121                 !(comp instanceof JTextComponent))) {
1122             return;
1123         }
1124 
1125         if ((e instanceof MouseEvent) && comp.isEnabled() &&
1126             (((comp instanceof TextComponent) &&
1127                     ((TextComponent)comp).isEditable()) ||
1128                 ((comp instanceof JTextComponent) &&
1129                     ((JTextComponent)comp).isEditable()))) {
1130             MouseEvent me = (MouseEvent)e;
1131             if (me.getID() == MouseEvent.MOUSE_PRESSED) {
1132                 if (AWTAccessor.getMouseEventAccessor()
1133                         .isCausedByTouchEvent(me)) {
1134                     compOnTouchDownEvent = comp;
1135                 } else {
1136                     compOnMousePressedEvent = comp;
1137                 }
1138             } else if (me.getID() == MouseEvent.MOUSE_RELEASED) {
1139                 if (AWTAccessor.getMouseEventAccessor()
1140                         .isCausedByTouchEvent(me)) {
1141                     if (compOnTouchDownEvent == comp) {
1142                         showTouchKeyboard(true);
1143                     }
1144                     compOnTouchDownEvent = null;
1145                 } else {
1146                     if (compOnMousePressedEvent == comp) {
1147                         showTouchKeyboard(false);
1148                     }
1149                     compOnMousePressedEvent = null;
1150                 }
1151             }
1152         } else if (e instanceof FocusEvent) {
1153             if (e.getID() == FocusEvent.FOCUS_LOST) {
1154                 hideTouchKeyboard();
1155             }
1156         }
1157     }
1158 
1159     private native void showTouchKeyboard(boolean causedByTouchEvent);
1160     private native void hideTouchKeyboard();
1161     ///////////////////////////////////////////////////////////////////////////
1162     // End of the touch keyboard related code.
1163     ///////////////////////////////////////////////////////////////////////////
1164 
1165     @Override
1166     public native boolean syncNativeQueue(final long timeout);
1167     @Override
1168     public boolean isDesktopSupported() {
1169         return true;
1170     }
1171 
1172     @Override
1173     public DesktopPeer createDesktopPeer(Desktop target) {
1174         return new WDesktopPeer();
1175     }
1176 
1177     private static native void setExtraMouseButtonsEnabledNative(boolean enable);
1178 
1179     @Override
1180     public boolean areExtraMouseButtonsEnabled() throws HeadlessException {
1181         return areExtraMouseButtonsEnabled;
1182     }
1183 
1184     private native synchronized int getNumberOfButtonsImpl();


< prev index next >