diff options
Diffstat (limited to 'org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/NewTaskAction.java')
-rw-r--r-- | org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/NewTaskAction.java | 239 |
1 files changed, 0 insertions, 239 deletions
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/NewTaskAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/NewTaskAction.java deleted file mode 100644 index d69cf33df..000000000 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/NewTaskAction.java +++ /dev/null @@ -1,239 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004, 2009 Mylyn project committers 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 - *******************************************************************************/ - -package org.eclipse.mylyn.internal.tasks.ui.actions; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; -import java.util.HashSet; -import java.util.Set; - -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IAdaptable; -import org.eclipse.core.runtime.IConfigurationElement; -import org.eclipse.core.runtime.IExecutableExtension; -import org.eclipse.jface.action.Action; -import org.eclipse.jface.action.ActionContributionItem; -import org.eclipse.jface.action.IAction; -import org.eclipse.jface.action.IMenuCreator; -import org.eclipse.jface.action.Separator; -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.mylyn.internal.commons.ui.TaskListImageDescriptor; -import org.eclipse.mylyn.internal.tasks.core.ITaskRepositoryFilter; -import org.eclipse.mylyn.internal.tasks.core.LocalRepositoryConnector; -import org.eclipse.mylyn.internal.tasks.core.RepositoryQuery; -import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin; -import org.eclipse.mylyn.internal.tasks.ui.views.TaskRepositoriesSorter; -import org.eclipse.mylyn.tasks.core.AbstractRepositoryConnector; -import org.eclipse.mylyn.tasks.core.TaskRepository; -import org.eclipse.mylyn.tasks.ui.TasksUi; -import org.eclipse.mylyn.tasks.ui.TasksUiImages; -import org.eclipse.mylyn.tasks.ui.TasksUiUtil; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Menu; -import org.eclipse.swt.widgets.Shell; -import org.eclipse.ui.IViewActionDelegate; -import org.eclipse.ui.IViewPart; -import org.eclipse.ui.IWorkbenchActionConstants; -import org.eclipse.ui.IWorkingSet; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.actions.BaseSelectionListenerAction; - -/** - * @author Mik Kersten - * @author Eugene Kuleshov - * @author Steffen Pingel - * @author Rob Elves - */ -@SuppressWarnings("restriction") -public class NewTaskAction extends BaseSelectionListenerAction implements IMenuCreator, IViewActionDelegate, - IExecutableExtension { - - private static final String LABEL_NEW_TASK = Messages.NewTaskAction_new_task; - - public static final String ID = "org.eclipse.mylyn.tasklist.ui.repositories.actions.create"; //$NON-NLS-1$ - - private boolean skipRepositoryPage = false; - - private boolean localTask = false; - - private Menu dropDownMenu; - - public NewTaskAction() { - super(LABEL_NEW_TASK); - setMenuCreator(this); - setText(LABEL_NEW_TASK); - setToolTipText(LABEL_NEW_TASK); - setId(ID); - setEnabled(true); - setImageDescriptor(TasksUiImages.TASK_NEW); - } - - @Override - public void run() { - Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(); - if (shell != null && !shell.isDisposed()) { - if (localTask) { - TasksUiUtil.openNewLocalTaskEditor(shell, null); - } else { - if (skipRepositoryPage) { - TasksUiUtil.openNewTaskEditor(shell, null, TasksUiUtil.getSelectedRepository()); - } else { - TasksUiUtil.openNewTaskEditor(shell, null, null); - } - } - } - } - - public void run(IAction action) { - run(); - } - - public void init(IViewPart view) { - } - - public void selectionChanged(IAction action, ISelection selection) { - } - - public void setInitializationData(IConfigurationElement config, String propertyName, Object data) - throws CoreException { - if ("skipFirstPage".equals(data)) { //$NON-NLS-1$ - this.skipRepositoryPage = true; - } - if ("local".equals(data)) { //$NON-NLS-1$ - this.localTask = true; - } - } - - public void dispose() { - if (dropDownMenu != null) { - dropDownMenu.dispose(); - dropDownMenu = null; - } - } - - public Menu getMenu(Control parent) { - if (dropDownMenu != null) { - dropDownMenu.dispose(); - } - dropDownMenu = new Menu(parent); - addActionsToMenu(); - return dropDownMenu; - } - - public Menu getMenu(Menu parent) { - if (dropDownMenu != null) { - dropDownMenu.dispose(); - } - dropDownMenu = new Menu(parent); - addActionsToMenu(); - return dropDownMenu; - } - - private void addActionsToMenu() { - Set<TaskRepository> includedRepositories = new HashSet<TaskRepository>(); - TaskRepository localRepository = TasksUi.getRepositoryManager().getRepository( - LocalRepositoryConnector.CONNECTOR_KIND, LocalRepositoryConnector.REPOSITORY_URL); - - addRepositoryAction(localRepository); - - IWorkingSet workingSet = PlatformUI.getWorkbench() - .getActiveWorkbenchWindow() - .getActivePage() - .getAggregateWorkingSet(); - if (workingSet != null && !workingSet.isEmpty()) { - // only add repositories in working set - for (IAdaptable iterable_element : workingSet.getElements()) { - if (iterable_element instanceof RepositoryQuery) { - String repositoryUrl = ((RepositoryQuery) iterable_element).getRepositoryUrl(); - String connectorKind = ((RepositoryQuery) iterable_element).getConnectorKind(); - TaskRepository repository = TasksUi.getRepositoryManager().getRepository(connectorKind, - repositoryUrl); - markForInclusion(includedRepositories, repository); - - } - } - } - - if (includedRepositories.isEmpty()) { - // No repositories were added from working sets so show all - for (TaskRepository repository : TasksUi.getRepositoryManager().getAllRepositories()) { - markForInclusion(includedRepositories, repository); - } - } - - if (!includedRepositories.isEmpty()) { - new Separator().fill(dropDownMenu, -1); - ArrayList<TaskRepository> listOfRepositories = new ArrayList<TaskRepository>(includedRepositories); - final TaskRepositoriesSorter comparator = new TaskRepositoriesSorter(); - Collections.sort(listOfRepositories, new Comparator<TaskRepository>() { - - public int compare(TaskRepository arg0, TaskRepository arg1) { - return comparator.compare(null, arg0, arg1); - } - }); - for (TaskRepository taskRepository : listOfRepositories) { - addRepositoryAction(taskRepository); - } - } - new Separator().fill(dropDownMenu, -1); - new ActionContributionItem(new NewQueryAction()).fill(dropDownMenu, -1); - new ActionContributionItem(new NewCategoryAction()).fill(dropDownMenu, -1); - new Separator().fill(dropDownMenu, -1); - new ActionContributionItem(new AddRepositoryAction()).fill(dropDownMenu, -1); - new Separator(IWorkbenchActionConstants.MB_ADDITIONS); - } - - private void markForInclusion(Set<TaskRepository> includedRepositories, TaskRepository repository) { - if (repository != null && !repository.getConnectorKind().equals(LocalRepositoryConnector.CONNECTOR_KIND)) { - AbstractRepositoryConnector connector = TasksUi.getRepositoryConnector(repository.getConnectorKind()); - if (connector != null) { - if (ITaskRepositoryFilter.CAN_CREATE_NEW_TASK.accept(repository, connector)) { - includedRepositories.add(repository); - } - } - } - } - - private RepositorySelectionAction addRepositoryAction(TaskRepository repository) { - if (repository == null) { - return null; - } - RepositorySelectionAction action = new RepositorySelectionAction(repository); - ActionContributionItem item = new ActionContributionItem(action); - action.setText(repository.getRepositoryLabel()); - ImageDescriptor overlay = TasksUiPlugin.getDefault().getOverlayIcon(repository.getConnectorKind()); - ImageDescriptor compositeDescriptor = new TaskListImageDescriptor(TasksUiImages.TASK_NEW, overlay, false, false); - action.setImageDescriptor(compositeDescriptor); - item.fill(dropDownMenu, -1); - return action; - } - - private class RepositorySelectionAction extends Action { - - private final TaskRepository repository; - - public RepositorySelectionAction(TaskRepository repository) { - this.repository = repository; - setText(repository.getRepositoryLabel()); - } - - @Override - public void run() { - Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(); - if (repository.getConnectorKind().equalsIgnoreCase(LocalRepositoryConnector.CONNECTOR_KIND)) { - TasksUiUtil.openNewLocalTaskEditor(shell, null); - } else { - TasksUiUtil.openNewTaskEditor(shell, null, repository); - } - } - } - -} |