Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrank Becker2012-02-24 17:05:11 +0000
committerFrank Becker2012-02-24 17:09:38 +0000
commit9ea9b42eb42dcd99a8038f51b2596f0266f8f0e0 (patch)
tree48d9341e2428c86d56811018a5c75c8ad6232071
parent14c951535f824a1031036fb4e456605bdeb7fd1e (diff)
downloadorg.eclipse.mylyn.tasks-9ea9b42eb42dcd99a8038f51b2596f0266f8f0e0.tar.gz
org.eclipse.mylyn.tasks-9ea9b42eb42dcd99a8038f51b2596f0266f8f0e0.tar.xz
org.eclipse.mylyn.tasks-9ea9b42eb42dcd99a8038f51b2596f0266f8f0e0.zip
ASSIGNED - bug 370331: automatically validate when pressing finish on
repository setting page https://bugs.eclipse.org/bugs/show_bug.cgi?id=370331 Change-Id: I19027cd18387872e72bd3995f86270de636b440b
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaRepositorySettingsPage.java1
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/EditRepositoryWizard.java58
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/Messages.java2
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/messages.properties1
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/wizards/AbstractRepositorySettingsPage.java43
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/wizards/AbstractTaskRepositoryPage.java13
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/wizards/ITaskRepositoryPage.java12
7 files changed, 100 insertions, 30 deletions
diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaRepositorySettingsPage.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaRepositorySettingsPage.java
index 49c8b55e3..ce31a72a4 100644
--- a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaRepositorySettingsPage.java
+++ b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaRepositorySettingsPage.java
@@ -131,6 +131,7 @@ public class BugzillaRepositorySettingsPage extends AbstractRepositorySettingsPa
setNeedsEncoding(true);
setNeedsTimeZone(false);
setNeedsHttpAuth(true);
+ setNeedsValidateOnFinish(true);
}
@Override
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/EditRepositoryWizard.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/EditRepositoryWizard.java
index 7ede44201..8f791840b 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/EditRepositoryWizard.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/EditRepositoryWizard.java
@@ -54,37 +54,39 @@ public class EditRepositoryWizard extends Wizard implements INewWizard {
@Override
public boolean performFinish() {
if (canFinish()) {
- String oldUrl = repository.getRepositoryUrl();
- String newUrl = settingsPage.getRepositoryUrl();
- if (oldUrl != null && newUrl != null && !oldUrl.equals(newUrl)) {
- TasksUi.getTaskActivityManager().deactivateActiveTask();
+ boolean finishAccepted = settingsPage.preFinish(repository);
+ if (finishAccepted) {
+ String oldUrl = repository.getRepositoryUrl();
+ String newUrl = settingsPage.getRepositoryUrl();
+ if (oldUrl != null && newUrl != null && !oldUrl.equals(newUrl)) {
+ TasksUi.getTaskActivityManager().deactivateActiveTask();
- RefactorRepositoryUrlOperation operation = new RefactorRepositoryUrlOperation(repository, oldUrl,
- newUrl);
- try {
- getContainer().run(true, false, operation);
- } catch (InvocationTargetException e) {
- StatusManager.getManager().handle(
- new Status(IStatus.WARNING, TasksUiPlugin.ID_PLUGIN,
- Messages.EditRepositoryWizard_Failed_to_refactor_repository_urls),
- StatusManager.SHOW | StatusManager.LOG);
- return false;
- } catch (InterruptedException e) {
- // should not get here
+ RefactorRepositoryUrlOperation operation = new RefactorRepositoryUrlOperation(repository, oldUrl,
+ newUrl);
+ try {
+ getContainer().run(true, false, operation);
+ } catch (InvocationTargetException e) {
+ StatusManager.getManager().handle(
+ new Status(IStatus.WARNING, TasksUiPlugin.ID_PLUGIN,
+ Messages.EditRepositoryWizard_Failed_to_refactor_repository_urls),
+ StatusManager.SHOW | StatusManager.LOG);
+ return false;
+ } catch (InterruptedException e) {
+ // should not get here
+ }
}
+ if (!repository.getConnectorKind().equals(LocalRepositoryConnector.CONNECTOR_KIND)) {
+ repository.setRepositoryUrl(newUrl);
+ }
+ settingsPage.performFinish(repository);
+ if (oldUrl != null && newUrl != null && !oldUrl.equals(newUrl)) {
+ TasksUiPlugin.getRepositoryManager().notifyRepositoryUrlChanged(repository, oldUrl);
+ }
+ TasksUiPlugin.getRepositoryManager().notifyRepositorySettingsChanged(repository,
+ new TaskRepositoryDelta(Type.ALL));
+ TasksUiPlugin.getExternalizationManager().requestSave();
}
-
- if (!repository.getConnectorKind().equals(LocalRepositoryConnector.CONNECTOR_KIND)) {
- repository.setRepositoryUrl(newUrl);
- }
- settingsPage.performFinish(repository);
- if (oldUrl != null && newUrl != null && !oldUrl.equals(newUrl)) {
- TasksUiPlugin.getRepositoryManager().notifyRepositoryUrlChanged(repository, oldUrl);
- }
- TasksUiPlugin.getRepositoryManager().notifyRepositorySettingsChanged(repository,
- new TaskRepositoryDelta(Type.ALL));
- TasksUiPlugin.getExternalizationManager().requestSave();
- return true;
+ return finishAccepted;
}
return false;
}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/Messages.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/Messages.java
index a18e181dd..e43408344 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/Messages.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/Messages.java
@@ -241,6 +241,8 @@ public class Messages extends NLS {
public static String AbstractRepositorySettingsPage_User_ID_;
+ public static String AbstractRepositorySettingsPage_Validate_on_Finish;
+
public static String AbstractRepositorySettingsPage_Validate_Settings;
public static String AbstractRepositorySettingsPage_Validate_Settings_Button_Label;
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/messages.properties b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/messages.properties
index eae725128..8233fce49 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/messages.properties
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/messages.properties
@@ -130,6 +130,7 @@ AbstractRepositorySettingsPage_Server_=Server\:\
AbstractRepositorySettingsPage_Unable_to_authenticate_with_repository=Unable to authenticate with repository. Login credentials invalid.
AbstractRepositorySettingsPage_Use_global_Network_Connections_preferences=Use global Network Connections preferences
AbstractRepositorySettingsPage_User_ID_=User ID\:\
+AbstractRepositorySettingsPage_Validate_on_Finish=Validate on Finish
AbstractRepositorySettingsPage_Validate_Settings=&Validate Settings
AbstractRepositorySettingsPage_Validate_Settings_Button_Label=&Validate Settings
AbstractRepositorySettingsPage_Validating_server_settings=Validating server settings
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/wizards/AbstractRepositorySettingsPage.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/wizards/AbstractRepositorySettingsPage.java
index 85dfd39d3..76f9b3ae9 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/wizards/AbstractRepositorySettingsPage.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/wizards/AbstractRepositorySettingsPage.java
@@ -174,6 +174,8 @@ public abstract class AbstractRepositorySettingsPage extends AbstractTaskReposit
private boolean needsValidation;
+ private boolean needsValidateOnFinish;
+
private boolean needsAdvanced;
protected Composite compositeContainer;
@@ -229,6 +231,10 @@ public abstract class AbstractRepositorySettingsPage extends AbstractTaskReposit
private Button disconnectedButton;
+ private Button validateOnFinishButton;
+
+ private boolean isValid;
+
/**
* @since 3.0
*/
@@ -242,6 +248,7 @@ public abstract class AbstractRepositorySettingsPage extends AbstractTaskReposit
setNeedsProxy(true);
setNeedsValidation(true);
setNeedsAdvanced(true);
+ setNeedsValidateOnFinish(false);
}
/**
@@ -278,7 +285,11 @@ public abstract class AbstractRepositorySettingsPage extends AbstractTaskReposit
createSettingControls(compositeContainer);
createValidationControls(compositeContainer);
-
+ if (needsValidateOnFinish()) {
+ validateOnFinishButton = new Button(compositeContainer, SWT.CHECK);
+ validateOnFinishButton.setText(Messages.AbstractRepositorySettingsPage_Validate_on_Finish);
+ validateOnFinishButton.setSelection(true);
+ }
Dialog.applyDialogFont(compositeContainer);
setControl(compositeContainer);
}
@@ -1963,6 +1974,8 @@ public abstract class AbstractRepositorySettingsPage extends AbstractTaskReposit
break;
}
setErrorMessage(null);
+
+ isValid = status.getSeverity() == IStatus.OK || status.getSeverity() == IStatus.INFO;
}
/**
@@ -2017,4 +2030,32 @@ public abstract class AbstractRepositorySettingsPage extends AbstractTaskReposit
return null;
}
+ /**
+ * @since 3.7
+ */
+ public boolean needsValidateOnFinish() {
+ return needsValidateOnFinish;
+ }
+
+ /**
+ * @since 3.7
+ */
+ public void setNeedsValidateOnFinish(boolean needsValidateOnFinish) {
+ this.needsValidateOnFinish = needsValidateOnFinish;
+ }
+
+ @Override
+ public boolean preFinish(TaskRepository repository) {
+ if (validateOnFinishButton != null && validateOnFinishButton.getSelection()) {
+ isValid = false;
+ validateSettings();
+ } else {
+ isValid = true;
+ }
+ if (isValid) {
+ isValid = super.preFinish(repository);
+ }
+ return isValid;
+ }
+
}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/wizards/AbstractTaskRepositoryPage.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/wizards/AbstractTaskRepositoryPage.java
index 8546beaad..67878e03d 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/wizards/AbstractTaskRepositoryPage.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/wizards/AbstractTaskRepositoryPage.java
@@ -288,6 +288,19 @@ public abstract class AbstractTaskRepositoryPage extends WizardPage implements I
}
/**
+ * {@inheritDoc}
+ * <p>
+ * Invokes {@link #applyTo(TaskRepository)} by default. Client may override.
+ *
+ * @since 3.7
+ * @return true to indicate the finish request was accepted, and false to indicate that the finish request was
+ * refused
+ */
+ public boolean preFinish(TaskRepository repository) {
+ return true;
+ }
+
+ /**
* Returns a status if there is a message to display, otherwise null.
*/
private IStatus computeValidation() {
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/wizards/ITaskRepositoryPage.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/wizards/ITaskRepositoryPage.java
index 343af0c71..89275734e 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/wizards/ITaskRepositoryPage.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/wizards/ITaskRepositoryPage.java
@@ -47,6 +47,16 @@ public interface ITaskRepositoryPage extends IWizardPage {
* @since 3.6
* @see #applyTo(TaskRepository)
*/
- public abstract void performFinish(TaskRepository repository);
+ public void performFinish(TaskRepository repository);
+
+ /**
+ * Invoked when the wizard that contains page finishes. This method should validate all entered data to the
+ * <code>repository</code> object.
+ *
+ * @since 3.7
+ * @return true to indicate the validation request was successful, and false to indicate that the validation request
+ * was not successful
+ */
+ public abstract boolean preFinish(TaskRepository repository);
} \ No newline at end of file

Back to the top