public void actionPerformed(ActionEvent actionEvent) {
        if (animationTimer==null){
            return;
        }
        
        if (!animationTimer.isRunning()){
            return;
        }
        
        if (!isAnimating()){
            animationTimer.stop();
            return;
        }
        
        //Update any animating icons, could be subject to modification
        //outside the EDT
        try {
            for (Component comp : components) {
                CaroselPosition cpos = getPosition(comp);
                
                if (cpos.isAnimating()){
                    cpos.updateAngle();
                }
            }
        } catch (ConcurrentModificationException cMe){
            actionPerformed(actionEvent);
        }
        rotationalOffset += (targetOffset - rotationalOffset) / 6.0;
        if (container!=null){
            this.layoutContainer(container);
            if (container instanceof Component){
                ((Component) container).repaint();
            }
        }
    }