394809: ArrayIndexOutOfBoundsException when selecting the down arrow in
the R4E navigator view

Task-Url: https://bugs.eclipse.org/bugs/show_bug.cgi?id=394809
diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/internal/commands/handlers/SelectNextHandler.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/internal/commands/handlers/SelectNextHandler.java
index d9ba76a..974ce45 100644
--- a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/internal/commands/handlers/SelectNextHandler.java
+++ b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/internal/commands/handlers/SelectNextHandler.java
@@ -76,7 +76,7 @@
 			public IStatus runInUIThread(IProgressMonitor monitor) {
 				monitor.beginTask(COMMAND_MESSAGE, 1);
 
-				if (!selectedElements.isEmpty()) {
+				if (selectedElements != null && !selectedElements.isEmpty()) {
 					final ReviewNavigatorView view = R4EUIModelController.getNavigatorView();
 
 					//Get the previous element
@@ -113,8 +113,14 @@
 	 * @return IR4EUIModelElement
 	 */
 	private IR4EUIModelElement getNextElement(ReviewNavigatorTreeViewer aTreeViewer) {
-		final TreeItem item = aTreeViewer.getTree().getSelection()[0];
-		final TreeItem nextItem = aTreeViewer.getNext(item);
-		return (IR4EUIModelElement) nextItem.getData();
+		final TreeItem[] item = aTreeViewer.getTree().getSelection();
+		if (item.length == 0) {
+			//No item selected, so just return
+			return null;
+		} else {
+			final TreeItem nextItem = aTreeViewer.getNext(item[0]);
+			return (IR4EUIModelElement) nextItem.getData();
+
+		}
 	}
 }
diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/internal/commands/handlers/SelectPreviousHandler.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/internal/commands/handlers/SelectPreviousHandler.java
index 80766d8..afc054a 100644
--- a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/internal/commands/handlers/SelectPreviousHandler.java
+++ b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/internal/commands/handlers/SelectPreviousHandler.java
@@ -76,7 +76,7 @@
 			public IStatus runInUIThread(IProgressMonitor monitor) {
 				monitor.beginTask(COMMAND_MESSAGE, 1);
 
-				if (!selectedElements.isEmpty()) {
+				if (selectedElements != null && !selectedElements.isEmpty()) {
 					final ReviewNavigatorView view = R4EUIModelController.getNavigatorView();
 
 					//Get the previous element
@@ -113,8 +113,14 @@
 	 * @return IR4EUIModelElement
 	 */
 	private IR4EUIModelElement getPreviousElement(ReviewNavigatorTreeViewer aTreeViewer) {
-		final TreeItem item = aTreeViewer.getTree().getSelection()[0];
-		final TreeItem previousItem = aTreeViewer.getPrevious(item);
-		return (IR4EUIModelElement) previousItem.getData();
+		final TreeItem[] item = aTreeViewer.getTree().getSelection();
+		if (item.length == 0) {
+			//No item selected, so just return
+			return null;
+		} else {
+			final TreeItem previousItem = aTreeViewer.getPrevious(item[0]);
+			return (IR4EUIModelElement) previousItem.getData();
+		}
+
 	}
 }