diff options
author | Jaxsun McCarthy Huggan | 2016-01-27 00:00:37 +0000 |
---|---|---|
committer | Gerrit Code Review @ Eclipse.org | 2016-02-01 22:49:31 +0000 |
commit | 86a71b8f9f3d06363e499a6550f072acbf3ff57b (patch) | |
tree | e518cb3ef24a9b9df534bc7af0fafd8e97d9dfe0 | |
parent | f0a2759b714e72113cbecd0ef007d25afa14e32d (diff) | |
download | org.eclipse.mylyn.tasks-86a71b8f9f3d06363e499a6550f072acbf3ff57b.tar.gz org.eclipse.mylyn.tasks-86a71b8f9f3d06363e499a6550f072acbf3ff57b.tar.xz org.eclipse.mylyn.tasks-86a71b8f9f3d06363e499a6550f072acbf3ff57b.zip |
486607: task search page reports accurate error when no searchable
repositories are present
* will report that there are no repositories only if there are none
* will report repositories do not support search when some exist but
search is not supported
* will disable the controls if there are no repositories to search
Change-Id: Iea3876c0629c131fe024b9c65024d10daa6ef88d
Task-Url: https://bugs.eclipse.org/bugs/show_bug.cgi?id=486607
Signed-off-by: Jaxsun McCarthy Huggan <jaxsun.mccarthy@tasktop.com>
6 files changed, 41 insertions, 23 deletions
diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/Messages.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/Messages.java index 8f62391ee..dd3a22d7b 100644 --- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/Messages.java +++ b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/Messages.java @@ -35,8 +35,6 @@ public class Messages extends NLS { public static String RepositoryExternalizationParticipant_Task_Repositories; - public static String TaskRepositoryManager_No_repository_available; - public static String UncategorizedTaskContainer_Uncategorized; public static String UnmatchedTaskContainer_Unmatched; diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/TaskRepositoryManager.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/TaskRepositoryManager.java index cab2b39af..657b7ab26 100644 --- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/TaskRepositoryManager.java +++ b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/TaskRepositoryManager.java @@ -66,8 +66,6 @@ public class TaskRepositoryManager implements IRepositoryManager { private final Set<TaskRepository> orphanedRepositories = new HashSet<TaskRepository>(); - public static final String MESSAGE_NO_REPOSITORY = Messages.TaskRepositoryManager_No_repository_available; - public static final String PREFIX_LOCAL = "local-"; //$NON-NLS-1$ private static final Map<String, Category> repositoryCategories = new HashMap<String, Category>(); @@ -421,7 +419,8 @@ public class TaskRepositoryManager implements IRepositoryManager { File repositoriesFile = new File(destinationPath); externalizer.writeRepositoriesToXML(repositoriesToWrite, repositoriesFile); } catch (Throwable t) { - StatusHandler.log(new Status(IStatus.ERROR, ITasksCoreConstants.ID_PLUGIN, "Could not save repositories", t)); //$NON-NLS-1$ + StatusHandler + .log(new Status(IStatus.ERROR, ITasksCoreConstants.ID_PLUGIN, "Could not save repositories", t)); //$NON-NLS-1$ return false; } return true; diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/messages.properties b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/messages.properties index 4ee411f90..a867a3aa3 100644 --- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/messages.properties +++ b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/messages.properties @@ -16,8 +16,6 @@ LocalRepositoryConnector_New_Task=New Task RepositoryExternalizationParticipant_Task_Repositories=Task Repositories -TaskRepositoryManager_No_repository_available=No repository available, please add one using the Task Repositories view. - UncategorizedTaskContainer_Uncategorized=Uncategorized UnmatchedTaskContainer_Unmatched=Unmatched diff --git a/org.eclipse.mylyn.tasks.search/src/org/eclipse/mylyn/internal/tasks/ui/TaskSearchPage.java b/org.eclipse.mylyn.tasks.search/src/org/eclipse/mylyn/internal/tasks/ui/TaskSearchPage.java index d268ed2eb..b0e4ed941 100644 --- a/org.eclipse.mylyn.tasks.search/src/org/eclipse/mylyn/internal/tasks/ui/TaskSearchPage.java +++ b/org.eclipse.mylyn.tasks.search/src/org/eclipse/mylyn/internal/tasks/ui/TaskSearchPage.java @@ -27,7 +27,6 @@ import org.eclipse.jface.layout.GridDataFactory; import org.eclipse.jface.operation.IRunnableContext; import org.eclipse.mylyn.commons.core.StatusHandler; import org.eclipse.mylyn.commons.ui.CommonImages; -import org.eclipse.mylyn.internal.tasks.core.TaskRepositoryManager; import org.eclipse.mylyn.internal.tasks.ui.search.SearchHitCollector; import org.eclipse.mylyn.internal.tasks.ui.views.TaskListView; import org.eclipse.mylyn.tasks.core.AbstractRepositoryConnector; @@ -104,6 +103,8 @@ public class TaskSearchPage extends DialogPage implements ISearchPage { private ITaskSearchPageContainer taskSearchPageContainer; + private ImageHyperlink clearKey; + public boolean performAction() { saveDialogSettings(); String key = keyText.getText(); @@ -198,7 +199,7 @@ public class TaskSearchPage extends DialogPage implements ISearchPage { } }); - ImageHyperlink clearKey = new ImageHyperlink(group, SWT.NONE); + clearKey = new ImageHyperlink(group, SWT.NONE); clearKey.setImage(CommonImages.getImage(CommonImages.REMOVE)); clearKey.addHyperlinkListener(new HyperlinkAdapter() { @@ -215,7 +216,8 @@ public class TaskSearchPage extends DialogPage implements ISearchPage { //setControlsEnabled(queryPages[currentPageIndex], false); if (queryPages != null && queryPages[currentPageIndex] != null && queryPages[currentPageIndex].getData(PAGE_KEY) instanceof AbstractRepositoryQueryPage) { - ((AbstractRepositoryQueryPage) queryPages[currentPageIndex].getData(PAGE_KEY)).setControlsEnabled(false); + ((AbstractRepositoryQueryPage) queryPages[currentPageIndex].getData(PAGE_KEY)) + .setControlsEnabled(false); } if (repositoryCombo.getSelectionIndex() > -1) { pageContainer.setPerformActionEnabled(true); @@ -229,6 +231,12 @@ public class TaskSearchPage extends DialogPage implements ISearchPage { //setControlsEnabled(queryPages[currentPageIndex], true); //pageContainer.setPerformActionEnabled(false); } + if (keyText != null && repositoryCombo != null && clearKey != null) { + boolean hasRepos = repositoryCombo.getItemCount() > 0; + keyText.setEnabled(hasRepos); + repositoryCombo.setEnabled(hasRepos); + clearKey.setEnabled(hasRepos); + } } private Control createPage(TaskRepository repository, ITaskSearchPage searchPage) { @@ -253,8 +261,8 @@ public class TaskSearchPage extends DialogPage implements ISearchPage { } // XXX: work around for initial search page size issue bug#198493 - IDialogSettings searchDialogSettings = SearchPlugin.getDefault().getDialogSettingsSection( - "DialogBounds_SearchDialog"); //$NON-NLS-1$ + IDialogSettings searchDialogSettings = SearchPlugin.getDefault() + .getDialogSettingsSection("DialogBounds_SearchDialog"); //$NON-NLS-1$ if (searchDialogSettings.get("DIALOG_WIDTH") == null) { //$NON-NLS-1$ fParentComposite.getParent().getShell().pack(); } @@ -266,7 +274,8 @@ public class TaskSearchPage extends DialogPage implements ISearchPage { ITaskSearchPage searchPage; Status status = new Status(IStatus.ERROR, TasksUiPlugin.ID_PLUGIN, "Error occurred while constructing search page for " + repository.getRepositoryUrl() + " [" //$NON-NLS-1$ //$NON-NLS-2$ - + repository.getConnectorKind() + "]", e);//$NON-NLS-1$ + + repository.getConnectorKind() + "]", //$NON-NLS-1$ + e); StatusHandler.log(status); searchPage = new DeadSearchPage(repository, status); @@ -296,7 +305,8 @@ public class TaskSearchPage extends DialogPage implements ISearchPage { if (queryPages[pageIndex] == null) { if (repository != null) { - final AbstractRepositoryConnectorUi connectorUi = TasksUiPlugin.getConnectorUi(repository.getConnectorKind()); + final AbstractRepositoryConnectorUi connectorUi = TasksUiPlugin + .getConnectorUi(repository.getConnectorKind()); if (connectorUi != null) { SafeRunner.run(new ISafeRunnable() { public void run() throws Exception { @@ -324,8 +334,8 @@ public class TaskSearchPage extends DialogPage implements ISearchPage { // update enablement of the task id field if (repository != null) { - AbstractRepositoryConnector connector = TasksUi.getRepositoryManager().getRepositoryConnector( - repository.getConnectorKind()); + AbstractRepositoryConnector connector = TasksUi.getRepositoryManager() + .getRepositoryConnector(repository.getConnectorKind()); if (connector.canCreateTaskFromKey(repository)) { keyText.setEnabled(true); } else { @@ -365,11 +375,11 @@ public class TaskSearchPage extends DialogPage implements ISearchPage { getControl().setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, true)); List<TaskRepository> repositories = TasksUi.getRepositoryManager().getAllRepositories(); - List<TaskRepository> searchableRepositories = new ArrayList<TaskRepository>(); + List<TaskRepository> searchableRepositories = new ArrayList<TaskRepository>(repositories.size()); for (TaskRepository repository : repositories) { AbstractRepositoryConnectorUi connectorUi = TasksUiPlugin.getConnectorUi(repository.getConnectorKind()); - AbstractRepositoryConnector connector = TasksUi.getRepositoryManager().getRepositoryConnector( - repository.getConnectorKind()); + AbstractRepositoryConnector connector = TasksUi.getRepositoryManager() + .getRepositoryConnector(repository.getConnectorKind()); if ((connectorUi != null && connectorUi.hasSearchPage() && !repository.isOffline()) || connector.canCreateTaskFromKey(repository)) { searchableRepositories.add(repository); @@ -396,9 +406,16 @@ public class TaskSearchPage extends DialogPage implements ISearchPage { repositoryCombo.setData(searchableRepositories.get(x).getRepositoryLabel(), searchableRepositories.get(x)); } - if (repositoryUrls.length == 0) { - MessageDialog.openInformation(Display.getCurrent().getActiveShell(), - Messages.TaskSearchPage_Repository_Search, TaskRepositoryManager.MESSAGE_NO_REPOSITORY); + if (searchableRepositories.isEmpty()) { + if (repositories.isEmpty()) { + MessageDialog.openInformation(Display.getCurrent().getActiveShell(), + Messages.TaskSearchPage_Repository_Search, + Messages.TaskSearchPage_no_available_repositories); + } else { + MessageDialog.openInformation(Display.getCurrent().getActiveShell(), + Messages.TaskSearchPage_Repository_Search, + Messages.TaskSearchPage_no_searchable_repositories); + } } else { String selectRepo = settings.get(STORE_REPO_ID); if (selectRepo != null && repositoryCombo.indexOf(selectRepo) > -1) { @@ -587,7 +604,7 @@ public class TaskSearchPage extends DialogPage implements ISearchPage { @Override public void applyTo(IRepositoryQuery query) { - // ignore + // ignore } } diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/Messages.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/Messages.java index cc283fc6e..497da2859 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/Messages.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/Messages.java @@ -101,6 +101,10 @@ public class Messages extends NLS { public static String TaskSearchPage_ERROR_Unable_to_present_query_page; + public static String TaskSearchPage_no_available_repositories; + + public static String TaskSearchPage_no_searchable_repositories; + public static String TaskSearchPage_No_task_found_matching_key_; public static String TaskSearchPage_Repository_Search; diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/messages.properties b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/messages.properties index c547bdf4a..c979b9ff1 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/messages.properties +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/messages.properties @@ -57,6 +57,8 @@ TaskRepositoryLocationUi_Enter_proxy_password=Enter proxy password TaskRepositoryLocationUi_Enter_repository_password=Enter repository password TaskSearchPage_ERROR_Unable_to_present_query_page=ERROR: Unable to present query page, ensure repository configuration is valid and retry +TaskSearchPage_no_available_repositories=There are no repositories configured, please add one using the Task Repositories view. +TaskSearchPage_no_searchable_repositories=None of the available online repositories support task search. TaskSearchPage_No_task_found_matching_key_=No task found matching key: TaskSearchPage_Repository_Search=Repository Search |