@@ -71,26 +71,18 @@ public static void drop(JComponent jc, Object html5DataTransfer, String name, by
7171 public static void drop (JComponent jc , Object html5DataTransfer , Object [][] data , int x , int y ) {
7272 if (html5DataTransfer == null )
7373 return ;
74- JSTransferable t = new JSTransferable ( html5DataTransfer );
74+ JSTransferable t = new FileTransferable ( data );
7575 DropTarget target = jc .getDropTarget ();
76- System .out .println ("JSDnD[] drop for " + jc .getUIClassID () + " target " + target );
77- Point offset ;
76+ System .out .println ("JSDnD[] drop for " + jc .getUIClassID () + " target " + target );
7877 if (target != null ) {
79- offset = jc .getLocationOnScreen ();
80- // if (name == null)
81- target .drop (createDropEvent (target , t , data , x , y ));
78+ target .drop (createDropEvent (target , t , data , x , y ));
8279 return ;
8380 }
84- Component top = jc .getTopLevelAncestor ();
85- offset = top .getLocationOnScreen ();
86-
87- System .out .println ("JSDnD drop for " + jc .getUIClassID () + " offset " + x + " " + y + " -" + offset );
88-
89- top .dispatchEvent (new JSDropMouseEvent (jc , MouseEvent .MOUSE_RELEASED , x
90- //- offset.x
91- , y
92- //- offset.y
93- , t , null , null ));
81+ Component top = jc .getTopLevelAncestor ();
82+
83+ System .out .println ("JSDnD drop for " + jc .getUIClassID () + " offset " + x + " " + y );
84+
85+ top .dispatchEvent (new JSDropMouseEvent (jc , MouseEvent .MOUSE_RELEASED , x , y , t , null , null ));
9486 }
9587
9688 @ SuppressWarnings ("serial" )
@@ -109,6 +101,14 @@ public JSDropMouseEvent(Component source, int id, int x, int y, Transferable t,
109101 setBData (data );
110102 }
111103
104+ // public JSDropMouseEvent(Component source, int id, int x, int y, Transferable t, Object[][] data) {
105+ // super(source, id, System.currentTimeMillis(), 0, x, y, 0, false, NOBUTTON);
106+ // System.out.println("new JSDropMouseEvent for " + source);
107+ // this.transferable = t;
108+ // //
109+ // setBData((byte[]) (Object) data);
110+ // }
111+ //
112112 protected void copyPrivateDataInto (AWTEvent that ) {
113113
114114 // in case this gets transferred.
@@ -166,7 +166,7 @@ public String paramString() {
166166
167167 static DropTargetDropEvent createDropEvent (DropTarget target , Transferable t , Object [][] data , int x , int y ) {
168168 DropTargetContext context = new DropTargetContext (target );
169- context .addNotify (new JSDropTargetContextPeer (target , t , data ));
169+ context .addNotify (new JSDropTargetContextPeer (target , t , null , null ));
170170 return new DropTargetDropEvent (context , new Point (x , y ), DnDConstants .ACTION_MOVE , DnDConstants .ACTION_LINK | DnDConstants .ACTION_COPY_OR_MOVE );
171171 }
172172
@@ -183,11 +183,6 @@ public JSDropTargetContextPeer (DropTarget target, Transferable t, String name,
183183 transferable = (name == null ? t : new FileTransferable (name , data ));
184184 }
185185
186- public JSDropTargetContextPeer (DropTarget target , Transferable t , Object [][] data ) {
187- this .target = target ;
188- transferable = new FileTransferable (data );
189- }
190-
191186 private Transferable transferable ;
192187 private DropTarget target ;
193188
@@ -257,6 +252,20 @@ public static class JSTransferable implements Transferable {
257252 public JSTransferable (Object html5DataTransfer ) {
258253 dataTransfer = (HTML5DataTransfer )html5DataTransfer ;
259254 mimeTypes = /** @j2sNative html5DataTransfer && html5DataTransfer.types ||*/ null ;
255+ if (mimeTypes != null ) {
256+ if (mimeTypes .length == 0 ) {
257+ // Chrome ver. 77 does this
258+ mimeTypes = new String [] {"application/x-java-file-list;class=java.util.List" };
259+
260+ } else {
261+ String [] t = new String [mimeTypes .length ];
262+ // check for valid mimeType syntax; make a normal String
263+ for (int i = 0 ; i < mimeTypes .length ; i ++)
264+ t [i ] = (mimeTypes [i ].equals ("Files" ) ? "application/x-java-file-list;class=java.util.List"
265+ : mimeTypes [i ]);
266+ mimeTypes = t ;
267+ }
268+ }
260269 }
261270
262271 @ Override
0 commit comments