home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &… the Search for Life CD 3 / 0_CD-ROM.iso / install / jre1_3 / lib / rt.jar / sun / awt / windows / WDragSourceContextPeer.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  7.5 KB  |  297 lines

  1. package sun.awt.windows;
  2.  
  3. import java.awt.Component;
  4. import java.awt.Cursor;
  5. import java.awt.Image;
  6. import java.awt.Point;
  7. import java.awt.datatransfer.DataFlavor;
  8. import java.awt.datatransfer.Transferable;
  9. import java.awt.datatransfer.UnsupportedFlavorException;
  10. import java.awt.dnd.DragGestureEvent;
  11. import java.awt.dnd.DragSource;
  12. import java.awt.dnd.DragSourceContext;
  13. import java.awt.dnd.DragSourceDragEvent;
  14. import java.awt.dnd.DragSourceDropEvent;
  15. import java.awt.dnd.DragSourceEvent;
  16. import java.awt.dnd.InvalidDnDOperationException;
  17. import java.awt.dnd.peer.DragSourceContextPeer;
  18. import java.awt.event.InputEvent;
  19. import java.io.File;
  20. import java.io.IOException;
  21. import java.io.InputStream;
  22. import java.rmi.MarshalledObject;
  23. import java.security.AccessController;
  24. import java.security.PrivilegedActionException;
  25. import java.util.List;
  26. import java.util.Map;
  27.  
  28. final class WDragSourceContextPeer implements DragSourceContextPeer {
  29.    private static WDragSourceContextPeerDispatcher listenerDispatcher = new WDragSourceContextPeerDispatcher();
  30.    DragSource dragSource;
  31.    DragSourceContext dragSourceContext;
  32.    DragGestureEvent trigger;
  33.    Cursor cursor;
  34.    private Component component;
  35.    private int actions;
  36.    private Component nativeCont;
  37.    private int nativeCtxt;
  38.    private boolean dropOccurred = false;
  39.    private int dropOperation = 0;
  40.    private boolean dropSuccess = false;
  41.    private int dropScreenXHint;
  42.    private int dropScreenYHint;
  43.    private boolean droppedInWindowCR;
  44.    private boolean fakeExitDispatched = false;
  45.    // $FF: synthetic field
  46.    static Class class$java$lang$String;
  47.  
  48.    static DragSourceContextPeer getDragSourceContextPeer(DragGestureEvent var0) {
  49.       return new WDragSourceContextPeer(var0);
  50.    }
  51.  
  52.    private WDragSourceContextPeer(DragGestureEvent var1) {
  53.       this.trigger = var1;
  54.       this.component = var1.getComponent();
  55.       this.dragSource = var1.getDragSource();
  56.    }
  57.  
  58.    public void startDrag(DragSourceContext var1, Cursor var2, Image var3, Point var4) throws InvalidDnDOperationException {
  59.       this.dragSourceContext = var1;
  60.       this.cursor = var2;
  61.       this.actions = this.trigger.getSourceAsDragGestureRecognizer().getSourceActions();
  62.       synchronized(this) {
  63.          Transferable var6 = this.dragSourceContext.getTransferable();
  64.          DataFlavor[] var7 = var6.getTransferDataFlavors();
  65.          Map var8 = this.dragSource.getFlavorMap().getNativesForFlavors(var7);
  66.  
  67.          for(int var9 = 0; var9 < var7.length; ++var9) {
  68.             if (!var7[var9].isRepresentationClassInputStream() && !var7[var9].isRepresentationClassSerializable() && !var7[var9].isRepresentationClassRemote() && !DataFlavor.javaFileListFlavor.equals(var7[var9])) {
  69.                var8.remove(var7[var9]);
  70.             }
  71.          }
  72.  
  73.          if (this.nativeCtxt != 0) {
  74.             throw new InvalidDnDOperationException("drag in progress");
  75.          } else {
  76.             try {
  77.                this.nativeCtxt = this.createDragSource(this.trigger.getTriggerEvent(), this.actions, var8.values().toArray());
  78.             } catch (Exception var13) {
  79.                ((Throwable)var13).printStackTrace();
  80.                throw new InvalidDnDOperationException("failed to create native peer");
  81.             }
  82.  
  83.             if (this.nativeCtxt == 0) {
  84.                throw new InvalidDnDOperationException("failed to create native peer");
  85.             } else {
  86.                WDropTargetContextPeer.setCurrentJVMLocalSourceTransferable(var6);
  87.  
  88.                try {
  89.                   (new 1(this)).start();
  90.                } catch (Exception var12) {
  91.                   ((Throwable)var12).printStackTrace();
  92.                   this.release(this.nativeCtxt);
  93.                   this.nativeCtxt = 0;
  94.                   throw new InvalidDnDOperationException("failed to start Thread");
  95.                }
  96.  
  97.             }
  98.          }
  99.       }
  100.    }
  101.  
  102.    public Cursor getCursor() {
  103.       return this.cursor;
  104.    }
  105.  
  106.    public void setCursor(Cursor var1) throws InvalidDnDOperationException {
  107.       if (this.cursor == null || !this.cursor.equals(var1)) {
  108.          this.cursor = var1;
  109.          if (this.nativeCtxt != 0) {
  110.             setNativeCursor(this.nativeCtxt, this.cursor);
  111.          }
  112.       }
  113.  
  114.    }
  115.  
  116.    public void transferablesFlavorsChanged() {
  117.    }
  118.  
  119.    private void dragEnter(int var1, int var2, int var3) {
  120.       listenerDispatcher.deliverEnter(this.dragSourceContext, new DragSourceDragEvent(this.dragSourceContext, var1, var2, var3), this.component);
  121.    }
  122.  
  123.    private void dragMotion(int var1, int var2, int var3) {
  124.       listenerDispatcher.deliverMotion(this.dragSourceContext, new DragSourceDragEvent(this.dragSourceContext, var1, var2, var3), this.component);
  125.    }
  126.  
  127.    private void operationChanged(int var1, int var2, int var3) {
  128.       listenerDispatcher.deliverGestureChanged(this.dragSourceContext, new DragSourceDragEvent(this.dragSourceContext, var1, var2, var3), this.component);
  129.    }
  130.  
  131.    private void dragExit(int var1) {
  132.       listenerDispatcher.deliverExit(this.dragSourceContext, new DragSourceEvent(this.dragSourceContext), this.component);
  133.    }
  134.  
  135.    private WDragSourceContextPeerBuffer convertData(String var1) {
  136.       WDragSourceContextPeerBuffer var2 = null;
  137.       Map var3 = this.dragSource.getFlavorMap().getFlavorsForNatives(new String[]{var1});
  138.       if (var3 != null && !var3.isEmpty()) {
  139.          DataFlavor var4 = (DataFlavor)var3.get(var1);
  140.          Object var5 = null;
  141.          if (var4 == null) {
  142.             return null;
  143.          } else {
  144.             try {
  145.                var5 = this.dragSourceContext.getTransferable().getTransferData(var4);
  146.             } catch (IOException var12) {
  147.                return null;
  148.             } catch (UnsupportedFlavorException var13) {
  149.                return null;
  150.             }
  151.  
  152.             if (var4.isRepresentationClassInputStream()) {
  153.                try {
  154.                   var2 = new WDragSourceContextPeerBuffer((InputStream)var5);
  155.                } catch (Exception var11) {
  156.                   ((Throwable)var11).printStackTrace();
  157.                   return null;
  158.                }
  159.             } else if (var4.isRepresentationClassRemote()) {
  160.                try {
  161.                   var2 = new WDragSourceContextPeerBuffer(new MarshalledObject(var5));
  162.                } catch (Exception var10) {
  163.                   ((Throwable)var10).printStackTrace();
  164.                   return null;
  165.                }
  166.             } else if (var4.isRepresentationClassSerializable()) {
  167.                try {
  168.                   var2 = new WDragSourceContextPeerBuffer(var5);
  169.                } catch (Exception var9) {
  170.                   ((Throwable)var9).printStackTrace();
  171.                   return null;
  172.                }
  173.             } else {
  174.                Class var6 = var4.getRepresentationClass();
  175.                if ((class$java$lang$String == null ? (class$java$lang$String = class$("java.lang.String")) : class$java$lang$String).equals(var6)) {
  176.                   try {
  177.                      var2 = new WDragSourceContextPeerBuffer((String)var5);
  178.                   } catch (Exception var8) {
  179.                      ((Throwable)var8).printStackTrace();
  180.                      return null;
  181.                   }
  182.                }
  183.             }
  184.  
  185.             return var2;
  186.          }
  187.       } else {
  188.          return null;
  189.       }
  190.    }
  191.  
  192.    private String[] convertFileList(String var1) {
  193.       Map var2 = this.dragSource.getFlavorMap().getFlavorsForNatives(new String[]{var1});
  194.       if (var2 != null && !var2.isEmpty()) {
  195.          DataFlavor var3 = (DataFlavor)var2.get(var1);
  196.          if (var3 == null) {
  197.             return null;
  198.          } else {
  199.             List var4;
  200.             try {
  201.                var4 = (List)this.dragSourceContext.getTransferable().getTransferData(var3);
  202.             } catch (IOException var10) {
  203.                return null;
  204.             } catch (UnsupportedFlavorException var11) {
  205.                return null;
  206.             } catch (ClassCastException var12) {
  207.                return null;
  208.             }
  209.  
  210.             if (var4.isEmpty()) {
  211.                return null;
  212.             } else {
  213.                int var5 = 0;
  214.  
  215.                for(int var6 = 0; var6 < var4.size(); ++var6) {
  216.                   Object var7 = var4.get(var6);
  217.                   if (var7 instanceof File || var7 instanceof String) {
  218.                      ++var5;
  219.                   }
  220.                }
  221.  
  222.                if (var5 == 0) {
  223.                   return null;
  224.                } else {
  225.                   String[] var13 = new String[var5];
  226.  
  227.                   try {
  228.                      AccessController.doPrivileged(new 2(this, var4, var13));
  229.                      return var13;
  230.                   } catch (PrivilegedActionException var9) {
  231.                      return null;
  232.                   }
  233.                }
  234.             }
  235.          }
  236.       } else {
  237.          return null;
  238.       }
  239.    }
  240.  
  241.    void dragDropFinished(boolean var1, int var2, int var3, int var4, boolean var5) {
  242.       DragSourceDropEvent var6 = new DragSourceDropEvent(this.dragSourceContext, var2, var1);
  243.       listenerDispatcher.deliverDropFinish(this.dragSourceContext, var6, this.component);
  244.       this.dropScreenXHint = var3;
  245.       this.dropScreenYHint = var4;
  246.       this.droppedInWindowCR = var5;
  247.    }
  248.  
  249.    private int getDropXHint() {
  250.       return this.dropScreenXHint;
  251.    }
  252.  
  253.    private int getDropYHint() {
  254.       return this.dropScreenYHint;
  255.    }
  256.  
  257.    private boolean getDroppedInWindowCR() {
  258.       return this.droppedInWindowCR;
  259.    }
  260.  
  261.    native int createDragSource(InputEvent var1, int var2, Object[] var3);
  262.  
  263.    native void doDragDrop(int var1, Cursor var2);
  264.  
  265.    private static native void setNativeCursor(int var0, Cursor var1);
  266.  
  267.    private native void release(int var1);
  268.  
  269.    private native void setActions(int var1, int var2);
  270.  
  271.    static native void Initialize();
  272.  
  273.    // $FF: synthetic method
  274.    static int access$000(WDragSourceContextPeer var0) {
  275.       return var0.nativeCtxt;
  276.    }
  277.  
  278.    // $FF: synthetic method
  279.    static void access$100(WDragSourceContextPeer var0, int var1) {
  280.       var0.release(var1);
  281.    }
  282.  
  283.    // $FF: synthetic method
  284.    static int access$002(WDragSourceContextPeer var0, int var1) {
  285.       return var0.nativeCtxt = var1;
  286.    }
  287.  
  288.    // $FF: synthetic method
  289.    static Class class$(String var0) {
  290.       try {
  291.          return Class.forName(var0);
  292.       } catch (ClassNotFoundException var2) {
  293.          throw new NoClassDefFoundError(((Throwable)var2).getMessage());
  294.       }
  295.    }
  296. }
  297.