diff options
author | Sam Davis | 2015-11-12 18:58:22 +0000 |
---|---|---|
committer | Gerrit Code Review @ Eclipse.org | 2015-11-25 20:01:21 +0000 |
commit | 335845982b92dd656e781e26e7ab1d64cc28d049 (patch) | |
tree | bdf729b8141fe90035b0aef7a82c8e896eb872de /org.eclipse.mylyn.tasks.ui | |
parent | cc0295a24e13d01c25b764ca6a7c0302f97781aa (diff) | |
download | org.eclipse.mylyn.tasks-335845982b92dd656e781e26e7ab1d64cc28d049.tar.gz org.eclipse.mylyn.tasks-335845982b92dd656e781e26e7ab1d64cc28d049.tar.xz org.eclipse.mylyn.tasks-335845982b92dd656e781e26e7ab1d64cc28d049.zip |
482633: [api] connectors can suggest query titles
Change-Id: I448d467b1442150bccf984494007d44f3362e67e
Task-Url: https://bugs.eclipse.org/bugs/show_bug.cgi?id=482633
Diffstat (limited to 'org.eclipse.mylyn.tasks.ui')
2 files changed, 43 insertions, 1 deletions
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/wizards/AbstractRepositoryQueryPage2.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/wizards/AbstractRepositoryQueryPage2.java index 1271e5cf6..fe74062c0 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/wizards/AbstractRepositoryQueryPage2.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/wizards/AbstractRepositoryQueryPage2.java @@ -50,6 +50,9 @@ import org.eclipse.swt.widgets.Text; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.progress.IProgressService; +import com.google.common.base.Objects; +import com.google.common.base.Strings; + /** * @author Steffen Pingel * @author Frank Becker @@ -81,6 +84,10 @@ public abstract class AbstractRepositoryQueryPage2 extends AbstractRepositoryQue private Text titleText; + private boolean titleWasSuggested; + + private boolean editQueryTitleInProgress; + public AbstractRepositoryQueryPage2(String pageName, TaskRepository repository, IRepositoryQuery query) { super(pageName, repository, query); this.connector = TasksUi.getRepositoryConnector(getTaskRepository().getConnectorKind()); @@ -145,6 +152,33 @@ public abstract class AbstractRepositoryQueryPage2 extends AbstractRepositoryQue return false; } + /** + * Allows connectors to suggest a query title. As long as the title field does not contain edits made by the user, + * the field will be updated with the suggestion whenever the button enablement is updated. + * + * @return a query title suggested based on the query parameters, or the empty string + * @since 3.18 + */ + @NonNull + protected String suggestQueryTitle() { + return ""; //$NON-NLS-1$ + } + + /** + * Called by the framework to update the title from the suggestion. + */ + void updateTitleFromSuggestion() { + if (editQueryTitleInProgress) { + titleWasSuggested = false; + } else if (titleWasSuggested + || Strings.isNullOrEmpty(getQueryTitle()) + || (getQuery() != null && Objects.equal(getQuery().getSummary(), getQueryTitle()) && suggestQueryTitle().equals( + getQueryTitle()))) { + setQueryTitle(suggestQueryTitle()); + titleWasSuggested = true; + } + } + public boolean needsClear() { return needsClear; } @@ -266,7 +300,12 @@ public abstract class AbstractRepositoryQueryPage2 extends AbstractRepositoryQue GridDataFactory.fillDefaults().align(SWT.FILL, SWT.TOP).grab(true, false).applyTo(titleText); titleText.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent e) { - getContainer().updateButtons(); + try { + editQueryTitleInProgress = true; + getContainer().updateButtons(); + } finally { + editQueryTitleInProgress = false; + } } }); } diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/wizards/RepositoryQueryWizard.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/wizards/RepositoryQueryWizard.java index 740a9e628..e9bee0dea 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/wizards/RepositoryQueryWizard.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/wizards/RepositoryQueryWizard.java @@ -51,6 +51,9 @@ public class RepositoryQueryWizard extends Wizard { @Override public boolean canFinish() { IWizardPage currentPage = getContainer().getCurrentPage(); + if (currentPage instanceof AbstractRepositoryQueryPage2) { + ((AbstractRepositoryQueryPage2) currentPage).updateTitleFromSuggestion(); + } if (currentPage instanceof AbstractRepositoryQueryPage) { return currentPage.isPageComplete(); } |