final Location[] loa = new Location[4]; loa[0] = LocationImpl.create( bo.getLeft( ), bo.getTop( ) ); loa[1] = LocationImpl.create( bo.getLeft( ), bo.getTop( ) + bo.getHeight( ) ); loa[2] = LocationImpl.create( bo.getLeft( ) + bo.getWidth( ), bo.getTop( ) + bo.getHeight( ) ); loa[3] = LocationImpl.create( bo.getLeft( ) + bo.getWidth( ), bo.getTop( ) );  for ( int i = 0; i < tga.length; i++ ) { tc = tga[i].getCondition( ); al = (ArrayList) _lhmAllTriggers.get( tc ); if ( al == null ) { al = new ArrayList( 4 ); _lhmAllTriggers.put( tc, al ); } al.add( new ShapedAction( iev.getSource( ), loa, tga[i].getAction( ), clipping ) ); } }
	public void enableInteraction( InteractionEvent iev ) throws ChartException	{		if ( _iun == null )		{			logger.log( ILogger.WARNING,					Messages.getString( "exception.missing.component.interaction", getULocale( ) ) ); //$NON-NLS-1$			return;		}		final Trigger[] tga = iev.getTriggers( );		if ( tga == null )		{			return;		}		Shape clipping = _g2d.getClip( );		// CREATE AND SETUP THE SHAPES FOR INTERACTION		TriggerCondition tc;		ArrayList al;		final PrimitiveRenderEvent pre = iev.getHotSpot( );		if ( pre instanceof PolygonRenderEvent )		{			final Location[] loa = ( (PolygonRenderEvent) pre ).getPoints( );			for ( int i = 0; i < tga.length; i++ )			{				tc = tga[i].getCondition( );				al = (ArrayList) _lhmAllTriggers.get( tc );				if ( al == null )				{					al = new ArrayList( 4 ); // UNDER NORMAL CONDITIONS					_lhmAllTriggers.put( tc, al );				}				al.add( new ShapedAction( iev.getSource( ),						loa,						tga[i].getAction( ),						clipping ) );			}		}		else if ( pre instanceof RectangleRenderEvent )		{			final Bounds bo = ( (RectangleRenderEvent) pre ).getBounds( );			final Location[] loa = new Location[4];			loa[0] = LocationImpl.create( bo.getLeft( ), bo.getTop( ) );			loa[1] = LocationImpl.create( bo.getLeft( ), bo.getTop( )					+ bo.getHeight( ) );			loa[2] = LocationImpl.create( bo.getLeft( ) + bo.getWidth( ),					bo.getTop( ) + bo.getHeight( ) );			loa[3] = LocationImpl.create( bo.getLeft( ) + bo.getWidth( ),					bo.getTop( ) );			for ( int i = 0; i < tga.length; i++ )			{				tc = tga[i].getCondition( );				al = (ArrayList) _lhmAllTriggers.get( tc );				if ( al == null )				{					al = new ArrayList( 4 ); // UNDER NORMAL CONDITIONS					_lhmAllTriggers.put( tc, al );				}				al.add( new ShapedAction( iev.getSource( ),						loa,						tga[i].getAction( ),						clipping ) );			}		}		else if ( pre instanceof OvalRenderEvent )		{			final Bounds boEllipse = ( (OvalRenderEvent) pre ).getBounds( );			for ( int i = 0; i < tga.length; i++ )			{				tc = tga[i].getCondition( );				al = (ArrayList) _lhmAllTriggers.get( tc );				if ( al == null )				{					al = new ArrayList( 4 ); // UNDER NORMAL CONDITIONS					_lhmAllTriggers.put( tc, al );				}				al.add( new ShapedAction( iev.getSource( ),						boEllipse,						tga[i].getAction( ),						clipping ) );			}		}		else if ( pre instanceof ArcRenderEvent )		{			final ArcRenderEvent are = (ArcRenderEvent) pre;			final Bounds boEllipse = are.getEllipseBounds( );			double dStart = are.getStartAngle( );			double dExtent = are.getAngleExtent( );			int iArcType = toSwingArcType( are.getStyle( ) );			for ( int i = 0; i < tga.length; i++ )			{				tc = tga[i].getCondition( );				al = (ArrayList) _lhmAllTriggers.get( tc );				if ( al == null )				{					al = new ArrayList( 4 ); // UNDER NORMAL CONDITIONS					_lhmAllTriggers.put( tc, al );				}				al.add( new ShapedAction( iev.getSource( ),						boEllipse,						dStart,						dExtent,						iArcType,						tga[i].getAction( ),						clipping ) );			}		}	}