ファイルをドロップするブラウザの動作に問題があります。ファイルのドラッグアンドドロップ領域を含む「ContentPanel」があります。ファイルをドラッグアンドドロップするとすべて問題ありませんが、「ContentPanel」内の別の場所にファイルをドロップすると、ブラウザがファイルを開きます(デフォルトの動作)。
どうすればこれを回避できますか?この最後のケースでは何も起こらないはずです。
2つのドロップハンドラーが必要です。1つはコンテンツパネル用で、もう1つはドラッグアンドドロップ領域用です。
public FileUploadWidget() {
RootPanel rootPanel = RootPanel.get();
DropHandler dropHandlerRoot = new DropHandler(rootPanel);
dropHandlerRoot.addFileEventHandler(new FileEventHandler() {
@Override
public void onFiles(FileEvent event) {
// Nothing to do, avoid the default browser
// behaviour which is to open the file
}
});
// Drag and drop area handler
dropHandler = new DropHandler(dragAndDropArea);
dropHandler.addFileEventHandler(new FileEventHandler() {
@Override
public void onFiles(FileEvent event) {
JsArray<File> files = event.getFiles();
for (int i = 0; i < files.length(); ++i) {
File file = files.get(i);
addFile(file);
handleSizeChange();
}
}
});
}