@Override
	public void onDragDrop(@Nonnull Region region, @Nonnull DragEvent event, @Nonnull List<Path> files) throws IOException {
		// Sanity check input
		if (files.isEmpty()) return;

		if (config.createOnDragDrop() || !workspaceManager.hasCurrentWorkspace()) {
			// Windows sucks: https://superuser.com/questions/1696568/windows-explorer-file-order-in-the-clipboard
			//  - We can get the last clicked file to always be first when dragging from explorer
			//    but everything else will be in shuffled order, and we can't do anything about it.
			//  - Example: Using 'everything' instead of explorer for selection, we cannot guarantee drag-n-drop order.
			Path primary = files.getFirst();
			List<Path> supporting = files.size() > 1 ? files.subList(1, files.size()) : Collections.emptyList();
			pathLoadingManager.asyncNewWorkspace(primary, supporting, err -> {
				logger.error("Failed to create new workspace from dropped files", err);
			});
		} else if (workspaceManager.hasCurrentWorkspace() && config.appendOnDragDrop()) {
			// Append files to current workspace
			pathLoadingManager.asyncAddSupportingResourcesToWorkspace(workspaceManager.getCurrent(), files, err -> {
				logger.error("Failed to add supporting resources from dropped files", err);
			});
		}
	}
Listener implementation to handle drag-and-drop to load workspace content.

@author Matt Coley
@see WorkspaceExplorerPane Usage for when a workspace is already open.
@see WelcomePane Usage for when a user first starts Recaf.
recaf-ui/src/main/java/software/coley/recaf/ui/dnd/WorkspaceLoadingDropListener.java