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
* Run the receiver using an inline editor from the supplied navigator. The
     * navigator will tell the action when the path is ready to run.
     */
    private void runWithInlineEditor() {
        IResource currentResource = (IResource) getStructuredSelection()
                .getFirstElement();
        if (!checkReadOnlyAndNull(currentResource))
            return;
        queryNewResourceNameInline(currentResource);
    }
    /**
     * @param path the path
     * @param resource the resource
     */
    protected void runWithNewPath(IPath path, IResource resource) {
        this.newPath = path;
        super.run();
    }
    /**
     * Save the changes and dispose of the text widget.
     * @param resource - the resource to move.
     */
    private void saveChangesAndDispose(IResource resource) {
        if (saving == true)
            return;
        saving = true;
        
        
        inlinedResource = resource;
        final String newName = textEditor.getText();