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;
}