src/java.desktop/unix/classes/sun/awt/X11/XToolkit.java

Print this page

        

*** 1,7 **** /* ! * Copyright (c) 2002, 2014, 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 --- 1,7 ---- /* ! * Copyright (c) 2002, 2015, 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
*** 173,182 **** --- 173,183 ---- initUIDefaults(); } return uidefaults; } + @Override public void loadSystemColors(int[] systemColors) { nativeLoadSystemColors(systemColors); MotifColorUtilities.loadSystemColors(systemColors); }
*** 265,274 **** --- 266,276 ---- } finally { awtUnlock(); } PrivilegedAction<Void> a = () -> { Thread shutdownThread = new Thread(ThreadGroupUtils.getRootThreadGroup(), "XToolkt-Shutdown-Thread") { + @Override public void run() { XSystemTrayPeer peer = XSystemTrayPeer.getPeerInstance(); if (peer != null) { peer.dispose(); }
*** 334,355 **** --- 336,360 ---- }); toolkitThread.start(); } } + @Override public ButtonPeer createButton(Button target) { ButtonPeer peer = new XButtonPeer(target); targetCreatedPeer(target, peer); return peer; } + @Override public FramePeer createLightweightFrame(LightweightFrame target) { FramePeer peer = new XLightweightFramePeer(target); targetCreatedPeer(target, peer); return peer; } + @Override public FramePeer createFrame(Frame target) { FramePeer peer = new XFramePeer(target); targetCreatedPeer(target, peer); return peer; }
*** 527,536 **** --- 532,542 ---- } } static native void awt_toolkit_init(); + @Override public void run() { awt_toolkit_init(); run(PRIMARY_LOOP); }
*** 667,680 **** --- 673,688 ---- static int getDefaultScreenHeight() { initScreenSize(); return screenHeight; } + @Override protected int getScreenWidth() { return getDefaultScreenWidth(); } + @Override protected int getScreenHeight() { return getDefaultScreenHeight(); } private static Rectangle getWorkArea(long root)
*** 711,720 **** --- 719,729 ---- * window. * Otherwise, i. e. if Xinerama is on or _NET_WM_WORKAREA is * not set, we try to calculate the insets ourselves using * getScreenInsetsManually method. */ + @Override public Insets getScreenInsets(GraphicsConfiguration gc) { XNETProtocol netProto = XWM.getWM().getNETProtocol(); if ((netProto == null) || !netProto.active()) {
*** 898,907 **** --- 907,917 ---- // Need this for XMenuItemPeer. protected static void targetDisposedPeer(Object target, Object peer) { SunToolkit.targetDisposedPeer(target, peer); } + @Override public RobotPeer createRobot(Robot target, GraphicsDevice screen) { return new XRobotPeer(screen.getDefaultConfiguration()); }
*** 909,922 **** --- 919,934 ---- * On X, support for dynamic layout on resizing is governed by the * window manager. If the window manager supports it, it happens * automatically. The setter method for this property is * irrelevant on X. */ + @Override public void setDynamicLayout(boolean b) { dynamicLayoutSetting = b; } + @Override protected boolean isDynamicLayoutSet() { return dynamicLayoutSetting; } /* Called from isDynamicLayoutActive() and from
*** 924,951 **** */ protected boolean isDynamicLayoutSupported() { return XWM.getWM().supportsDynamicLayout(); } public boolean isDynamicLayoutActive() { return isDynamicLayoutSupported(); } ! public FontPeer getFontPeer(String name, int style){ return new XFontPeer(name, style); } public DragSourceContextPeer createDragSourceContextPeer(DragGestureEvent dge) throws InvalidDnDOperationException { final LightweightFrame f = SunToolkit.getLightweightFrame(dge.getComponent()); if (f != null) { return f.createDragSourceContextPeer(dge); } return XDragSourceContextPeer.createDragSourceContextPeer(dge); } @SuppressWarnings("unchecked") public <T extends DragGestureRecognizer> T createDragGestureRecognizer(Class<T> recognizerClass, DragSource ds, Component c, --- 936,967 ---- */ protected boolean isDynamicLayoutSupported() { return XWM.getWM().supportsDynamicLayout(); } + @Override public boolean isDynamicLayoutActive() { return isDynamicLayoutSupported(); } ! @Override ! @SuppressWarnings("deprecation") public FontPeer getFontPeer(String name, int style){ return new XFontPeer(name, style); } + @Override public DragSourceContextPeer createDragSourceContextPeer(DragGestureEvent dge) throws InvalidDnDOperationException { final LightweightFrame f = SunToolkit.getLightweightFrame(dge.getComponent()); if (f != null) { return f.createDragSourceContextPeer(dge); } return XDragSourceContextPeer.createDragSourceContextPeer(dge); } + @Override @SuppressWarnings("unchecked") public <T extends DragGestureRecognizer> T createDragGestureRecognizer(Class<T> recognizerClass, DragSource ds, Component c,
*** 961,1052 **** --- 977,1082 ---- return (T)new XMouseDragGestureRecognizer(ds, c, srcActions, dgl); else return null; } + @Override public CheckboxMenuItemPeer createCheckboxMenuItem(CheckboxMenuItem target) { XCheckboxMenuItemPeer peer = new XCheckboxMenuItemPeer(target); //vb157120: looks like we don't need to map menu items //in new menus implementation //targetCreatedPeer(target, peer); return peer; } + @Override public MenuItemPeer createMenuItem(MenuItem target) { XMenuItemPeer peer = new XMenuItemPeer(target); //vb157120: looks like we don't need to map menu items //in new menus implementation //targetCreatedPeer(target, peer); return peer; } + @Override public TextFieldPeer createTextField(TextField target) { TextFieldPeer peer = new XTextFieldPeer(target); targetCreatedPeer(target, peer); return peer; } + @Override public LabelPeer createLabel(Label target) { LabelPeer peer = new XLabelPeer(target); targetCreatedPeer(target, peer); return peer; } + @Override public ListPeer createList(java.awt.List target) { ListPeer peer = new XListPeer(target); targetCreatedPeer(target, peer); return peer; } + @Override public CheckboxPeer createCheckbox(Checkbox target) { CheckboxPeer peer = new XCheckboxPeer(target); targetCreatedPeer(target, peer); return peer; } + @Override public ScrollbarPeer createScrollbar(Scrollbar target) { XScrollbarPeer peer = new XScrollbarPeer(target); targetCreatedPeer(target, peer); return peer; } + @Override public ScrollPanePeer createScrollPane(ScrollPane target) { XScrollPanePeer peer = new XScrollPanePeer(target); targetCreatedPeer(target, peer); return peer; } + @Override public TextAreaPeer createTextArea(TextArea target) { TextAreaPeer peer = new XTextAreaPeer(target); targetCreatedPeer(target, peer); return peer; } + @Override public ChoicePeer createChoice(Choice target) { XChoicePeer peer = new XChoicePeer(target); targetCreatedPeer(target, peer); return peer; } + @Override public CanvasPeer createCanvas(Canvas target) { XCanvasPeer peer = (isXEmbedServerRequested() ? new XEmbedCanvasPeer(target) : new XCanvasPeer(target)); targetCreatedPeer(target, peer); return peer; } + @Override public PanelPeer createPanel(Panel target) { PanelPeer peer = new XPanelPeer(target); targetCreatedPeer(target, peer); return peer; } + @Override public WindowPeer createWindow(Window target) { WindowPeer peer = new XWindowPeer(target); targetCreatedPeer(target, peer); return peer; } + @Override public DialogPeer createDialog(Dialog target) { DialogPeer peer = new XDialogPeer(target); targetCreatedPeer(target, peer); return peer; }
*** 1063,1072 **** --- 1093,1103 ---- new GetBooleanAction("sun.awt.disableGtkFileDialogs")); } return sunAwtDisableGtkFileDialogs.booleanValue(); } + @Override public FileDialogPeer createFileDialog(FileDialog target) { FileDialogPeer peer = null; // The current GtkFileChooser is available from GTK+ 2.4 if (!getSunAwtDisableGtkFileDialogs() && checkGtkVersion(2, 4, 0)) { peer = new GtkFileDialogPeer(target);
*** 1075,1104 **** --- 1106,1139 ---- } targetCreatedPeer(target, peer); return peer; } + @Override public MenuBarPeer createMenuBar(MenuBar target) { XMenuBarPeer peer = new XMenuBarPeer(target); targetCreatedPeer(target, peer); return peer; } + @Override public MenuPeer createMenu(Menu target) { XMenuPeer peer = new XMenuPeer(target); //vb157120: looks like we don't need to map menu items //in new menus implementation //targetCreatedPeer(target, peer); return peer; } + @Override public PopupMenuPeer createPopupMenu(PopupMenu target) { XPopupMenuPeer peer = new XPopupMenuPeer(target); targetCreatedPeer(target, peer); return peer; } + @Override public synchronized MouseInfoPeer getMouseInfoPeer() { if (xPeer == null) { xPeer = new XMouseInfoPeer(); } return xPeer;
*** 1115,1149 **** --- 1150,1189 ---- XEmbedChildProxyPeer peer = new XEmbedChildProxyPeer(target); targetCreatedPeer(target, peer); return peer; } + @Override public KeyboardFocusManagerPeer getKeyboardFocusManagerPeer() throws HeadlessException { return XKeyboardFocusManagerPeer.getInstance(); } /** * Returns a new custom cursor. */ + @Override public Cursor createCustomCursor(Image cursor, Point hotSpot, String name) throws IndexOutOfBoundsException { return new XCustomCursor(cursor, hotSpot, name); } + @Override public TrayIconPeer createTrayIcon(TrayIcon target) throws HeadlessException, AWTException { TrayIconPeer peer = new XTrayIconPeer(target); targetCreatedPeer(target, peer); return peer; } + @Override public SystemTrayPeer createSystemTray(SystemTray target) throws HeadlessException { SystemTrayPeer peer = new XSystemTrayPeer(target); return peer; } + @Override public boolean isTraySupported() { XSystemTrayPeer peer = XSystemTrayPeer.getPeerInstance(); if (peer != null) { return peer.isAvailable(); }
*** 1156,1175 **** --- 1196,1218 ---- } /** * Returns the supported cursor size */ + @Override public Dimension getBestCursorSize(int preferredWidth, int preferredHeight) { return XCustomCursor.getBestCursorSize( java.lang.Math.max(1,preferredWidth), java.lang.Math.max(1,preferredHeight)); } + @Override public int getMaximumCursorColors() { return 2; // Black and white. } + @Override public Map<TextAttribute, ?> mapInputMethodHighlight( InputMethodHighlight highlight) { return XInputMethod.mapInputMethodHighlight(highlight); } @Override public boolean getLockingKeyState(int key) {
*** 1183,1192 **** --- 1226,1236 ---- } finally { awtUnlock(); } } + @Override public Clipboard getSystemClipboard() { SecurityManager security = System.getSecurityManager(); if (security != null) { security.checkPermission(AWTPermissions.ACCESS_CLIPBOARD_PERMISSION); }
*** 1196,1205 **** --- 1240,1250 ---- } } return clipboard; } + @Override public Clipboard getSystemSelection() { SecurityManager security = System.getSecurityManager(); if (security != null) { security.checkPermission(AWTPermissions.ACCESS_CLIPBOARD_PERMISSION); }
*** 1209,1228 **** --- 1254,1275 ---- } } return selection; } + @Override public void beep() { awtLock(); try { XlibWrapper.XBell(getDisplay(), 0); XlibWrapper.XFlush(getDisplay()); } finally { awtUnlock(); } } + @Override public PrintJob getPrintJob(final Frame frame, final String doctitle, final Properties props) { if (frame == null) { throw new NullPointerException("frame must not be null");
*** 1234,1243 **** --- 1281,1291 ---- printJob = null; } return printJob; } + @Override public PrintJob getPrintJob(final Frame frame, final String doctitle, final JobAttributes jobAttributes, final PageAttributes pageAttributes) { if (frame == null) {
*** 1261,1270 **** --- 1309,1319 ---- } finally { awtUnlock(); } } + @Override public int getScreenResolution() { long display = getDisplay(); awtLock(); try { return (int) ((XlibWrapper.DisplayWidth(display,
*** 1286,1302 **** --- 1335,1353 ---- screenmodel = config.getColorModel (); } return screenmodel; } + @Override public ColorModel getColorModel() { return getStaticColorModel(); } /** * Returns a new input method adapter descriptor for native input methods. */ + @Override public InputMethodDescriptor getInputMethodAdapterDescriptor() throws AWTException { return new XInputMethodDescriptor(); } /**
*** 1344,1353 **** --- 1395,1405 ---- if (awt_multiclick_time == 0) { awt_multiclick_time = AWT_MULTICLICK_DEFAULT_TIME; } } + @Override public boolean isFrameStateSupported(int state) throws HeadlessException { if (state == Frame.NORMAL || state == Frame.ICONIFIED) { return true;
*** 1386,1395 **** --- 1438,1448 ---- private static boolean timeStampUpdated; private static long timeStamp; private static final XEventDispatcher timeFetcher = new XEventDispatcher() { + @Override public void dispatchEvent(XEvent ev) { switch (ev.get_type()) { case XConstants.PropertyNotify: XPropertyEvent xpe = ev.get_xproperty();
*** 1454,1463 **** --- 1507,1517 ---- } finally { awtUnlock(); } return timeStamp; } + @Override protected void initializeDesktopProperties() { desktopProperties.put("DnD.Autoscroll.initialDelay", Integer.valueOf(50)); desktopProperties.put("DnD.Autoscroll.interval", Integer.valueOf(50));
*** 1512,1521 **** --- 1566,1576 ---- private final static String prefix = "DnD.Cursor."; private final static String postfix = ".32x32"; private static final String dndPrefix = "DnD."; + @Override protected Object lazilyLoadDesktopProperty(String name) { if (name.startsWith(prefix)) { String cursorName = name.substring(prefix.length(), name.length()) + postfix; try {
*** 1534,1543 **** --- 1589,1599 ---- } return super.lazilyLoadDesktopProperty(name); } + @Override public synchronized void addPropertyChangeListener(String name, PropertyChangeListener pcl) { if (name == null) { // See JavaDoc for the Toolkit.addPropertyChangeListener() method return; }
*** 2032,2055 **** --- 2088,2114 ---- } /** * @see sun.awt.SunToolkit#needsXEmbedImpl */ + @Override protected boolean needsXEmbedImpl() { // XToolkit implements supports for XEmbed-client protocol and // requires the supports from the embedding host for it to work. return true; } + @Override public boolean isModalityTypeSupported(Dialog.ModalityType modalityType) { return (modalityType == null) || (modalityType == Dialog.ModalityType.MODELESS) || (modalityType == Dialog.ModalityType.DOCUMENT_MODAL) || (modalityType == Dialog.ModalityType.APPLICATION_MODAL) || (modalityType == Dialog.ModalityType.TOOLKIT_MODAL); } + @Override public boolean isModalExclusionTypeSupported(Dialog.ModalExclusionType exclusionType) { return (exclusionType == null) || (exclusionType == Dialog.ModalExclusionType.NO_EXCLUDE) || (exclusionType == Dialog.ModalExclusionType.APPLICATION_EXCLUDE) || (exclusionType == Dialog.ModalExclusionType.TOOLKIT_EXCLUDE);
*** 2068,2086 **** --- 2127,2147 ---- boolean removeAllEvents) { AWTAccessor.getEventQueueAccessor() .removeSourceEvents(queue, source, removeAllEvents); } + @Override public boolean isAlwaysOnTopSupported() { for (XLayerProtocol proto : XWM.getWM().getProtocols(XLayerProtocol.class)) { if (proto.supportsLayer(XLayerProtocol.LAYER_ALWAYS_ON_TOP)) { return true; } } return false; } + @Override public boolean useBufferPerWindow() { return XToolkit.getBackingStoreType() == XConstants.NotUseful; } /**
*** 2385,2399 **** --- 2446,2462 ---- private static boolean oops_move; /** * @inheritDoc */ + @Override protected boolean syncNativeQueue(final long timeout) { XBaseWindow win = XBaseWindow.getXAWTRootWindow(); if (oops_waiter == null) { oops_waiter = new XEventDispatcher() { + @Override public void dispatchEvent(XEvent e) { if (e.get_type() == XConstants.ConfigureNotify) { // OOPS ConfigureNotify event catched oops_updated = true; awtLockNotifyAll();
*** 2436,2452 **** --- 2499,2517 ---- removeEventDispatcher(win.getWindow(), oops_waiter); eventLog.finer("Exiting syncNativeQueue"); awtUnlock(); } } + @Override public void grab(Window w) { final Object peer = AWTAccessor.getComponentAccessor().getPeer(w); if (peer != null) { ((XWindowPeer) peer).setGrab(true); } } + @Override public void ungrab(Window w) { final Object peer = AWTAccessor.getComponentAccessor().getPeer(w); if (peer != null) { ((XWindowPeer) peer).setGrab(false); }
*** 2456,2473 **** --- 2521,2541 ---- * desktop. * <p> * The methods of java.awt.Desktop class are supported on the Gnome desktop. * Check if the running desktop is Gnome by checking the window manager. */ + @Override public boolean isDesktopSupported(){ return XDesktopPeer.isDesktopSupported(); } + @Override public DesktopPeer createDesktopPeer(Desktop target){ return new XDesktopPeer(); } + @Override public boolean areExtraMouseButtonsEnabled() throws HeadlessException { return areExtraMouseButtonsEnabled; } @Override