Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 210753

Summary: [Forms] Index out of bounds from FormEditor#setActivePage(*)
Product: [Eclipse Project] Platform Reporter: Paul Webster <pwebster>
Component: User AssistanceAssignee: Adam Archer <agarcher>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: P3 CC: dejan, eclipse
Version: 3.4   
Target Milestone: ---   
Hardware: PC   
OS: All   
Whiteboard:
Bug Depends on:    
Bug Blocks: 184074    
Attachments:
Description Flags
FormEditor v01 none

Description Paul Webster CLA 2007-11-23 07:41:55 EST
It looks like setActivePage(*) has been overridden so that it calls pageChanged(*) before the actual CTabFolder has been updated with the page number:

java.lang.IllegalArgumentException: Index out of bounds
	at org.eclipse.swt.SWT.error(SWT.java:3700)
	at org.eclipse.swt.SWT.error(SWT.java:3634)
	at org.eclipse.swt.SWT.error(SWT.java:3605)
	at org.eclipse.swt.custom.CTabFolder.getItem(CTabFolder.java:1187)
	at org.eclipse.ui.part.MultiPageEditorPart.getItem(MultiPageEditorPart.java:447)
	at org.eclipse.ui.part.MultiPageEditorPart.getEditor(MultiPageEditorPart.java:428)
	at org.eclipse.ui.part.MultiPageEditorPart.setFocus(MultiPageEditorPart.java:785)
	at org.eclipse.ui.part.MultiPageEditorPart.setFocus(MultiPageEditorPart.java:771)
	at org.eclipse.pde.internal.ui.editor.PDEFormEditor.setFocus(PDEFormEditor.java:304)
	at org.eclipse.ui.part.MultiPageEditorPart.pageChange(MultiPageEditorPart.java:586)
	at org.eclipse.ui.forms.editor.FormEditor.pageChange(FormEditor.java:509)
	at org.eclipse.pde.internal.ui.editor.PDEFormEditor.pageChange(PDEFormEditor.java:292)
	at org.eclipse.ui.forms.editor.FormEditor.setActivePage(FormEditor.java:623)
	at org.eclipse.ui.forms.editor.FormEditor.setActivePage(FormEditor.java:529)
	at org.eclipse.pde.internal.ui.editor.PDEFormEditor.setActivePage(PDEFormEditor.java:803)
	at org.eclipse.pde.internal.ui.editor.PDEFormEditor.createPages(PDEFormEditor.java:283)
	at org.eclipse.ui.part.MultiPageEditorPart.createPartControl(MultiPageEditorPart.java:284)
	at org.eclipse.ui.internal.EditorReference.createPartHelper(EditorReference.java:661)
	at org.eclipse.ui.internal.EditorReference.createPart(EditorReference.java:428)
	at org.eclipse.ui.internal.WorkbenchPartReference.getPart(WorkbenchPartReference.java:594)
	at org.eclipse.ui.internal.PartPane.setVisible(PartPane.java:300)
	at org.eclipse.ui.internal.presentations.PresentablePart.setVisible(PresentablePart.java:180)
	at org.eclipse.ui.internal.presentations.util.PresentablePartFolder.select(PresentablePartFolder.java:270)
	at org.eclipse.ui.internal.presentations.util.LeftToRightTabOrder.select(LeftToRightTabOrder.java:65)
	at org.eclipse.ui.internal.presentations.util.TabbedStackPresentation.selectPart(TabbedStackPresentation.java:473)
	at org.eclipse.ui.internal.PartStack.refreshPresentationSelection(PartStack.java:1256)
	at org.eclipse.ui.internal.PartStack.setSelection(PartStack.java:1209)
	at org.eclipse.ui.internal.PartStack.presentationSelectionChanged(PartStack.java:843)
	at org.eclipse.ui.internal.PartStack.access$1(PartStack.java:829)
	at org.eclipse.ui.internal.PartStack$1.selectPart(PartStack.java:139)
	at org.eclipse.ui.internal.presentations.util.TabbedStackPresentation$1.handleEvent(TabbedStackPresentation.java:133)
	at org.eclipse.ui.internal.presentations.util.AbstractTabFolder.fireEvent(AbstractTabFolder.java:267)
	at org.eclipse.ui.internal.presentations.util.AbstractTabFolder.fireEvent(AbstractTabFolder.java:276)
	at org.eclipse.ui.internal.presentations.defaultpresentation.DefaultTabFolder.access$1(DefaultTabFolder.java:1)
	at org.eclipse.ui.internal.presentations.defaultpresentation.DefaultTabFolder$2.handleEvent(DefaultTabFolder.java:84)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1113)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1137)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1122)
	at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:963)
	at org.eclipse.swt.custom.CTabFolder.setSelection(CTabFolder.java:3236)
	at org.eclipse.swt.custom.CTabFolder.onMouse(CTabFolder.java:2011)
	at org.eclipse.swt.custom.CTabFolder$1.handleEvent(CTabFolder.java:316)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1113)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3335)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2982)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2393)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2357)
	at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2223)
	at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:474)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:288)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:469)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:106)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:193)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:362)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:175)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:615)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:516)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:456)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1194)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1170)
Comment 1 Paul Webster CLA 2007-11-23 07:51:04 EST
Created attachment 83627 [details]
FormEditor v01

This changes the order in setActivePage slightly so that the super method is called first (which puts MPEP in the correct state) and then the form page update code runs.

This is a potential solution depending on how bug 184074 goes.

PW
Comment 2 Adam Archer CLA 2007-11-30 14:08:49 EST
The fix for this went in as part of a patch to bug 211610.

Closing.
Comment 3 Paul Webster CLA 2007-12-03 18:54:50 EST
*** Bug 211809 has been marked as a duplicate of this bug. ***