/** * If the dragged data is a structured selection, get any IVariables in it and create expressions * for each of them. Insert the created expressions at the currently selected target or add them * to the end of the collection if no target is selected. * * @param selection Structured selection containing IVariables * @return whether the drop was successful */ private boolean performVariableOrWatchAdaptableDrop(IStructuredSelection selection) { List expressions = new ArrayList(selection.size()); for (Iterator itr = selection.iterator(); itr.hasNext(); ) { Object element = itr.next(); String expressionText = createExpressionString(element); if (expressionText != null) { IExpression expression = createExpression(expressionText); if (expression != null) { expressions.add(expression); } else { DebugUIPlugin.log( new Status( IStatus.ERROR, DebugUIPlugin.getUniqueIdentifier(), "Drop failed. Watch expression could not be created for the text " + expressionText)); //$NON-NLS-1$ return false; } } else { return false; } } if (expressions.size() == selection.size()) { IExpressionManager manager = DebugPlugin.getDefault().getExpressionManager(); if (manager instanceof ExpressionManager) { IExpression targetExpression = getTargetExpression(getCurrentTarget()); if (targetExpression != null) { ((ExpressionManager) manager) .insertExpressions( (IExpression[]) expressions.toArray(new IExpression[expressions.size()]), targetExpression, fInsertBefore); } else { ((ExpressionManager) manager) .addExpressions( (IExpression[]) expressions.toArray(new IExpression[expressions.size()])); } return true; } } return false; }