public void drop(DropTargetEvent event) { if (PluginTransfer.getInstance().isSupportedType(event.currentDataType)) { super.drop(event); } else { Object target = getCurrentTarget() != null ? getCurrentTarget() : getViewer().getInput(); CommonDropAdapterAssistant[] assistants = dndService .findCommonDropAdapterAssistants(target, getCurrentTransfer()); IStatus valid = null; for (int i = 0; i < assistants.length; i++) { try { valid = assistants[i].validateDrop(getCurrentTarget(), getCurrentOperation(), getCurrentTransfer()); if (valid != null && valid.isOK()) { assistants[i].handleDrop(this, event, getCurrentTarget()); return; } } catch (Throwable t) { NavigatorPlugin.logError(0, t.getMessage(), t); } } } }
/** * Performs a drop using the FileTransfer transfer type. */ private IStatus performFileDrop(final CommonDropAdapter anAdapter, Object data) { final int currentOperation = anAdapter.getCurrentOperation(); MultiStatus problems = new MultiStatus(PlatformUI.PLUGIN_ID, 0, WorkbenchNavigatorMessages.DropAdapter_problemImporting, null); mergeStatus(problems, validateTarget(anAdapter.getCurrentTarget(), anAdapter .getCurrentTransfer(), currentOperation)); final IContainer target = getActualTarget((IResource) anAdapter .getCurrentTarget()); final String[] names = (String[]) data; // Run the import operation asynchronously. // Otherwise the drag source (e.g., Windows Explorer) will be blocked // while the operation executes. Fixes bug 16478. Display.getCurrent().asyncExec(() -> { getShell().forceActive(); new CopyFilesAndFoldersOperation(getShell()).copyOrLinkFiles(names, target, currentOperation); }); return problems; }
MultiStatus problems = new MultiStatus(PlatformUI.PLUGIN_ID, 1, WorkbenchNavigatorMessages.DropAdapter_problemsMoving, null); mergeStatus(problems, validateTarget(dropAdapter.getCurrentTarget(), dropAdapter.getCurrentTransfer(), dropAdapter.getCurrentOperation())); IContainer target = getActualTarget((IResource) dropAdapter.getCurrentTarget());
MultiStatus problems = new MultiStatus(PlatformUI.PLUGIN_ID, 1, WorkbenchNavigatorMessages.DropAdapter_problemsMoving, null); mergeStatus(problems, validateTarget(dropAdapter.getCurrentTarget(), dropAdapter.getCurrentTransfer(), dropAdapter.getCurrentOperation())); IContainer target = getActualTarget((IResource) dropAdapter.getCurrentTarget());