Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 346839 - [Compatibility] Part service needs to be notified of part input changes
Summary: [Compatibility] Part service needs to be notified of part input changes
Status: VERIFIED FIXED
Alias: None
Product: e4
Classification: Eclipse Project
Component: UI (show other bugs)
Version: unspecified   Edit
Hardware: All All
: P3 normal (vote)
Target Milestone: 4.1 RC3   Edit
Assignee: Remy Suen CLA
QA Contact: Remy Suen CLA
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-05-23 05:18 EDT by John CLA
Modified: 2011-06-06 11:34 EDT (History)
1 user (show)

See Also:


Attachments
green arrow (12.61 KB, image/png)
2011-05-23 05:19 EDT, John CLA
no flags Details
the fail dialog (17.43 KB, image/png)
2011-05-23 05:19 EDT, John CLA
no flags Details
Part input change notification patch v1 (1.88 KB, patch)
2011-05-25 10:28 EDT, Remy Suen CLA
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description John CLA 2011-05-23 05:18:55 EDT
Build Identifier: I20110518-2200

After renaming the class (ie. via Refactor->Rename) and then attempting to open the super implementation of any of its methods (not by F3-ing on a super.method() call though) by clicking on the green up-arrow of overrideness (on the left of the method name, see picture), then an error dialog appears instead of the actual open in editor.

this was in e4 4.1.0 I20110518-2200

Reproducible: Always

Steps to Reproduce:
have these 2 java files:
package org.some;


public class Base
{
	public void stuff(){
	}
}
==========
package org.some;


public class Sub extends Base
{
	@Override
	public
			void
			stuff()
	{
		super.stuff();
	}
}

=========
1. put your cursor on the Sub class and do a rename on it, ie. alt+shift+r and rename it to anything other than Sub (obviously)
2. then click(and release) left mouse button on the green up-arrow on the left of the stuff() method which means you would go to its super implementation. 
Looks like this: http://i.imgur.com/EV7op.png
3. you get this error message:
http://i.imgur.com/hFtdJ.png

to fix this just F3 (go to declaration) on the Base class on this line:
"public class Sub2 extends Base" which will go/open the Base class
you can also do this on the "super.stuff()" line, same thing.
Then alt+left to go back in nav. history and now click the green up-arrow to go to super and it works.

Note: even if Base is already open in editor (but not active), it will still fail to open its super when doing those reproduce-steps.
Comment 1 John CLA 2011-05-23 05:19:21 EDT
Created attachment 196311 [details]
green arrow
Comment 2 John CLA 2011-05-23 05:19:36 EDT
Created attachment 196312 [details]
the fail dialog
Comment 3 John CLA 2011-05-23 08:31:10 EDT
still exists in:
Eclipse SDK

Version: 4.1.0
Build id: I20110522-2200
Comment 4 Remy Suen CLA 2011-05-25 09:49:51 EDT
Trace of error dialog. Cannot reproduce on 3.7.

	MessageDialog.openError(Shell, String, String) line: 431	
	OverrideIndicatorManager$OverrideIndicator.open() line: 122	
	JavaSelectAnnotationRulerAction.runWithEvent(Event) line: 89	
	JavaSelectAnnotationRulerAction.run() line: 79	
	JavaSelectRulerAction(AbstractRulerActionDelegate).run(IAction) line: 103	
	ActionDelegateHandlerProxy.execute(ExecutionEvent) line: 289	
	Command.executeWithChecks(ExecutionEvent) line: 476	
	ParameterizedCommand.executeWithChecks(Object, Object) line: 508	
	ContributedAction.runWithEvent(Event) line: 197	
	ContributedAction(CommandAction).run() line: 171	
	AbstractTextEditor$14.triggerAction(String) line: 3066	
	AbstractTextEditor$14.access$1(AbstractTextEditor$14, String) line: 3060	
	AbstractTextEditor$15.run() line: 3079
Comment 5 Remy Suen CLA 2011-05-25 10:04:05 EDT
In 3.x, the IPartListener2s are notified that a part's input has changed. This notification doesn't seem to be happening in 4.x.

