aseTargetFeedback( )
	{
		if ( selectedEditParts == null )
			return;
		ListIterator oldEditParts = selectedEditParts.listIterator( );
		while ( oldEditParts.hasNext( ) )
		{
			EditPart editPart = (EditPart) oldEditParts.next( );
			editPart.eraseTargetFeedback( getTargetRequest( ) );
		}
	}

	/**
	 * Returns a list including all of the children of the edit part passed in.
	 */
	private List getAllChildren( EditPart editPart, List allChildren )
	{
		List children = editPart.getChildren( );
		for ( int i = 0; i < children.size( ); i++ )
		{
			GraphicalEditPart child = (GraphicalEditPart) children.get( i );
			allChildren.add( child );
			getAllChildren( child, allChildren );
		}
		return allChildren;
	}

	/**
	 * Return a vector including all of the children of the root editpart
	 */
	private List getAllChildren( )
	{

		if ( allChildren.isEmpty( ) )
			allChildren = getAllChildren( getCurrentViewer( ).getRootEditPart( ),
					new ArrayList( ) );
		return allChildren;
	}

	/**
	 * @see org.eclipse.gef.tools.AbstractTool#getCommandName()
	 */
	protected String getCommandName( )
	{
		return REQ_SELECTION;
	}

	/**
	 * @see org.eclipse.gef.tools.AbstractTool#getDebugName()
	 */
	protected String getDebugName( )
	{
		return "Marquee Tool";//$NON-NLS-1$
	}

	private IFigure getMarqueeFeedbackFigure( )
	{
		if ( marqueeRectangleFigure == null )
		{
			marqueeRectangleFigure = new MarqueeRectangleFigure( );
			addFeedback( marqueeRectangleFigure );
		}
		return marqueeRectangleFigure;
	}

	private Rectangle getMarqueeSelectionRectangle( )
	{
		return new Rectangle( getStartLocation( ), getLocation( ) );
	}

	private int getSelectionMode( )
	{
		return mode;
	}

	private Request getTargetRequest( )
	{
		if ( targetRequest == null )
			targetRequest = createTargetRequest( );
		return targetRequest;
	}

	/**
	 * @see org.eclipse.gef.tools.AbstractTool#handleButtonDown(int)
	 */
	protected boolean handleButtonDown( int button )
	{
		if ( !isGraphicalViewer( ) )
			return true;
		if ( button != 1 )
		{
			setState( STATE_IN