Bug 61866 ConcurrentModificationException in UndoCollector/AbstractDocument
I20040511 (4pm) I found this in the log allthough I didn't notice any problems during editing Java files. I'm not sure if jface.text is Text or UI component. Please reassign if necessary. !ENTRY org.eclipse.ui 4 4 Mai 12, 2004 10:52:27.500 !MESSAGE Unhandled event loop exception !ENTRY org.eclipse.ui 4 0 Mai 12, 2004 10:52:27.500 !MESSAGE java.util.ConcurrentModificationException !STACK 0 java.util.ConcurrentModificationException at java.util.AbstractList$Itr.checkForComodification (AbstractList.java:448) at java.util.AbstractList$Itr.next(AbstractList.java:419) at java.util.AbstractCollection.remove(AbstractCollection.java:254) at org.eclipse.jface.text.AbstractDocument.removeDocumentListener (AbstractDocument.java:264) at org.eclipse.text.edits.UndoCollector.disconnect (UndoCollector.java:38) at org.eclipse.text.edits.TextEditProcessor.executeDo (TextEditProcessor.java:167) at org.eclipse.text.edits.TextEdit.dispatchPerformEdits (TextEdit.java:664) at org.eclipse.text.edits.TextEditProcessor.performEdits (TextEditProcessor.java:130) at org.eclipse.ltk.core.refactoring.TextChange.perform (TextChange.java:334) at org.eclipse.jdt.internal.ui.text.correction.ChangeCorrectionProposal.performCha nge(ChangeCorrectionProposal.java:101) at org.eclipse.jdt.internal.ui.text.correction.CUCorrectionProposal.performChange (CUCorrectionProposal.java:259) at org.eclipse.jdt.internal.ui.text.correction.LinkedCorrectionProposal.performCha nge(LinkedCorrectionProposal.java:195) at org.eclipse.jdt.internal.ui.text.correction.CUCorrectionProposal.apply (CUCorrectionProposal.java:289) at org.eclipse.jface.text.contentassist.CompletionProposalPopup.insertProposal (CompletionProposalPopup.java:398) at org.eclipse.jface.text.contentassist.CompletionProposalPopup.selectProposalWith Mask(CompletionProposalPopup.java:361) at org.eclipse.jface.text.contentassist.CompletionProposalPopup.access$19 (CompletionProposalPopup.java:357) at org.eclipse.jface.text.contentassist.CompletionProposalPopup$3.widgetDefaultSel ected(CompletionProposalPopup.java:322) at org.eclipse.swt.widgets.TypedListener.handleEvent (TypedListener.java:96) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:82) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:796) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:2725) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2390) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1353) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1324) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench (Workbench.java:243) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:141) at org.eclipse.ui.internal.ide.IDEApplication.run (IDEApplication.java:90) at org.eclipse.core.internal.runtime.PlatformActivator$1.run (PlatformActivator.java:298) at org.eclipse.core.runtime.adaptor.EclipseStarter.run (EclipseStarter.java:249) at org.eclipse.core.runtime.adaptor.EclipseStarter.run (EclipseStarter.java:126) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at org.eclipse.core.launcher.Main.basicRun(Main.java:269) at org.eclipse.core.launcher.Main.run(Main.java:722) at org.eclipse.core.launcher.Main.main(Main.java:706)
org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/JavaEditor.java
/**
		 * Creates a new select previous sub-word action.
		 */
		public SelectPreviousSubWordAction() {
			super(ST.SELECT_WORD_PREVIOUS);
		}
		/*
		 * @see org.eclipse.jdt.internal.ui.javaeditor.JavaEditor.PreviousSubWordAction#setCaretPosition(int)
		 */
		protected void setCaretPosition(final int position) {
			final ISourceViewer viewer= getSourceViewer();
			
			final StyledText text= viewer.getTextWidget();
			if (text != null && !text.isDisposed()) {
				
				final Point selection= text.getSelection();
				final int caret= text.getCaretOffset();
				final int offset= modelOffset2WidgetOffset(viewer, position);
				
				if (caret == selection.x)
					text.setSelectionRange(selection.y, offset - selection.y);
				else
					text.setSelectionRange(selection.x, offset - selection.x);		
			}
		}
	}
	/**
	 * Format element action to format the enclosing java element.