| /******************************************************************************* |
| * Copyright (c) 2004, 2008 Frank Becker and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * Frank Becker - initial API and implementation |
| * Tasktop Technologies - improvements |
| *******************************************************************************/ |
| |
| package org.eclipse.mylyn.internal.tasks.ui.actions; |
| |
| import org.eclipse.jface.action.Action; |
| import org.eclipse.jface.action.IAction; |
| import org.eclipse.jface.dialogs.MessageDialog; |
| import org.eclipse.jface.text.TextSelection; |
| import org.eclipse.jface.viewers.ISelection; |
| import org.eclipse.jface.viewers.StructuredSelection; |
| import org.eclipse.mylyn.tasks.core.ITaskComment; |
| import org.eclipse.mylyn.tasks.core.ITaskMapping; |
| import org.eclipse.mylyn.tasks.core.TaskMapping; |
| import org.eclipse.mylyn.tasks.ui.TasksUiImages; |
| import org.eclipse.mylyn.tasks.ui.TasksUiUtil; |
| import org.eclipse.swt.widgets.Shell; |
| import org.eclipse.ui.PlatformUI; |
| |
| /** |
| * @author Frank Becker |
| * @author Steffen Pingel |
| */ |
| public class NewTaskFromSelectionAction extends Action { |
| |
| public static final String ID = "org.eclipse.mylyn.tasks.ui.actions.newTaskFromSelection"; //$NON-NLS-1$ |
| |
| private ITaskMapping taskMapping; |
| |
| public NewTaskFromSelectionAction() { |
| super(Messages.NewTaskFromSelectionAction_New_Task_from_Selection); |
| setId(ID); |
| setImageDescriptor(TasksUiImages.TASK_NEW); |
| } |
| |
| public ITaskMapping getTaskMapping() { |
| return taskMapping; |
| } |
| |
| public void run(IAction action) { |
| run(); |
| } |
| |
| @Override |
| public void run() { |
| if (taskMapping == null) { |
| MessageDialog.openError(null, Messages.NewTaskFromSelectionAction_New_Task_from_Selection, Messages.NewTaskFromSelectionAction_Nothing_selected_to_create_task_from); |
| return; |
| } |
| |
| Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(); |
| TasksUiUtil.openNewTaskEditor(shell, taskMapping, null); |
| } |
| |
| public void selectionChanged(ISelection selection) { |
| if (selection instanceof TextSelection) { |
| TextSelection textSelection = (TextSelection) selection; |
| final String text = textSelection.getText(); |
| if (text != null && text.length() > 0) { |
| taskMapping = new TaskMapping() { |
| @Override |
| public String getDescription() { |
| return text; |
| } |
| }; |
| } else { |
| taskMapping = null; |
| } |
| // } else if (selection instanceof RepositoryTaskSelection) { |
| // RepositoryTaskSelection repositoryTaskSelection = (RepositoryTaskSelection) selection; |
| // IRepositoryManager repositoryManager = TasksUi.getRepositoryManager(); |
| // AbstractRepositoryConnector connector = repositoryManager.getRepositoryConnector(repositoryTaskSelection.getRepositoryKind()); |
| // |
| // TaskComment comment = repositoryTaskSelection.getComment(); |
| // if (comment != null) { |
| // StringBuilder sb = new StringBuilder(); |
| // sb.append("\n-- Created from Comment --"); |
| // if (connector != null) { |
| // sb.append("\nURL: "); |
| // sb.append(connector.getTaskUrl(repositoryTaskSelection.getRepositoryUrl(), |
| // repositoryTaskSelection.getId())); |
| // } |
| // sb.append("\nComment: "); |
| // sb.append(comment.getNumber()); |
| // |
| // sb.append("\n\n"); |
| // if (taskSelection != null) { |
| // // if text was selected, prefer that |
| // sb.append(taskSelection.getLegacyTaskData().getDescription()); |
| // } else { |
| // sb.append(comment.getText()); |
| // } |
| // |
| // taskSelection = new TaskSelection("", sb.toString()); |
| // } else if (taskSelection != null) { |
| // StringBuilder sb = new StringBuilder(); |
| // if (connector != null) { |
| // sb.append("\n-- Created from Task --"); |
| // sb.append("\nURL: "); |
| // sb.append(connector.getTaskUrl(repositoryTaskSelection.getRepositoryUrl(), |
| // repositoryTaskSelection.getId())); |
| // } |
| // |
| // sb.append("\n\n"); |
| // sb.append(taskSelection.getLegacyTaskData().getDescription()); |
| // |
| // taskSelection = new TaskSelection("", sb.toString()); |
| // } |
| } else if (selection instanceof StructuredSelection) { |
| Object element = ((StructuredSelection) selection).getFirstElement(); |
| if (element instanceof ITaskComment) { |
| ITaskComment comment = (ITaskComment) element; |
| final StringBuilder sb = new StringBuilder(); |
| sb.append("\n" + Messages.NewTaskFromSelectionAction____Created_from_Comment___); //$NON-NLS-1$ |
| if (comment.getUrl() == null) { |
| sb.append("\n" + Messages.NewTaskFromSelectionAction_URL_); //$NON-NLS-1$ |
| sb.append(comment.getTask().getUrl()); |
| sb.append("\n" + Messages.NewTaskFromSelectionAction_Comment_); //$NON-NLS-1$ |
| sb.append(comment.getNumber()); |
| } else { |
| sb.append("\n" + Messages.NewTaskFromSelectionAction_URL_); //$NON-NLS-1$ |
| sb.append(comment.getUrl()); |
| } |
| |
| sb.append("\n\n"); //$NON-NLS-1$ |
| sb.append(comment.getText()); |
| taskMapping = new TaskMapping() { |
| @Override |
| public String getDescription() { |
| return sb.toString(); |
| } |
| }; |
| } |
| } |
| setEnabled(taskMapping != null); |
| } |
| |
| } |