eclipse-jdt / eclipse.jdt.ui

Eclipse Public License 2.0
36 stars 86 forks source link

Extract method, cannot go back to the first window with the settings #1510

Closed Alberth289346 closed 1 month ago

Alberth289346 commented 2 months ago

Used version:

Eclipse Platform

Version: 2024-03 (4.31)
Build id: I20240229-0520

Trying to extract the new PathPair(x, x) to a new method. Code:

package org.eclipse.escet.cif.documentation.utils;

@SuppressWarnings("javadoc")
public class ExtractMethodGoBack {
    public ExtractMethodGoBack(PathPair p) { }

    public static record PathPair(int x, int y) { }

    public static ExtractMethodGoBack make() {
        int x = 1;
        return new ExtractMethodGoBack(new PathPair(x, x));
    }
}

Selected text:

Screenshot from 2024-07-15 08-17-32

"Refactor -> Extract method", first screen Screenshot from 2024-07-15 08-18-11

I wasn't sure what it would do, so I pressed "Preview >"

Screenshot from 2024-07-15 08-19-28

[resized the window]

Color seems a bit off, but this makes sense, let's go back and edit the settings. Pressing "Back"

Screenshot from 2024-07-15 08-20-13

[resized the window]

I expected to go back to the settings screen instead of this. Still want to edit the settings. Another "Back" pressed.

Screenshot from 2024-07-15 08-21-19

[resized the window, and unfolded the "details" message]

You can click the error away and try more "Back" buttons, but it shows the last screen again.

