/* * Copyright (c) 2018, 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 jdk.swing.interop; import java.awt.Component; import java.awt.dnd.DragGestureRecognizer; import java.awt.dnd.DragGestureListener; import java.awt.dnd.DragSource; import java.awt.dnd.DragGestureEvent; import java.awt.dnd.InvalidDnDOperationException; import java.awt.dnd.peer.DragSourceContextPeer; import java.awt.dnd.DropTarget; import javax.swing.JComponent; import sun.swing.LightweightContent; /** * This class provides a wrapper over inner LightweightContentProxy class * which implements jdk internal sun.swing.LightweightContent interface * and provides APIs to be used by FX swing interop to access and use LightweightContent APIs. */ public class LightweightContentWrapper { private LightweightContentProxy lwCnt; public LightweightContentWrapper() { lwCnt = new LightweightContentProxy(); } LightweightContentProxy getContent() { return lwCnt; } public void imageBufferReset(int[] data, int x, int y, int width, int height, int linestride) {} public void imageBufferReset(int[] data, int x, int y, int width, int height, int linestride, double scaleX, double scaleY) {} public JComponent getComponent() { return null; } public void paintLock() {} public void paintUnlock() {} public void imageReshaped(int x, int y, int width, int height) {} public void imageUpdated(int dirtyX, int dirtyY,int dirtyWidth, int dirtyHeight) {} public void focusGrabbed() {} public void focusUngrabbed() {} public void preferredSizeChanged(int width, int height) {} public void maximumSizeChanged(int width, int height) {} public void minimumSizeChanged(int width, int height) {} public T createDragGestureRecognizer( Class abstractRecognizerClass, DragSource ds, Component c, int srcActions, DragGestureListener dgl) { return null; } public DragSourceContextWrapper createDragSourceContextPeer(DragGestureEvent dge) throws InvalidDnDOperationException { return null; } public void addDropTarget(DropTarget dt) { } public void removeDropTarget(DropTarget dt) { } private class LightweightContentProxy implements LightweightContent { public JComponent getComponent() { return LightweightContentWrapper.this.getComponent(); } public void paintLock() { LightweightContentWrapper.this.paintLock(); } public void paintUnlock() { LightweightContentWrapper.this.paintUnlock(); } public void imageBufferReset(int[] data, int x, int y, int width, int height, int linestride) { LightweightContentWrapper.this.imageBufferReset(data, x, y, width, height, linestride); } public void imageBufferReset(int[] data, int x, int y, int width, int height, int linestride, double scaleX, double scaleY) { LightweightContentWrapper.this.imageBufferReset(data, x, y, width, height, linestride, scaleX, scaleY); } public void imageReshaped(int x, int y, int width, int height) { LightweightContentWrapper.this.imageReshaped(x, y, width, height); } public void imageUpdated(int dirtyX, int dirtyY,int dirtyWidth, int dirtyHeight) { LightweightContentWrapper.this.imageUpdated(dirtyX, dirtyY, dirtyWidth, dirtyHeight); } public void focusGrabbed() { LightweightContentWrapper.this.focusGrabbed(); } public void focusUngrabbed() { LightweightContentWrapper.this.focusUngrabbed(); } public void preferredSizeChanged(int width, int height) { LightweightContentWrapper.this.preferredSizeChanged(width, height); } public void maximumSizeChanged(int width, int height) { LightweightContentWrapper.this.maximumSizeChanged(width, height); } public void minimumSizeChanged(int width, int height) { LightweightContentWrapper.this.minimumSizeChanged(width, height); } public T createDragGestureRecognizer( Class abstractRecognizerClass, DragSource ds, Component c, int srcActions, DragGestureListener dgl) { return LightweightContentWrapper.this.createDragGestureRecognizer( abstractRecognizerClass, ds, c, srcActions, dgl); } public DragSourceContextPeer createDragSourceContextPeer(DragGestureEvent dge) throws InvalidDnDOperationException { DragSourceContextWrapper peerWrapper = LightweightContentWrapper.this.createDragSourceContextPeer(dge); return peerWrapper.getPeer(); } public void addDropTarget(DropTarget dt) { LightweightContentWrapper.this.addDropTarget(dt); } public void removeDropTarget(DropTarget dt) { LightweightContentWrapper.this.removeDropTarget(dt); } } }