aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRemy Suen2010-05-14 18:34:54 (EDT)
committerRemy Suen2010-05-14 18:34:54 (EDT)
commit7c48242225178bbd879149e61423a036574f9206 (patch)
tree211fba31ca980839dac7f0f1c0c02315794da6bb
parentdf6aff2361256f113da4dbead00d286afec560a0 (diff)
downloadegit-7c48242225178bbd879149e61423a036574f9206.zip
egit-7c48242225178bbd879149e61423a036574f9206.tar.gz
egit-7c48242225178bbd879149e61423a036574f9206.tar.bz2
Improve error validation in the patch wizardrefs/changes/03/703/1
Currently, no error messages are presented to the user for invalid input into the wizard. This is very unhelpful as the user may not know what is wrong with their input. Switching to the clipboard mode may also not clear the error message due to an error in the validation logic. To also help prevent the user from entering data that may not end up being processed, controls are now enabled and disabled based on which radio button has been selected. Change-Id: I50998266c213deabec4a01a44024d95015a56b55
-rw-r--r--org.eclipse.egit.ui/src/org/eclipse/egit/ui/UIText.java12
-rw-r--r--org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/history/GitCreatePatchWizard.java39
-rw-r--r--org.eclipse.egit.ui/src/org/eclipse/egit/ui/uitext.properties4
3 files changed, 44 insertions, 11 deletions
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/UIText.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/UIText.java
index 575d8fc..967a672 100644
--- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/UIText.java
+++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/UIText.java
@@ -1849,6 +1849,18 @@ public class UIText extends NLS {
public static String GitCreatePatchWizard_SelectOptionsTitle;
/** */
+ public static String GitCreatePatchWizard_FilesystemError;
+
+ /** */
+ public static String GitCreatePatchWizard_FilesystemInvalidError;
+
+ /** */
+ public static String GitCreatePatchWizard_FilesystemDirectoryError;
+
+ /** */
+ public static String GitCreatePatchWizard_FilesystemDirectoryNotExistsError;
+
+ /** */
public static String GitCreateProjectViaWizardWizard_AbortedMessage;
/** */
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/history/GitCreatePatchWizard.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/history/GitCreatePatchWizard.java
index 45c5d86..b71a4af 100644
--- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/history/GitCreatePatchWizard.java
+++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/history/GitCreatePatchWizard.java
@@ -265,8 +265,6 @@ public class GitCreatePatchWizard extends Wizard {
private Button fsBrowseButton;
- private boolean canValidate = true;
-
private boolean pageValid;
/**
@@ -285,6 +283,7 @@ public class GitCreatePatchWizard extends Wizard {
gridLayout.numColumns = 3;
composite.setLayout(gridLayout);
composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ initializeDialogUnits(composite);
setControl(composite);
// clipboard
@@ -293,15 +292,18 @@ public class GitCreatePatchWizard extends Wizard {
cpRadio = new Button(composite, SWT.RADIO);
cpRadio.setText(UIText.GitCreatePatchWizard_Clipboard);
cpRadio.setLayoutData(gd);
+ cpRadio.setSelection(true);
// filesystem
fsRadio = new Button(composite, SWT.RADIO);
fsRadio.setText(UIText.GitCreatePatchWizard_File);
+ fsRadio.setSelection(false);
fsPathText = new Text(composite, SWT.BORDER);
gd = new GridData(GridData.FILL_HORIZONTAL);
fsPathText.setLayoutData(gd);
fsPathText.setText(createFileName());
+ fsPathText.setEnabled(false);
fsBrowseButton = new Button(composite, SWT.PUSH);
fsBrowseButton.setText(UIText.GitCreatePatchWizard_Browse);
@@ -311,10 +313,25 @@ public class GitCreatePatchWizard extends Wizard {
SWT.DEFAULT, true);
data.widthHint = Math.max(widthHint, minSize.x);
fsBrowseButton.setLayoutData(data);
+ fsBrowseButton.setEnabled(false);
+
+ cpRadio.addListener(SWT.Selection, new Listener() {
+ public void handleEvent(Event event) {
+ // disable other input controls
+ fsPathText.setEnabled(false);
+ fsBrowseButton.setEnabled(false);
+ validatePage();
+ }
+ });
fsRadio.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event event) {
+ // enable filesystem input controls
+ fsPathText.setEnabled(true);
+ fsBrowseButton.setEnabled(true);
+ // set focus to filesystem input text control
+ fsPathText.setFocus();
validatePage();
}
});
@@ -372,11 +389,11 @@ public class GitCreatePatchWizard extends Wizard {
* @return page is valid
*/
protected boolean validatePage() {
- if (!canValidate)
- return false;
-
- if (fsRadio.getSelection())
+ if (fsRadio.getSelection()) {
pageValid = validateFilesystemLocation();
+ } else if (cpRadio.getSelection()) {
+ pageValid = true;
+ }
/**
* Avoid draw flicker by clearing error message if all is valid.
@@ -401,29 +418,29 @@ public class GitCreatePatchWizard extends Wizard {
final String pathString = fsPathText.getText().trim();
if (pathString.length() == 0
|| !new Path("").isValidPath(pathString)) { //$NON-NLS-1$
- setErrorMessage(""); //$NON-NLS-1$
+ setErrorMessage(UIText.GitCreatePatchWizard_FilesystemError);
return false;
}
final File file = new File(pathString);
if (!file.isAbsolute()) {
- setErrorMessage(""); //$NON-NLS-1$
+ setErrorMessage(UIText.GitCreatePatchWizard_FilesystemInvalidError);
return false;
}
if (file.isDirectory()) {
- setErrorMessage(""); //$NON-NLS-1$
+ setErrorMessage(UIText.GitCreatePatchWizard_FilesystemDirectoryError);
return false;
}
if (pathString.endsWith("/") || pathString.endsWith("\\")) { //$NON-NLS-1$//$NON-NLS-2$
- setErrorMessage(""); //$NON-NLS-1$
+ setErrorMessage(UIText.GitCreatePatchWizard_FilesystemDirectoryNotExistsError);
return false;
}
final File parent = file.getParentFile();
if (!(parent.exists() && parent.isDirectory())) {
- setErrorMessage(""); //$NON-NLS-1$
+ setErrorMessage(UIText.GitCreatePatchWizard_FilesystemDirectoryNotExistsError);
return false;
}
return true;
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/uitext.properties b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/uitext.properties
index 904cb84..05a73c5 100644
--- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/uitext.properties
+++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/uitext.properties
@@ -661,6 +661,10 @@ GitCreatePatchWizard_SelectLocationDescription=Select the location for the patch
GitCreatePatchWizard_SelectLocationTitle=Create a Patch
GitCreatePatchWizard_SelectOptionsDescription=Select options for patch creation
GitCreatePatchWizard_SelectOptionsTitle=Select options
+GitCreatePatchWizard_FilesystemError=Please select a location in the filesystem by browsing.
+GitCreatePatchWizard_FilesystemInvalidError=Please enter a valid location.
+GitCreatePatchWizard_FilesystemDirectoryError=Please enter a file name.
+GitCreatePatchWizard_FilesystemDirectoryNotExistsError=The specified directory does not exist.
GitCreateProjectViaWizardWizard_AbortedMessage=Action was aborted
GitCreateProjectViaWizardWizard_WizardTitle=Import projects from Git Repository {0}
GitImportProjectsWizard_ImportExistingProjects0=Import existing projects