Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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 575d8fcb9e..967a672f74 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 45c5d86e14..b71a4af26e 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 904cb84fcd..05a73c539d 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

Back to the top