430227: disable refresh and validate buttons if the Server url is not
provided or is invalid
refresh and validate buttons are disabled until valid http(s)
is followed by a server url
Change-Id: I49545c0579e5dc3b8de1a99b9aa58696ac745138
Task-Url: https://bugs.eclipse.org/bugs/show_bug.cgi?id=430227
Signed-off-by: Natasha Carson <natasha.carson@tasktop.com>
diff --git a/org.eclipse.mylyn.builds.ui/src/org/eclipse/mylyn/builds/ui/spi/BuildServerPart.java b/org.eclipse.mylyn.builds.ui/src/org/eclipse/mylyn/builds/ui/spi/BuildServerPart.java
index e69db36..49b9d1f 100644
--- a/org.eclipse.mylyn.builds.ui/src/org/eclipse/mylyn/builds/ui/spi/BuildServerPart.java
+++ b/org.eclipse.mylyn.builds.ui/src/org/eclipse/mylyn/builds/ui/spi/BuildServerPart.java
@@ -17,6 +17,7 @@
import java.util.List;
import java.util.Set;
+import org.eclipse.core.databinding.UpdateValueStrategy;
import org.eclipse.core.runtime.Assert;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
@@ -71,6 +72,26 @@
*/
public class BuildServerPart extends RepositoryLocationPart {
+ private boolean urlValid = false;
+
+ private Button refreshButton = null;
+
+ public class BuildServerPartUrlValidator extends UrlValidator {
+ public IStatus validate(Object value) {
+ IStatus validationStatus = super.validate(value);
+ urlValid = validationStatus == Status.OK_STATUS;
+ if (refreshButton != null) {
+ refreshButton.setEnabled(urlValid);
+ }
+ return validationStatus;
+ }
+ }
+
+ @Override
+ protected UpdateValueStrategy getUrlUpdateValueStrategy() {
+ return new UpdateValueStrategy().setAfterConvertValidator(new BuildServerPartUrlValidator());
+ }
+
private class CheckboxFilteredTree extends FilteredTree {
public CheckboxFilteredTree(Composite parent, int treeStyle, PatternFilter filter) {
@@ -121,8 +142,8 @@
}
return result;
} catch (CoreException e) {
- return new Status(IStatus.ERROR, BuildsUiPlugin.ID_PLUGIN, NLS.bind("Server validation failed: {0}",
- e.getMessage()), e);
+ return new Status(IStatus.ERROR, BuildsUiPlugin.ID_PLUGIN,
+ NLS.bind("Server validation failed: {0}", e.getMessage()), e);
}
}
@@ -167,11 +188,11 @@
@Override
public boolean canValidate() {
- return true;
+ return super.canValidate() && urlValid;
}
private void createButtons(Composite section) {
- Button refreshButton = new Button(section, SWT.PUSH);
+ refreshButton = new Button(section, SWT.PUSH);
GridDataFactory.fillDefaults().grab(true, false).applyTo(refreshButton);
refreshButton.setText("&Refresh");
refreshButton.addSelectionListener(new SelectionAdapter() {
@@ -180,6 +201,7 @@
validate();
}
});
+ refreshButton.setEnabled(urlValid);
Button selectAllButton = new Button(section, SWT.PUSH);
GridDataFactory.fillDefaults().grab(true, false).applyTo(selectAllButton);