diff options
author | Frank Becker | 2012-02-24 17:05:11 +0000 |
---|---|---|
committer | Frank Becker | 2012-02-24 17:09:38 +0000 |
commit | 9ea9b42eb42dcd99a8038f51b2596f0266f8f0e0 (patch) | |
tree | 48d9341e2428c86d56811018a5c75c8ad6232071 | |
parent | 14c951535f824a1031036fb4e456605bdeb7fd1e (diff) | |
download | org.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
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 |