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
}
        });
        if (textActionHandler != null)
            textActionHandler.addText(textEditor);
    }
    /**
     * Close the text widget and reset the editorText field.
     */
    private void disposeTextWidget() {
        if (textActionHandler != null)
            textActionHandler.removeText(textEditor);
        if (textEditorParent != null) {
            textEditorParent.dispose();
            textEditorParent = null;
            textEditor = null;
            treeEditor.setEditor(null, null);
        }
    }
    /**
     * Returns the elements that the action is to be performed on.
     * Return the resource cached by the action as we cannot rely
     * on the selection being correct for inlined text.
     *
     * @return list of resource elements (element type: <code>IResource</code>)
     */
    protected List getActionResources() {
        if (inlinedResource == null)
            return super.getActionResources();
        List actionResources = new ArrayList();
        actionResources.add(inlinedResource);