diff options
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(); } |