/******************************************************************************* * * 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.List; import java.util.Set; import net.sourceforge.tagsea.TagSEAPlugin; import net.sourceforge.tagsea.core.IWaypoint; import net.sourceforge.tagsea.mylyn.waypoints.WaypointsUtils; import net.sourceforge.tagsea.mylyn.waypoints.WaypointMylynPlugin; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.MenuManager; import org.eclipse.mylyn.internal.tasks.ui.IDynamicSubMenuContributor; import org.eclipse.mylyn.tasks.core.AbstractTask; import org.eclipse.mylyn.tasks.core.AbstractTaskContainer; import org.eclipse.mylyn.tasks.ui.TaskListManager; import org.eclipse.mylyn.tasks.ui.TasksUiPlugin; public class WaypointMylynSubmenuContributor implements IDynamicSubMenuContributor { private static final String WAYPOINTS_LABEL = "Waypoints"; // @tag tagsea.mylyn -author="John" -date="enCA:31/10/07" : borrowed from // org.eclipse.mylyn.internal.tasks.ui.ScheduleTaskMenuContributor public MenuManager getSubMenuManager( final List<AbstractTaskContainer> selectedElements) { final TaskListManager tasklistManager = TasksUiPlugin .getTaskListManager(); final MenuManager subMenuManager = new MenuManager(WAYPOINTS_LABEL); System.err.println("Selected size: " + selectedElements.size()); subMenuManager.setVisible(selectedElements.size() > 0); //System.err.println("Visibility: " + subMenuManager.isVisible()); //System.err.println("Selected Type: " + selectedElements.get(0)); for (AbstractTaskContainer selection : selectedElements) { if (selection instanceof AbstractTask) { final AbstractTask task = tasklistManager.getTaskForElement( selection, false); Set<IWaypoint> waypoints = WaypointMylynPlugin.getDefault() .getWaypoints(task); if (waypoints != null) { for (IWaypoint waypoint : waypoints) { Action action = new JumpToWaypoint(waypoint); action.setText(WaypointsUtils .getWaypointInformation(waypoint, false)); action.setEnabled(true); subMenuManager.add(action); } } else { System.err.println("Couldn't find waypoints for task."); } } } return subMenuManager; } private class JumpToWaypoint extends Action { private final IWaypoint waypoint; JumpToWaypoint(IWaypoint waypoint) { this.waypoint = waypoint; } @Override public void run() { if (waypoint != null) { TagSEAPlugin.getDefault().navigate(waypoint); } } } }