Crashlog (it has the "diffLabel" and it's the last one, so likely the correct one):

!ENTRY org.eclipse.jface 4 2 2024-07-15 08:21:59.512
!MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.jface".
!STACK 0
java.lang.IllegalArgumentException: Group not found: diffLabel
    at org.eclipse.jface.action.ContributionManager.addToGroup(ContributionManager.java:130)
    at org.eclipse.jface.action.ContributionManager.appendToGroup(ContributionManager.java:140)
    at org.eclipse.compare.contentmergeviewer.TextMergeViewer.updateToolbarLabel(TextMergeViewer.java:5432)
    at org.eclipse.compare.contentmergeviewer.TextMergeViewer.update(TextMergeViewer.java:5414)
    at org.eclipse.compare.contentmergeviewer.TextMergeViewer.updateContent(TextMergeViewer.java:3063)
    at org.eclipse.compare.contentmergeviewer.ContentMergeViewer.internalRefresh(ContentMergeViewer.java:796)
    at org.eclipse.compare.contentmergeviewer.ContentMergeViewer.inputChanged(ContentMergeViewer.java:704)
    at org.eclipse.jface.viewers.ContentViewer.setInput(ContentViewer.java:282)
    at org.eclipse.jdt.internal.ui.compare.JavaMergeViewer.setInput(JavaMergeViewer.java:156)
    at org.eclipse.compare.CompareViewerSwitchingPane.setInput(CompareViewerSwitchingPane.java:268)
    at org.eclipse.ltk.internal.ui.refactoring.TextEditChangePreviewViewer.setInput(TextEditChangePreviewViewer.java:249)
    at org.eclipse.ltk.internal.ui.refactoring.TextEditChangePreviewViewer.setInput(TextEditChangePreviewViewer.java:201)
    at org.eclipse.ltk.internal.ui.refactoring.TextEditGroupNode.feedInput(TextEditGroupNode.java:84)
    at org.eclipse.ltk.internal.ui.refactoring.PreviewWizardPage.showPreview(PreviewWizardPage.java:635)
    at org.eclipse.ltk.internal.ui.refactoring.PreviewWizardPage.lambda$0(PreviewWizardPage.java:606)
    at org.eclipse.jface.viewers.Viewer$1.run(Viewer.java:151)
    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
    at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:174)
    at org.eclipse.jface.viewers.Viewer.fireSelectionChanged(Viewer.java:148)
    at org.eclipse.jface.viewers.StructuredViewer.updateSelection(StructuredViewer.java:2132)
    at org.eclipse.jface.viewers.ColumnViewer.updateSelection(ColumnViewer.java:1055)
    at org.eclipse.jface.viewers.StructuredViewer.setSelection(StructuredViewer.java:1664)
    at org.eclipse.jface.viewers.TreeViewer.setSelection(TreeViewer.java:1091)
    at org.eclipse.jface.viewers.Viewer.setSelection(Viewer.java:375)
    at org.eclipse.ltk.internal.ui.refactoring.ChangeElementTreeViewer.handleInvalidSelection(ChangeElementTreeViewer.java:113)
    at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1405)
    at org.eclipse.jface.viewers.TreeViewer.preservingSelection(TreeViewer.java:367)
    at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1353)
    at org.eclipse.jface.viewers.CheckboxTreeViewer.preservingSelection(CheckboxTreeViewer.java:407)
    at org.eclipse.jface.viewers.AbstractTreeViewer.inputChanged(AbstractTreeViewer.java:1589)
    at org.eclipse.ltk.internal.ui.refactoring.ChangeElementTreeViewer.inputChanged(ChangeElementTreeViewer.java:122)
    at org.eclipse.jface.viewers.ContentViewer.setInput(ContentViewer.java:282)
    at org.eclipse.jface.viewers.StructuredViewer.setInput(StructuredViewer.java:1636)
    at org.eclipse.ltk.internal.ui.refactoring.PreviewWizardPage.setTreeViewerInput(PreviewWizardPage.java:576)
    at org.eclipse.ltk.internal.ui.refactoring.PreviewWizardPage.setChange(PreviewWizardPage.java:329)
    at org.eclipse.ltk.ui.refactoring.RefactoringWizard.internalSetChange(RefactoringWizard.java:776)
    at org.eclipse.ltk.ui.refactoring.RefactoringWizard.computeUserInputSuccessorPage(RefactoringWizard.java:518)
    at org.eclipse.ltk.ui.refactoring.UserInputWizardPage.computeSuccessorPage(UserInputWizardPage.java:77)
    at org.eclipse.ltk.ui.refactoring.UserInputWizardPage.getNextPage(UserInputWizardPage.java:113)
    at org.eclipse.ltk.internal.ui.refactoring.RefactoringWizardDialog2.nextOrPreviewPressed(RefactoringWizardDialog2.java:494)
    at org.eclipse.ltk.internal.ui.refactoring.RefactoringWizardDialog2$1.widgetSelected(RefactoringWizardDialog2.java:695)
    at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:252)
    at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89)
    at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5855)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1529)
    at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:5065)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4517)
    at org.eclipse.jface.window.Window.runEventLoop(Window.java:823)
    at org.eclipse.jface.window.Window.open(Window.java:799)
    at org.eclipse.ltk.ui.refactoring.RefactoringWizardOpenOperation.lambda$0(RefactoringWizardOpenOperation.java:190)
    at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67)
    at org.eclipse.ltk.ui.refactoring.RefactoringWizardOpenOperation.run(RefactoringWizardOpenOperation.java:209)
    at org.eclipse.ltk.ui.refactoring.RefactoringWizardOpenOperation.run(RefactoringWizardOpenOperation.java:126)
    at org.eclipse.jdt.internal.ui.refactoring.actions.RefactoringStarter.activate(RefactoringStarter.java:41)
    at org.eclipse.jdt.ui.actions.ExtractMethodAction.run(ExtractMethodAction.java:87)
    at org.eclipse.jdt.ui.actions.SelectionDispatchAction.dispatchRun(SelectionDispatchAction.java:278)
    at org.eclipse.jdt.ui.actions.SelectionDispatchAction.run(SelectionDispatchAction.java:252)
    at org.eclipse.jface.action.Action.runWithEvent(Action.java:474)
    at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:581)
    at org.eclipse.jface.action.ActionContributionItem.lambda$4(ActionContributionItem.java:415)
    at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89)
    at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5855)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1529)
    at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:5065)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4517)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1151)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1042)
    at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:152)
    at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:639)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
    at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:546)
    at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173)
    at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152)
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:568)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:651)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:588)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1459)
    at org.eclipse.equinox.launcher.Main.main(Main.java:1432)
jjohnstn commented 1 month ago

Hi @Alberth289346 I had seen this problem myself in the past but using recent 4.33 I-build, I am able to successfully go back and forth between preview and settings for your example test. If you wish to confirm, you can get an SDK I-build from: https://download.eclipse.org/eclipse/downloads/ See the latest downloads section and select the download starting with capital I. If you don't have time to do this, I will close the issue as fixed in current release.

Alberth289346 commented 1 month ago

Thanks for checking. I completely trust your judgement, feel free to close it.

I am not so confident in installing Eclipses, it may affect my currently installed version, what I really don't want to happen.

jjohnstn commented 1 month ago

Thanks @Alberth289346. I will close. If you see it again in the future, feel free to open a new issue.