tuleap #785 File dialog should stay opened when the file could not be found.

Change-Id: I0397b8a3dd71bff626902ae0fdff308c1b907c10
Signed-off-by: Jacques Bouthillier <lmcbout@gmail.com>
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/FilesDialog.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/FilesDialog.java
index d8c102c..f70e3a4 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/FilesDialog.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/editors/FilesDialog.java
@@ -135,8 +135,10 @@
 		fViewer = tableUIFiles.getViewer();
 		//Create a second listener to close the dialog
 		fViewer.addDoubleClickListener(event -> {
-			storeDialogSettings();
-			FilesDialog.this.close();
+			if (tableUIFiles.isSelectionOk()) {
+				storeDialogSettings();
+				FilesDialog.this.close();
+			}
 		});
 		tableUIFiles.setDialogSelection();
 		createFilterArea(composite, tableUIFiles);
@@ -159,16 +161,6 @@
 			}
 		});
 
-		fViewer.getTable().addKeyListener(new KeyAdapter() {
-			@Override
-			public void keyPressed(KeyEvent e) {
-				if (e.keyCode == SWT.SPACE) {
-					HandleFileSelection handleSelection = new HandleFileSelection(fGerritClient, fViewer);
-					handleSelection.showFileSelection();
-					return;
-				}
-			}
-		});
 		//Add Navigation Listener
 		Control[] children = getChildren(composite);
 		addNavigationListener(children);
@@ -200,7 +192,10 @@
 	protected void buttonPressed(int buttonId) {
 		if (buttonId == IDialogConstants.OK_ID) {
 			HandleFileSelection handleSelection = new HandleFileSelection(fGerritClient, fViewer);
-			handleSelection.showFileSelection();
+			boolean selectionOk = handleSelection.showFileSelection();
+			if (!selectionOk) {
+				return; //Keep the FileDialog open since the selected file is not available in the workspace
+			}
 			storeDialogSettings();
 		}
 
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/UIFilesTable.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/UIFilesTable.java
index ba275d0..a55f739 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/UIFilesTable.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/UIFilesTable.java
@@ -70,6 +70,8 @@
 public class UIFilesTable {
 	private boolean popupEnabled = true;
 
+	private boolean selectionOk = true;
+
 	private boolean filterDeletedFiles = false;
 
 	private boolean filterCommitMsgFile = false;
@@ -341,7 +343,7 @@
 		IDoubleClickListener doubleClickListener = event -> {
 			if (!popupEnabled) {
 				HandleFileSelection handleSelection = new HandleFileSelection(fGerritClient, fViewer);
-				handleSelection.showFileSelection();
+				selectionOk = handleSelection.showFileSelection();
 			} else {
 				IStructuredSelection sel = (IStructuredSelection) event.getSelection();
 				Object element = sel.getFirstElement();
@@ -425,7 +427,7 @@
 							EMFProperties.value(draftCount) });
 			fViewer.setLabelProvider(new FileTableLabelProvider(watchedProperties));
 
-			IObservableList revisionFiles = null;
+			IObservableList<?> revisionFiles = null;
 			if (fChangeInfo != null) {
 				FeaturePath changerev = FeaturePath.fromList(ModelPackage.Literals.CHANGE_INFO__USER_SELECTED_REVISION,
 						ModelPackage.Literals.REVISION_INFO__FILES);
@@ -441,6 +443,11 @@
 		loader.dispose();
 	}
 
+	/**
+	 * Get the persistent storage settings
+	 *
+	 * @return IDialogSettings
+	 */
 	public IDialogSettings getDialogSettings() {
 		if (persistStorage == null) {
 			persistStorage = new PersistentStorage(fViewer, storageSectionName);
@@ -448,4 +455,10 @@
 		return persistStorage.getDialogSettings(storageSectionName);
 	}
 
+	/**
+	 * @return true when the file selection is found in the workspace
+	 */
+	public boolean isSelectionOk() {
+		return selectionOk;
+	}
 }
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/provider/DynamicMenuBuilder.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/provider/DynamicMenuBuilder.java
index 5a028bf..8a5580d 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/provider/DynamicMenuBuilder.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/provider/DynamicMenuBuilder.java
@@ -181,7 +181,7 @@
 
 			@Override
 			public void widgetSelected(SelectionEvent e) {
-				HandleFileSelection handleSelection = new HandleFileSelection(client, viewer);
+				HandleFileSelection handleSelection = new HandleFileSelection(client, viewer);//Open the workspace file from the context menu
 				handleSelection.showFileSelection();
 			}
 
diff --git a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/provider/HandleFileSelection.java b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/provider/HandleFileSelection.java
index d3ecddc..748d4d8 100644
--- a/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/provider/HandleFileSelection.java
+++ b/org.eclipse.egerrit.ui/src/org/eclipse/egerrit/internal/ui/table/provider/HandleFileSelection.java
@@ -43,8 +43,11 @@
 
 	/**
 	 * Open the selected file in the Files table and open the workspace file
+	 *
+	 * @return boolean
 	 */
-	public void showFileSelection() {
+	public boolean showFileSelection() {
+		boolean ok = true;
 		ISelection selection = fViewer.getSelection();
 		if (selection instanceof IStructuredSelection) {
 
@@ -56,8 +59,10 @@
 			}
 			if (!failedFiles.isEmpty()) {
 				UIUtils.displayInformation(Messages.UIFilesTable_3, Messages.UIFilesTable_2 + '\n' + failedFiles);
+				ok = false;
 			}
 		}
+		return ok;
 
 	}