content: package tim.prune.function;
  
  import tim.prune.App;
  import tim.prune.GenericFunction;
  import tim.prune.data.Checker;
  import tim.prune.data.DataPoint;
  
  /**
   * Function to select the whole segment to which the current track point belongs
   */
  public class SelectSegmentFunction extends GenericFunction
  {
  
  	/**
  	 * Constructor
  	 * @param inApp app object to use for load
  	 */
  	public SelectSegmentFunction(App inApp)
  	{
  		super(inApp);
  	}
  
  	/**
  	 * Start the function
  	 */
  	public void begin()
  	{
  		// If no point selected, or a waypoint is selected, then do nothing
  		DataPoint currPoint = _app.getTrackInfo().getCurrentPoint();
  		if (currPoint != null && !currPoint.isWaypoint())
  		{
  			// Find indexes of segment start and end
  			final int currIndex = _app.getTrackInfo().getSelection().getCurrentPointIndex();
  			final int startIndex = Checker.getPreviousSegmentStart(_app.getTrackInfo().getTrack(), currIndex+1);
  			final int endIndex   = Checker.getNextSegmentEnd(_app.getTrackInfo().getTrack(), currIndex);
  			// Select this range if there is one
  			if (endIndex > startIndex) {
  				_app.getTrackInfo().getSelection().selectRange(startIndex, endIndex);
  			}
  		}
  	}
  
  	/** @return name key */
  	public String getNameKey() {
  		return "function.selectsegment";
  	}
  }
  