Bug 100156 [IDE] RenameResourceAction should use IAdaptable for IResource lookuop
Consider the following setup: there is a tree viewer that contains TreeElementWrapper instances. TreeElementWrapper class is an IAdaptable and may sometimes adapt to IResource instance. When RenameResourceAction receives selectionChanged() it enables itself (since wrapper adapts to resource) but in runWithInlineEditor() method it queries raw selection instead of adapted resources list - thus CCE. java.lang.ClassCastException: com.xcom.TreeElementWrapper at org.eclipse.ui.actions.RenameResourceAction.runWithInlineEditor(RenameResourceAction.java:462) at org.eclipse.ui.actions.RenameResourceAction.run(RenameResourceAction.java:454) at org.eclipse.ui.actions.BaseSelectionListenerAction.runWithEvent(BaseSelectionListenerAction.java:167) at com.xcom.CompositeAction.runWithEvent(CompositeAction.java:26) at org.eclipse.ui.commands.ActionHandler.execute(ActionHandler.java:182) at org.eclipse.ui.internal.handlers.LegacyHandlerWrapper.execute(LegacyHandlerWrapper.java:108) at org.eclipse.core.commands.Command.execute(Command.java:311) at org.eclipse.core.commands.ParameterizedCommand.execute(ParameterizedCommand.java:396) at org.eclipse.ui.internal.keys.WorkbenchKeyboard.executeCommand(WorkbenchKeyboard.java:452) at org.eclipse.ui.internal.keys.WorkbenchKeyboard.press(WorkbenchKeyboard.java:722) at org.eclipse.ui.internal.keys.WorkbenchKeyboard.processKeyEvent(WorkbenchKeyboard.java:766) at org.eclipse.ui.internal.keys.WorkbenchKeyboard.filterKeySequenceBindings(WorkbenchKeyboard.java:543) at org.eclipse.ui.internal.keys.WorkbenchKeyboard.access$3(WorkbenchKeyboard.java:486) at org.eclipse.ui.internal.keys.WorkbenchKeyboard$KeyDownFilter.handleEvent(WorkbenchKeyboard.java:110)
bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/RenameResourceAction.java
}
            }
        };
        getTree().getShell().getDisplay().asyncExec(query);
    }
    /**
     * The <code>RenameResourceAction</code> implementation of this
     * <code>SelectionListenerAction</code> method ensures that this action is
     * disabled if any of the selections are not resources or resources that are
     * not local.
     */
    protected boolean updateSelection(IStructuredSelection selection) {
        disposeTextWidget();
        if (selection.size() > 1)
            return false;
        if (!super.updateSelection(selection))
            return false;
        List resources = getSelectedResources();
        if (resources.size() != 1)
            return false;
        IResource currentResource = (IResource) resources.get(0);
        if (!currentResource.exists())
            return false;
        return true;
    }
    /**
     * Set the text action handler.
     * 
     * @param actionHandler the action handler
     */