blob: d1979db57592d8963673259f0100dd3ac293f440 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004, 2011 Tasktop Technologies and others.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* https://www.eclipse.org/legal/epl-2.0
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Balazs Brinkus - initial API and implementation
* Tasktop Technologies - improvements
*******************************************************************************/
package org.eclipse.mylyn.internal.tasks.ui.search;
import java.text.MessageFormat;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.dialogs.InputDialog;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.window.Window;
import org.eclipse.mylyn.internal.tasks.core.RepositoryQuery;
import org.eclipse.mylyn.internal.tasks.ui.util.TasksUiInternal;
import org.eclipse.mylyn.internal.tasks.ui.views.TaskListView;
import org.eclipse.mylyn.tasks.core.AbstractRepositoryConnector;
import org.eclipse.mylyn.tasks.core.IRepositoryQuery;
import org.eclipse.mylyn.tasks.core.ITask;
import org.eclipse.mylyn.tasks.ui.TasksUi;
import org.eclipse.mylyn.tasks.ui.TasksUiImages;
import org.eclipse.search.ui.ISearchQuery;
import org.eclipse.search.ui.NewSearchUI;
import org.eclipse.ui.PlatformUI;
/**
* Used for add the last search result to the Task List.
*
* @author Balazs Brinkus (bug 172699)
* @author Mik Kersten
*/
public class CreateQueryFromSearchAction extends Action {
/** The view this action works on */
private final RepositorySearchResultView resultView;
/**
* Constructor
*
* @param text
* The text for this action
* @param resultView
* The <code>RepositorySearchResultView</code> this action works on
*/
public CreateQueryFromSearchAction(String text, RepositorySearchResultView resultView) {
setText(text);
setImageDescriptor(TasksUiImages.QUERY_NEW);
this.resultView = resultView;
}
/**
* Add the search result to the Task List.
*/
@Override
public void run() {
ISelection selection = resultView.getViewer().getSelection();
if (selection instanceof IStructuredSelection) {
IStructuredSelection structuredSelection = (IStructuredSelection) selection;
if (structuredSelection.getFirstElement() instanceof ITask) {
ISearchQuery[] queries = NewSearchUI.getQueries();
ITask task = (ITask) structuredSelection.getFirstElement();
AbstractRepositoryConnector connector = TasksUi.getRepositoryManager().getRepositoryConnector(
task.getConnectorKind());
if (queries.length != 0 && connector != null) {
SearchHitCollector searchHitCollector = (SearchHitCollector) queries[0];
IRepositoryQuery query = searchHitCollector.getRepositoryQuery();
InputDialog dialog = new InputDialog(PlatformUI.getWorkbench()
.getActiveWorkbenchWindow()
.getShell(), Messages.CreateQueryFromSearchAction_CLEAR_QUERY, MessageFormat.format(
Messages.CreateQueryFromSearchAction_Name_of_query_to_be_added_to_the_X,
TaskListView.LABEL_VIEW)
+ ": ", "", null); //$NON-NLS-1$ //$NON-NLS-2$
int dialogResult = dialog.open();
if (dialogResult == Window.OK) {
query.setSummary(dialog.getValue());
TasksUiInternal.getTaskList().addQuery((RepositoryQuery) query);
TasksUiInternal.synchronizeQuery(connector, (RepositoryQuery) query, null, true);
}
}
}
}
}
}