Thread [main] (Suspended (breakpoint at line 255 in ASTProvider))	
	owns: RunnableLock  (id=1474)	
	ASTProvider.activeJavaEditorChanged(IWorkbenchPart) line: 255	
	ASTProvider$ActivationListener.partInputChanged(IWorkbenchPartReference) line: 148	
	PartListenerList2$8.run() line: 195	
	SafeRunner.run(ISafeRunnable) line: 42	
	Platform.run(ISafeRunnable) line: 888	
	PartListenerList2.fireEvent(SafeRunnable, IPartListener2, IWorkbenchPartReference, String) line: 55	
	PartListenerList2.firePartInputChanged(IWorkbenchPartReference) line: 193	
	PartService.firePartInputChanged(IWorkbenchPartReference) line: 265	
	WWinPartService$WWinListener.partInputChanged(IWorkbenchPartReference) line: 66	
	PartListenerList2$8.run() line: 195	
	SafeRunner.run(ISafeRunnable) line: 42	
	Platform.run(ISafeRunnable) line: 888	
	PartListenerList2.fireEvent(SafeRunnable, IPartListener2, IWorkbenchPartReference, String) line: 55	
	PartListenerList2.firePartInputChanged(IWorkbenchPartReference) line: 193	
	PartService.firePartInputChanged(IWorkbenchPartReference) line: 265	
	WorkbenchPagePartList.firePartInputChanged(IWorkbenchPartReference) line: 72	
	WorkbenchPagePartList(PartList).partInputChanged(WorkbenchPartReference) line: 195	
	PartList.access$4(PartList, WorkbenchPartReference) line: 194	
	PartList$1.propertyChanged(Object, int) line: 54	
	EditorReference(WorkbenchPartReference).fireInternalPropertyChange(int) line: 375	
	EditorReference(WorkbenchPartReference).immediateFirePropertyChange(int) line: 574	
	EditorReference(WorkbenchPartReference).firePropertyChange(int) line: 564	
	EditorReference(WorkbenchPartReference).partPropertyChanged(Object, int) line: 299	
	EditorReference.partPropertyChanged(Object, int) line: 501	
	WorkbenchPartReference$2.propertyChanged(Object, int) line: 181	
	CompilationUnitEditor(WorkbenchPart).firePropertyChange(int) line: 129	
	CompilationUnitEditor(AbstractTextEditor).firePropertyChange(int) line: 6355	
	CompilationUnitEditor(AbstractTextEditor).setInputWithNotify(IEditorInput) line: 4285	
	CompilationUnitEditor(AbstractTextEditor).setInput(IEditorInput) line: 4299	
	AbstractTextEditor$7.run() line: 530	
	AbstractTextEditor$ElementStateListener.execute(Runnable, boolean) line: 599	
	AbstractTextEditor$ElementStateListener.elementMoved(Object, Object) line: 560	
	TextFileDocumentProvider$FileBufferListener.underlyingFileMoved(IFileBuffer, IPath) line: 322	
	TextFileBufferManager$6.run() line: 742	
	SafeRunner.run(ISafeRunnable) line: 42	
	ResourceTextFileBufferManager(TextFileBufferManager).fireUnderlyingFileMoved(IFileBuffer, IPath) line: 740	
	ResourceTextFileBuffer(ResourceFileBuffer).handleFileMoved(IPath) line: 449	
	ResourceFileBuffer$3.execute() line: 162	
	ResourceFileBuffer$3(ResourceFileBuffer$SafeFileChange).run() line: 86	
	UISynchronizationContext.run(Runnable) line: 34	
	ResourceTextFileBufferManager(TextFileBufferManager).execute(Runnable) line: 629	
	ResourceFileBuffer$FileSynchronizer.resourceChanged(IResourceChangeEvent) line: 180	
	NotificationManager$1.run() line: 291	
	SafeRunner.run(ISafeRunnable) line: 42	
	NotificationManager.notify(ResourceChangeListenerList$ListenerEntry[], IResourceChangeEvent, boolean) line: 285	
	NotificationManager.broadcastChanges(ElementTree, ResourceChangeEvent, boolean) line: 149	
	Workspace.broadcastPostChange() line: 395	
	Workspace.checkpoint(boolean) line: 557	
	PerformChangeOperation$1.run(IProgressMonitor) line: 263	
	Workspace.run(IWorkspaceRunnable, ISchedulingRule, int, IProgressMonitor) line: 2344	
	PerformChangeOperation.executeChange(IProgressMonitor) line: 306	
	PerformChangeOperation.run(IProgressMonitor) line: 223	
	BatchOperation.executeOperation() line: 39	
	BatchOperation(JavaModelOperation).run(IProgressMonitor) line: 728	
	Workspace.run(IWorkspaceRunnable, ISchedulingRule, int, IProgressMonitor) line: 2344	
	JavaCore.run(IWorkspaceRunnable, ISchedulingRule, IProgressMonitor) line: 4859	
	WorkbenchRunnableAdapter.run(IProgressMonitor) line: 106	
	ModalContext.runInCurrentThread(IRunnableWithProgress, IProgressMonitor) line: 464	
	ModalContext.run(IRunnableWithProgress, boolean, IProgressMonitor, Display) line: 372	
	ApplicationWindow$1.run() line: 759	
	BusyIndicator.showWhile(Display, Runnable) line: 70	
	WorkbenchWindow(ApplicationWindow).run(boolean, boolean, IRunnableWithProgress) line: 756	
	WorkbenchWindow.run(boolean, boolean, IRunnableWithProgress) line: 2642	
	RefactoringExecutionHelper.perform(boolean, boolean, boolean) line: 193	
	RefactoringExecutionHelper.perform(boolean, boolean) line: 151	
	RenameSupport.perform(Shell, IRunnableContext) line: 198	
	RenameLinkedMode.doRename(boolean) line: 362	
	RenameLinkedMode$EditorSynchronizer.left(LinkedModeModel, int) line: 119	
	LinkedModeModel.exit(int) line: 341	
	LinkedModeUI$4.run() line: 1194	
	RunnableLock.run() line: 35	
	UISynchronizer(Synchronizer).runAsyncMessages(boolean) line: 135
Comment 6 Remy Suen CLA 2011-05-25 10:28:59 EDT
Created attachment 196555 [details]
Part input change notification patch v1

When a workbench part fires out a notification that its input has changed, the event needs to be forwarded out to the part service.
Comment 7 Remy Suen CLA 2011-05-25 10:30:12 EDT
(In reply to comment #6)
> Created attachment 196555 [details]
> Part input change notification patch v1

Patch released to CVS HEAD. Thanks for the bug report.
Comment 8 John CLA 2011-05-26 11:46:43 EDT
confirmed to work in:

Eclipse SDK
Version: 4.1.0
Build id: I20110526-0630

Awesome! Thank YOU! :)
Comment 9 Remy Suen CLA 2011-06-06 11:34:28 EDT
Verified with I20110604-2201 on Windows XP.

Thanks again for the bug report, John!