Bug 81733 RefactoringWizardDialog - ErrorPage - action buttons "Next Problem", "Previous Problem" do not work correctly
If a refactoring (checkFinalConditions method) finishes with a refactoring status, that has several entries with different severities, the following situation can happen: Action buttons "Next Problem", "Previous Problem" do not work correctly. (For example the button "Previous" does nothing.) Explanation: There is a bug. The list of entries is retrieved from a RefactoringStatus object and put into a RefactoringStatusViewer. The viewer sorts the items, using RefactoringStatusSorter. The implementation of RefactoringStatusViewer.revealElement(boolean) is wrong, because this takes the index from the table: int index= fTableViewer.getTable().getSelectionIndex(); but this index refers to an index in the sorted list and the code: if (doIt) fTableViewer.setSelection(new StructuredSelection(entries[index])); refers the index (increased or decreased) to the original list of entries (unsorted). The result is a mess after clicking on Next or Previous button.
org.eclipse.ltk.ui.refactoring/src/org/eclipse/ltk/internal/ui/refactoring/RefactoringStatusViewer.java
private TableViewer fTableViewer;
	private PageBook fContextViewerContainer;
	private StatusContextViewerDescriptor fCurrentDescriptor;
	private IStatusContextViewer fCurrentContextViewer;
	private NullContextViewer fNullContextViewer;
	
	private NextProblem fNextProblem;
	private PreviousProblem fPreviousProblem;
	
	public RefactoringStatusViewer(Composite parent, int style) {
		super(parent, style | SWT.VERTICAL);
		createContents();
	}
	/**
	 * Sets the refactoring status.
	 * 
	 * @param status the refactoring status.
	 */
	public void setStatus(RefactoringStatus status){
		fStatus= status;
		if (fTableViewer.getInput() != fStatus) {
			fTableViewer.setInput(fStatus);
			fTableViewer.getTable().getColumn(0).pack();
			ISelection selection= fTableViewer.getSelection();
			if (selection.isEmpty()) {
				RefactoringStatusEntry entry= getFirstEntry();
				if (entry != null) {
					fTableViewer.setSelection(new StructuredSelection(entry));
					showContextViewer(entry);
					fTableViewer.getControl().setFocus();