title: Why can't I drop files on to Eclipse / SWT Drop Target from a CD in windows
body: <p>In my Eclipse RCP application I have a TreeViewer that is a drop target for files, it works fine in most circumstances, however when I try and drag files stored on a CD ROM from windows explorer to the node the icon that indicates drops are allowed doesn't change and dropping does nothing. </p>
  
  <p>Since people seemed confused about my question here's a more detailed explanation:</p>
  
  <p>When executing the code below (supplied by Baz), I am able to drag files and drop them on to the text box, when I drag a file from most locations on my machine, the window appears like this -></p>
  
  <p><img src="https://i.stack.imgur.com/NQkG5.png" alt="Working Drag"></p>
  
  <p>The cursor indicates that I can drop, and when I release the mouse the <code>drop(DropTargetEvent event)</code> method is invoked.</p>
  
  <p>Now when I do the same thing, but take a file from explorer that is on a DVD in my optical drive then it looks like this:</p>
  
  <p><img src="https://i.stack.imgur.com/HWgMc.png" alt="enter image description here"></p>
  
  <p>Indicating that the drop is not allowed, and when I release the mouse the <code>drop(DropTargetEvent event)</code> method is NOT invoked. </p>
  
  <p>It's also worth noting that I am able to drop the same DVD files in to a folder in the eclipse navigator, indicating that this isn't a machine specific issue, there must be something different in the eclipse trees that allows it but I can't see it.</p>
  
  <pre><code>package widgets;
  
  import java.util.Arrays;
  
  import org.eclipse.swt.SWT;
  import org.eclipse.swt.dnd.DND;
  import org.eclipse.swt.dnd.DropTarget;
  import org.eclipse.swt.dnd.DropTargetAdapter;
  import org.eclipse.swt.dnd.DropTargetEvent;
  import org.eclipse.swt.dnd.FileTransfer;
  import org.eclipse.swt.dnd.Transfer;
  import org.eclipse.swt.layout.GridData;
  import org.eclipse.swt.layout.GridLayout;
  import org.eclipse.swt.widgets.Display;
  import org.eclipse.swt.widgets.Shell;
  import org.eclipse.swt.widgets.Text;
  import org.eclipse.ui.part.PluginTransfer;
  
  public class SourceTest {
      public static void main(String[] args) {
          final Display display = new Display();
          Shell shell = new Shell(display);
          shell.setLayout(new GridLayout(1,false));
  
          final Text text = new Text(shell, SWT.BORDER);
          text.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, true));
  
          DropTarget dt = new DropTarget(text, DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK);
          dt.setTransfer(new Transfer[] { FileTransfer.getInstance(), PluginTransfer.getInstance() });
          dt.addDropListener(new DropTargetAdapter() {
              public void drop(DropTargetEvent event) {
                  String fileList[] = null;
                  FileTransfer ft = FileTransfer.getInstance();
                  if (ft.isSupportedType(event.currentDataType)) {
                      fileList = (String[]) event.data;
                  }
                  System.out.println(Arrays.toString(fileList));
              }
          });
  
          shell.setSize(300, 100);
          shell.open();
  
          while (!shell.isDisposed()) {
              if (!display.readAndDispatch())
                  display.sleep();
          }
          display.dispose();
      }
  
  }
  </code></pre>