001 package com.croftsoft.core.animation.painter; 002 003 import java.awt.Graphics2D; 004 import javax.swing.JComponent; 005 006 import com.croftsoft.core.animation.ComponentPainter; 007 import com.croftsoft.core.lang.NullArgumentException; 008 import com.croftsoft.core.util.ArrayLib; 009 010 /********************************************************************* 011 * Makes a ComponentPainter array look like a single ComponentPainter. 012 * 013 * @version 014 * 2003-07-05 015 * @since 016 * 2002-03-06 017 * @author 018 * <a href="https://www.croftsoft.com/">David Wallace Croft</a> 019 *********************************************************************/ 020 021 public final class ArrayComponentPainter 022 implements ComponentPainter 023 ////////////////////////////////////////////////////////////////////// 024 ////////////////////////////////////////////////////////////////////// 025 { 026 027 private ComponentPainter [ ] componentPainters; 028 029 ////////////////////////////////////////////////////////////////////// 030 // constructor methods 031 ////////////////////////////////////////////////////////////////////// 032 033 public ArrayComponentPainter ( 034 ComponentPainter [ ] componentPainters ) 035 ////////////////////////////////////////////////////////////////////// 036 { 037 setComponentPainters ( componentPainters ); 038 } 039 040 public ArrayComponentPainter ( ) 041 ////////////////////////////////////////////////////////////////////// 042 { 043 this ( new ComponentPainter [ 0 ] ); 044 } 045 046 ////////////////////////////////////////////////////////////////////// 047 // accessor/mutator methods 048 ////////////////////////////////////////////////////////////////////// 049 050 public ComponentPainter [ ] getComponentPainters ( ) 051 ////////////////////////////////////////////////////////////////////// 052 { 053 return componentPainters; 054 } 055 056 public void add ( ComponentPainter componentPainter ) 057 ////////////////////////////////////////////////////////////////////// 058 { 059 componentPainters = ( ComponentPainter [ ] ) 060 ArrayLib.append ( componentPainters, componentPainter ); 061 } 062 063 public void setComponentPainters ( 064 ComponentPainter [ ] componentPainters ) 065 ////////////////////////////////////////////////////////////////////// 066 { 067 NullArgumentException.check ( 068 this.componentPainters = componentPainters ); 069 } 070 071 ////////////////////////////////////////////////////////////////////// 072 ////////////////////////////////////////////////////////////////////// 073 074 /********************************************************************* 075 * Paints each element in the ComponentPainter array. 076 *********************************************************************/ 077 public void paint ( 078 JComponent component, 079 Graphics2D graphics ) 080 ////////////////////////////////////////////////////////////////////// 081 { 082 for ( int i = 0; i < componentPainters.length; i++ ) 083 { 084 componentPainters [ i ].paint ( component, graphics ); 085 } 086 } 087 088 ////////////////////////////////////////////////////////////////////// 089 ////////////////////////////////////////////////////////////////////// 090 }