content: package ru.dimension.ui.view.detail.raw.searchable;
  
  
  import java.awt.Color;
  import java.awt.event.ActionEvent;
  import java.awt.event.ActionListener;
  import javax.swing.Timer;
  import org.jdesktop.swingx.painter.AlphaPainter;
  import org.jdesktop.swingx.painter.MattePainter;
  import org.jdesktop.swingx.painter.Painter;
  import org.jdesktop.swingx.painter.PinstripePainter;
  
  public class DecoratorFactory {
  
    public static final Color MATCH_COLOR = Color.YELLOW;
    public static final Color PINSTRIPE_COLOR = Color.GREEN;
  
    public static Painter createPlainPainter() {
      return new MattePainter(MATCH_COLOR);
    }
  
    /**
     * @return
     */
    public static Painter createAnimatedPainter() {
      final AlphaPainter alpha = new AlphaPainter();
      alpha.setAlpha(1f);
      final PinstripePainter pinstripePainter = new PinstripePainter(PINSTRIPE_COLOR, 45, 3, 3);
      alpha.setPainters(new MattePainter(MATCH_COLOR), pinstripePainter);
      ActionListener l = new ActionListener() {
        boolean add;
  
        public void actionPerformed(ActionEvent e) {
          float a = add ? (alpha.getAlpha() + 0.1f) : (alpha.getAlpha() - 0.1f);
          if (a > 1.0) {
            a = 1f;
            add = false;
          } else if (a < 0) {
            a = 0;
            add = true;
          }
          alpha.setAlpha(a);
          pinstripePainter.setAngle(pinstripePainter.getAngle() + 10);
        }
  
      };
      new Timer(100, l).start();
      return alpha;
    }
  
  }