home *** CD-ROM | disk | FTP | other *** search
- package sun.awt.windows;
-
- import java.awt.Component;
- import java.awt.Cursor;
- import java.awt.Image;
- import java.awt.Point;
- import java.awt.datatransfer.DataFlavor;
- import java.awt.datatransfer.Transferable;
- import java.awt.datatransfer.UnsupportedFlavorException;
- import java.awt.dnd.DragGestureEvent;
- import java.awt.dnd.DragSource;
- import java.awt.dnd.DragSourceContext;
- import java.awt.dnd.DragSourceDragEvent;
- import java.awt.dnd.DragSourceDropEvent;
- import java.awt.dnd.DragSourceEvent;
- import java.awt.dnd.InvalidDnDOperationException;
- import java.awt.dnd.peer.DragSourceContextPeer;
- import java.awt.event.InputEvent;
- import java.io.File;
- import java.io.IOException;
- import java.io.InputStream;
- import java.rmi.MarshalledObject;
- import java.security.AccessController;
- import java.security.PrivilegedActionException;
- import java.util.List;
- import java.util.Map;
-
- final class WDragSourceContextPeer implements DragSourceContextPeer {
- private static WDragSourceContextPeerDispatcher listenerDispatcher = new WDragSourceContextPeerDispatcher();
- DragSource dragSource;
- DragSourceContext dragSourceContext;
- DragGestureEvent trigger;
- Cursor cursor;
- private Component component;
- private int actions;
- private Component nativeCont;
- private int nativeCtxt;
- private boolean dropOccurred = false;
- private int dropOperation = 0;
- private boolean dropSuccess = false;
- private int dropScreenXHint;
- private int dropScreenYHint;
- private boolean droppedInWindowCR;
- private boolean fakeExitDispatched = false;
- // $FF: synthetic field
- static Class class$java$lang$String;
-
- static DragSourceContextPeer getDragSourceContextPeer(DragGestureEvent var0) {
- return new WDragSourceContextPeer(var0);
- }
-
- private WDragSourceContextPeer(DragGestureEvent var1) {
- this.trigger = var1;
- this.component = var1.getComponent();
- this.dragSource = var1.getDragSource();
- }
-
- public void startDrag(DragSourceContext var1, Cursor var2, Image var3, Point var4) throws InvalidDnDOperationException {
- this.dragSourceContext = var1;
- this.cursor = var2;
- this.actions = this.trigger.getSourceAsDragGestureRecognizer().getSourceActions();
- synchronized(this) {
- Transferable var6 = this.dragSourceContext.getTransferable();
- DataFlavor[] var7 = var6.getTransferDataFlavors();
- Map var8 = this.dragSource.getFlavorMap().getNativesForFlavors(var7);
-
- for(int var9 = 0; var9 < var7.length; ++var9) {
- if (!var7[var9].isRepresentationClassInputStream() && !var7[var9].isRepresentationClassSerializable() && !var7[var9].isRepresentationClassRemote() && !DataFlavor.javaFileListFlavor.equals(var7[var9])) {
- var8.remove(var7[var9]);
- }
- }
-
- if (this.nativeCtxt != 0) {
- throw new InvalidDnDOperationException("drag in progress");
- } else {
- try {
- this.nativeCtxt = this.createDragSource(this.trigger.getTriggerEvent(), this.actions, var8.values().toArray());
- } catch (Exception var13) {
- ((Throwable)var13).printStackTrace();
- throw new InvalidDnDOperationException("failed to create native peer");
- }
-
- if (this.nativeCtxt == 0) {
- throw new InvalidDnDOperationException("failed to create native peer");
- } else {
- WDropTargetContextPeer.setCurrentJVMLocalSourceTransferable(var6);
-
- try {
- (new 1(this)).start();
- } catch (Exception var12) {
- ((Throwable)var12).printStackTrace();
- this.release(this.nativeCtxt);
- this.nativeCtxt = 0;
- throw new InvalidDnDOperationException("failed to start Thread");
- }
-
- }
- }
- }
- }
-
- public Cursor getCursor() {
- return this.cursor;
- }
-
- public void setCursor(Cursor var1) throws InvalidDnDOperationException {
- if (this.cursor == null || !this.cursor.equals(var1)) {
- this.cursor = var1;
- if (this.nativeCtxt != 0) {
- setNativeCursor(this.nativeCtxt, this.cursor);
- }
- }
-
- }
-
- public void transferablesFlavorsChanged() {
- }
-
- private void dragEnter(int var1, int var2, int var3) {
- listenerDispatcher.deliverEnter(this.dragSourceContext, new DragSourceDragEvent(this.dragSourceContext, var1, var2, var3), this.component);
- }
-
- private void dragMotion(int var1, int var2, int var3) {
- listenerDispatcher.deliverMotion(this.dragSourceContext, new DragSourceDragEvent(this.dragSourceContext, var1, var2, var3), this.component);
- }
-
- private void operationChanged(int var1, int var2, int var3) {
- listenerDispatcher.deliverGestureChanged(this.dragSourceContext, new DragSourceDragEvent(this.dragSourceContext, var1, var2, var3), this.component);
- }
-
- private void dragExit(int var1) {
- listenerDispatcher.deliverExit(this.dragSourceContext, new DragSourceEvent(this.dragSourceContext), this.component);
- }
-
- private WDragSourceContextPeerBuffer convertData(String var1) {
- WDragSourceContextPeerBuffer var2 = null;
- Map var3 = this.dragSource.getFlavorMap().getFlavorsForNatives(new String[]{var1});
- if (var3 != null && !var3.isEmpty()) {
- DataFlavor var4 = (DataFlavor)var3.get(var1);
- Object var5 = null;
- if (var4 == null) {
- return null;
- } else {
- try {
- var5 = this.dragSourceContext.getTransferable().getTransferData(var4);
- } catch (IOException var12) {
- return null;
- } catch (UnsupportedFlavorException var13) {
- return null;
- }
-
- if (var4.isRepresentationClassInputStream()) {
- try {
- var2 = new WDragSourceContextPeerBuffer((InputStream)var5);
- } catch (Exception var11) {
- ((Throwable)var11).printStackTrace();
- return null;
- }
- } else if (var4.isRepresentationClassRemote()) {
- try {
- var2 = new WDragSourceContextPeerBuffer(new MarshalledObject(var5));
- } catch (Exception var10) {
- ((Throwable)var10).printStackTrace();
- return null;
- }
- } else if (var4.isRepresentationClassSerializable()) {
- try {
- var2 = new WDragSourceContextPeerBuffer(var5);
- } catch (Exception var9) {
- ((Throwable)var9).printStackTrace();
- return null;
- }
- } else {
- Class var6 = var4.getRepresentationClass();
- if ((class$java$lang$String == null ? (class$java$lang$String = class$("java.lang.String")) : class$java$lang$String).equals(var6)) {
- try {
- var2 = new WDragSourceContextPeerBuffer((String)var5);
- } catch (Exception var8) {
- ((Throwable)var8).printStackTrace();
- return null;
- }
- }
- }
-
- return var2;
- }
- } else {
- return null;
- }
- }
-
- private String[] convertFileList(String var1) {
- Map var2 = this.dragSource.getFlavorMap().getFlavorsForNatives(new String[]{var1});
- if (var2 != null && !var2.isEmpty()) {
- DataFlavor var3 = (DataFlavor)var2.get(var1);
- if (var3 == null) {
- return null;
- } else {
- List var4;
- try {
- var4 = (List)this.dragSourceContext.getTransferable().getTransferData(var3);
- } catch (IOException var10) {
- return null;
- } catch (UnsupportedFlavorException var11) {
- return null;
- } catch (ClassCastException var12) {
- return null;
- }
-
- if (var4.isEmpty()) {
- return null;
- } else {
- int var5 = 0;
-
- for(int var6 = 0; var6 < var4.size(); ++var6) {
- Object var7 = var4.get(var6);
- if (var7 instanceof File || var7 instanceof String) {
- ++var5;
- }
- }
-
- if (var5 == 0) {
- return null;
- } else {
- String[] var13 = new String[var5];
-
- try {
- AccessController.doPrivileged(new 2(this, var4, var13));
- return var13;
- } catch (PrivilegedActionException var9) {
- return null;
- }
- }
- }
- }
- } else {
- return null;
- }
- }
-
- void dragDropFinished(boolean var1, int var2, int var3, int var4, boolean var5) {
- DragSourceDropEvent var6 = new DragSourceDropEvent(this.dragSourceContext, var2, var1);
- listenerDispatcher.deliverDropFinish(this.dragSourceContext, var6, this.component);
- this.dropScreenXHint = var3;
- this.dropScreenYHint = var4;
- this.droppedInWindowCR = var5;
- }
-
- private int getDropXHint() {
- return this.dropScreenXHint;
- }
-
- private int getDropYHint() {
- return this.dropScreenYHint;
- }
-
- private boolean getDroppedInWindowCR() {
- return this.droppedInWindowCR;
- }
-
- native int createDragSource(InputEvent var1, int var2, Object[] var3);
-
- native void doDragDrop(int var1, Cursor var2);
-
- private static native void setNativeCursor(int var0, Cursor var1);
-
- private native void release(int var1);
-
- private native void setActions(int var1, int var2);
-
- static native void Initialize();
-
- // $FF: synthetic method
- static int access$000(WDragSourceContextPeer var0) {
- return var0.nativeCtxt;
- }
-
- // $FF: synthetic method
- static void access$100(WDragSourceContextPeer var0, int var1) {
- var0.release(var1);
- }
-
- // $FF: synthetic method
- static int access$002(WDragSourceContextPeer var0, int var1) {
- return var0.nativeCtxt = var1;
- }
-
- // $FF: synthetic method
- static Class class$(String var0) {
- try {
- return Class.forName(var0);
- } catch (ClassNotFoundException var2) {
- throw new NoClassDefFoundError(((Throwable)var2).getMessage());
- }
- }
- }
-