/******************************************************************************* * * Copyright 2007, 2008, CHISEL Group, University of Victoria, Victoria, BC, Canada. * 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: * The Chisel Group, University of Victoria *******************************************************************************/ package net.sourceforge.tagsea.mylyn.waypoints.actions; import java.util.HashSet; import java.util.List; import java.util.Set; import net.sourceforge.tagsea.core.IWaypoint; import net.sourceforge.tagsea.mylyn.core.TagSEAMylynCorePlugin; import net.sourceforge.tagsea.mylyn.waypoints.WaypointMylynPlugin; import net.sourceforge.tagsea.mylyn.waypoints.WaypointsUtils; import org.eclipse.jface.action.IAction; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.window.Window; import org.eclipse.mylyn.internal.tasks.core.TaskDataManager; import org.eclipse.mylyn.internal.tasks.ui.actions.TaskSelectionDialog; import org.eclipse.mylyn.tasks.core.AbstractTask; import org.eclipse.mylyn.tasks.core.RepositoryTaskAttribute; import org.eclipse.mylyn.tasks.core.RepositoryTaskData; import org.eclipse.mylyn.tasks.ui.TasksUiPlugin; import org.eclipse.mylyn.tasks.ui.TasksUiUtil; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.IViewActionDelegate; import org.eclipse.ui.IViewPart; import org.eclipse.ui.PlatformUI; public class WaypointExistingTask implements IViewActionDelegate { private TaskSelectionDialog dialog; private List<IWaypoint> waypoints; public WaypointExistingTask() { // TODO Auto-generated constructor stub } @Override public void init(IViewPart view) { } @Override public void run(IAction action) { Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow() .getShell(); if (shell == null) { System.err.println("NO SHELL!"); } // MessageDialog.openInformation(shell, "Test", "Testing opening // dialog"); // ExisitingTaskDialog dialog = new ExisitingTaskDialog(); this.dialog = new TaskSelectionDialog(shell); dialog.setTitle("Select Task"); dialog .setMessage("&Select a task to add waypoints to (? = any character, * = any String):"); dialog.setShowExtendedOpeningOptions(true); if (dialog.open() != Window.OK) { System.err.println("Not OK opening window"); return; } Object result = dialog.getFirstResult(); if (result instanceof AbstractTask) { AbstractTask task = (AbstractTask) result; // System.out.println("Selected " + task.getSummary()); // Add waypoint references to task description List<IWaypoint> newWaypoints = WaypointsUtils.getNewWaypoints(task, waypoints); String waypointInfo = WaypointsUtils .getWaypointInformation(newWaypoints); if (task.isLocal()) { String existingNotes = task.getNotes(); if (existingNotes.trim().length() == 0) { task.setNotes(waypointInfo); } else { task.setNotes(existingNotes + waypointInfo); } } else { //System.out.println("Exisitng repository task"); TaskDataManager manager = TasksUiPlugin.getTaskDataManager(); RepositoryTaskData taskData = manager.getNewTaskData(task .getRepositoryUrl(), task.getTaskId()); taskData.setNewComment(waypointInfo); Set<RepositoryTaskAttribute> changed = new HashSet<RepositoryTaskAttribute>(); changed.add(taskData .getAttribute(RepositoryTaskAttribute.COMMENT_NEW)); TasksUiPlugin.getTaskDataManager().saveEdits( task.getRepositoryUrl(), task.getTaskId(), changed); TasksUiUtil.refreshAndOpenTaskListElement(task); } for (IWaypoint waypoint : waypoints) { WaypointMylynPlugin.getDefault().addWaypoint(waypoint, task); } // Add waypoints to task context List<String> handles = WaypointsUtils.getHandles(waypoints); TagSEAMylynCorePlugin.addToContext(task, handles); WaypointsUtils.addTaskTag(task, waypoints); } } @Override public void selectionChanged(IAction action, ISelection selection) { if (selection instanceof StructuredSelection) { StructuredSelection sel = (StructuredSelection) selection; this.waypoints = WaypointsUtils.getWaypoints(sel); } } }