001         package com.croftsoft.core.animation;
002    
003         import java.awt.*;
004         import java.io.*;
005         import java.beans.*;
006    
007         import com.croftsoft.core.CroftSoftConstants;
008         import com.croftsoft.core.animation.animator.*;
009         import com.croftsoft.core.animation.painter.*;
010         import com.croftsoft.core.animation.updater.*;
011         import com.croftsoft.core.lang.Testable;
012         
013         /*********************************************************************
014         * Animation initializer.
015         *
016         * @version
017         *   2003-08-02
018         * @since
019         *   2003-03-07
020         * @author
021         *   <a href="https://www.croftsoft.com/">David Wallace Croft</a>
022         *********************************************************************/
023    
024         public class  AnimationInit
025           implements Serializable, Testable
026         //////////////////////////////////////////////////////////////////////
027         //////////////////////////////////////////////////////////////////////
028         {
029    
030         private static final long  serialVersionUID = 0L;
031    
032         //
033    
034         public static final String             DEFAULT_APPLET_INFO
035           = CroftSoftConstants.DEFAULT_APPLET_INFO;
036    
037         public static final Color              DEFAULT_BACKGROUND_COLOR
038           = Color.WHITE;
039    
040         public static final Cursor             DEFAULT_CURSOR
041           = null; // new Cursor ( Cursor.CROSSHAIR_CURSOR );
042           
043         public static final Font               DEFAULT_FONT
044           = new Font ( "Courier New", Font.BOLD, 10 );
045    
046         public static final Color              DEFAULT_FOREGROUND_COLOR
047           = Color.BLACK;
048    
049         public static final String             DEFAULT_FRAME_ICON_FILENAME
050           = null;
051    
052         public static final Double             DEFAULT_FRAME_RATE
053           = null;
054    
055         public static final Dimension          DEFAULT_FRAME_SIZE
056           = null;
057    
058         public static final String             DEFAULT_FRAME_TITLE
059           = null;
060    
061         public static final String  DEFAULT_SHUTDOWN_CONFIRMATION_PROMPT
062           = "Exit?";
063    
064         public static final ArrayComponentUpdater
065           DEFAULT_ARRAY_COMPONENT_UPDATER = new ArrayComponentUpdater ( );
066    
067         public static final ArrayComponentPainter
068           DEFAULT_ARRAY_COMPONENT_PAINTER = new ArrayComponentPainter ( );
069    
070         //////////////////////////////////////////////////////////////////////
071         // instance variables
072         //////////////////////////////////////////////////////////////////////
073    
074    private TextAnimator  textAnimator;
075    
076         private String                 appletInfo;
077    
078         private ArrayComponentPainter  arrayComponentPainter;
079    
080         private ArrayComponentUpdater  arrayComponentUpdater;
081    
082         private Color                  backgroundColor;
083    
084         private Cursor                 cursor;
085    
086         private Font                   font;
087    
088         private Color                  foregroundColor;
089    
090         private String                 frameIconFilename;
091    
092         private Double                 frameRate;
093    
094         private Dimension              frameSize;
095    
096         private String                 frameTitle;
097    
098         private String                 shutdownConfirmationPrompt;
099    
100         //////////////////////////////////////////////////////////////////////
101         // static methods
102         //////////////////////////////////////////////////////////////////////
103    
104         /*********************************************************************
105         * Test method.
106         *********************************************************************/
107         public static void  main ( String [ ]  args )
108           throws Exception
109         //////////////////////////////////////////////////////////////////////
110         {
111           System.out.println ( test ( args ) );
112         }
113    
114         /*********************************************************************
115         * Test method.
116         *********************************************************************/
117         public static boolean  test ( String [ ]  args )
118         //////////////////////////////////////////////////////////////////////
119         {
120           final String  TEST = "test";
121    
122           try
123           {
124             AnimationInit  animationInit1 = new AnimationInit ( );
125    
126             animationInit1.setAppletInfo ( TEST );
127    
128             ArrayComponentPainter  arrayComponentPainter
129               = animationInit1.getArrayComponentPainter ( );
130    
131             ArrayComponentUpdater  arrayComponentUpdater
132               = animationInit1.getArrayComponentUpdater ( );
133    
134             ColorPainter  colorPainter = new ColorPainter ( );
135    
136             TextAnimator  textAnimator = new TextAnimator ( );
137    
138             animationInit1.setTextAnimator ( textAnimator );
139    
140             textAnimator.setText ( DEFAULT_APPLET_INFO );
141    
142             textAnimator.setDeltaX ( 1 );
143    
144             textAnimator.setDeltaY ( 1 );
145    
146             arrayComponentPainter.add ( colorPainter );
147    
148             arrayComponentPainter.add ( textAnimator );
149    
150             arrayComponentUpdater.add ( textAnimator );
151    
152             animationInit1.setCursor (
153               new Cursor ( Cursor.MOVE_CURSOR ) );
154    
155             animationInit1.setBackgroundColor ( Color.BLUE );
156    
157             animationInit1.setFont (
158               new Font ( "Courier", Font.BOLD, 10 ) );
159    
160             animationInit1.setForegroundColor ( Color.RED );
161    
162             animationInit1.setFrameIconFilename ( TEST );
163    
164             animationInit1.setFrameSize ( new Dimension ( 600, 400 ) );
165    
166             animationInit1.setFrameTitle ( TEST );
167    
168             animationInit1.setShutdownConfirmationPrompt ( TEST );
169    
170             ByteArrayOutputStream  byteArrayOutputStream
171               = new ByteArrayOutputStream ( );
172    
173             XMLEncoder  xmlEncoder = new XMLEncoder ( byteArrayOutputStream );
174    
175             xmlEncoder.writeObject ( animationInit1 );
176    
177             xmlEncoder.close ( );
178    
179             byte [ ]  xmlBytes = byteArrayOutputStream.toByteArray ( );
180    
181             System.out.println ( new String ( xmlBytes ) );
182    
183             XMLDecoder  xmlDecoder
184               = new XMLDecoder ( new ByteArrayInputStream ( xmlBytes ) );
185    
186             AnimationInit  animationInit2
187               = ( AnimationInit ) xmlDecoder.readObject ( );
188    
189             return true;
190           }
191           catch ( Exception  ex )
192           {
193             ex.printStackTrace ( );
194    
195             return false;
196           }
197         }
198    
199         public static AnimationInit  load ( String  filename )
200           throws FileNotFoundException
201         //////////////////////////////////////////////////////////////////////
202         {
203           XMLDecoder  xmlDecoder = new XMLDecoder (
204             new BufferedInputStream ( new FileInputStream ( filename ) ) );
205    
206           AnimationInit  AnimationInit
207             = ( AnimationInit ) xmlDecoder.readObject ( );
208    
209           xmlDecoder.close ( );
210    
211           return AnimationInit;
212         }
213    
214         public static void  save (
215           AnimationInit  animationInit,
216           String         filename )
217           throws FileNotFoundException
218         //////////////////////////////////////////////////////////////////////
219         {
220           XMLEncoder  xmlEncoder = new XMLEncoder (
221             new BufferedOutputStream (
222               new FileOutputStream ( filename ) ) );
223    
224           AnimationInit  AnimationInit
225             = new AnimationInit ( animationInit );
226    
227           xmlEncoder.writeObject ( AnimationInit );
228    
229           xmlEncoder.close ( );
230         }
231    
232         //////////////////////////////////////////////////////////////////////
233         // constructor methods
234         //////////////////////////////////////////////////////////////////////
235    
236         public  AnimationInit ( AnimationInit  animationInit )
237         //////////////////////////////////////////////////////////////////////
238         {
239           if ( animationInit == null )
240           {
241             appletInfo                 = DEFAULT_APPLET_INFO;
242    
243             arrayComponentPainter      = DEFAULT_ARRAY_COMPONENT_PAINTER;
244    
245             arrayComponentUpdater      = DEFAULT_ARRAY_COMPONENT_UPDATER;
246    
247             backgroundColor            = DEFAULT_BACKGROUND_COLOR;
248    
249             cursor                     = DEFAULT_CURSOR;
250    
251             font                       = DEFAULT_FONT;
252    
253             foregroundColor            = DEFAULT_FOREGROUND_COLOR;
254    
255             frameIconFilename          = DEFAULT_FRAME_ICON_FILENAME;
256    
257             frameRate                  = DEFAULT_FRAME_RATE;
258    
259             frameSize                  = DEFAULT_FRAME_SIZE;
260    
261             frameTitle                 = DEFAULT_FRAME_TITLE;
262    
263             shutdownConfirmationPrompt = DEFAULT_SHUTDOWN_CONFIRMATION_PROMPT;
264           }
265           else
266           {
267             appletInfo
268               = animationInit.getAppletInfo ( );
269    
270             arrayComponentPainter
271               = animationInit.getArrayComponentPainter ( );
272    
273             arrayComponentUpdater
274               = animationInit.getArrayComponentUpdater ( );
275    
276             backgroundColor
277               = animationInit.getBackgroundColor ( );
278    
279             cursor
280               = animationInit.getCursor ( );
281    
282             font
283               = animationInit.getFont ( );
284    
285             foregroundColor
286               = animationInit.getForegroundColor ( );
287    
288             frameIconFilename
289               = animationInit.getFrameIconFilename ( );
290    
291             frameRate
292               = animationInit.getFrameRate ( );
293    
294             frameSize
295               = animationInit.getFrameSize ( );
296    
297             frameTitle
298               = animationInit.getFrameTitle ( );
299    
300             shutdownConfirmationPrompt
301               = animationInit.getShutdownConfirmationPrompt ( );
302           }
303         }
304    
305         public  AnimationInit ( )
306         //////////////////////////////////////////////////////////////////////
307         {
308           this ( null );
309         }
310    
311         //////////////////////////////////////////////////////////////////////
312         // accessor methods
313         //////////////////////////////////////////////////////////////////////
314    
315    public TextAnimator  getTextAnimator ( ) { return textAnimator; }
316    
317    public void  setTextAnimator ( TextAnimator textAnimator )
318      { this.textAnimator = textAnimator; }
319    
320         public String  getAppletInfo ( )
321         //////////////////////////////////////////////////////////////////////
322         {
323           return appletInfo;
324         }
325    
326         public ArrayComponentPainter  getArrayComponentPainter ( )
327         //////////////////////////////////////////////////////////////////////
328         {
329           return arrayComponentPainter;
330         }
331    
332         public ArrayComponentUpdater  getArrayComponentUpdater ( )
333         //////////////////////////////////////////////////////////////////////
334         {
335           return arrayComponentUpdater;
336         }
337           
338         public Color  getBackgroundColor ( )
339         //////////////////////////////////////////////////////////////////////
340         {
341           return backgroundColor;
342         }
343    
344         public Cursor  getCursor ( )
345         //////////////////////////////////////////////////////////////////////
346         {
347           return cursor;
348         }
349    
350         public Font  getFont ( )
351         //////////////////////////////////////////////////////////////////////
352         {
353           return font;
354         }
355    
356         public Color  getForegroundColor ( )
357         //////////////////////////////////////////////////////////////////////
358         {
359           return foregroundColor;
360         }
361    
362         public String  getFrameIconFilename ( )
363         //////////////////////////////////////////////////////////////////////
364         {
365           return frameIconFilename;
366         }
367         
368         public Double  getFrameRate ( )
369         //////////////////////////////////////////////////////////////////////
370         {
371           return frameRate;
372         }
373    
374         public Dimension  getFrameSize ( )
375         //////////////////////////////////////////////////////////////////////
376         {
377           return frameSize;
378         }
379    
380         public String  getFrameTitle ( )
381         //////////////////////////////////////////////////////////////////////
382         {
383           return frameTitle;
384         }
385    
386         public String  getShutdownConfirmationPrompt ( )
387         //////////////////////////////////////////////////////////////////////
388         {
389           return shutdownConfirmationPrompt;
390         }
391           
392         //////////////////////////////////////////////////////////////////////
393         // mutator methods
394         //////////////////////////////////////////////////////////////////////
395    
396         public void  setAppletInfo ( String  appletInfo )
397         //////////////////////////////////////////////////////////////////////
398         {
399           this.appletInfo = appletInfo;
400         }
401    
402         public void  setArrayComponentPainter (
403           ArrayComponentPainter  arrayComponentPainter )
404         //////////////////////////////////////////////////////////////////////
405         {
406           this.arrayComponentPainter = arrayComponentPainter;
407         }
408    
409         public void  setArrayComponentUpdater (
410           ArrayComponentUpdater  arrayComponentUpdater )
411         //////////////////////////////////////////////////////////////////////
412         {
413           this.arrayComponentUpdater = arrayComponentUpdater;
414         }
415    
416         public void  setBackgroundColor ( Color  backgroundColor )
417         //////////////////////////////////////////////////////////////////////
418         {
419           this.backgroundColor = backgroundColor;
420         }
421    
422         public void  setCursor ( Cursor  cursor )
423         //////////////////////////////////////////////////////////////////////
424         {
425           this.cursor = cursor;
426         }
427    
428         public void  setFont ( Font  font )
429         //////////////////////////////////////////////////////////////////////
430         {
431           this.font = font;
432         }
433    
434         public void  setForegroundColor ( Color  foregroundColor )
435         //////////////////////////////////////////////////////////////////////
436         {
437           this.foregroundColor = foregroundColor;
438         }
439    
440         public void  setFrameIconFilename ( String  frameIconFilename )
441         //////////////////////////////////////////////////////////////////////
442         {
443           this.frameIconFilename = frameIconFilename;
444         }
445    
446         public void  setFrameRate ( Double  frameRate )
447         //////////////////////////////////////////////////////////////////////
448         {
449           this.frameRate = frameRate;
450         }
451    
452         public void  setFrameSize ( Dimension  frameSize )
453         //////////////////////////////////////////////////////////////////////
454         {
455           this.frameSize = frameSize;
456         }
457    
458         public void  setFrameTitle ( String  frameTitle )
459         //////////////////////////////////////////////////////////////////////
460         {
461           this.frameTitle = frameTitle;
462         }
463    
464         public void  setShutdownConfirmationPrompt (
465           String  shutdownConfirmationPrompt )
466         //////////////////////////////////////////////////////////////////////
467         {
468           this.shutdownConfirmationPrompt = shutdownConfirmationPrompt;
469         }
470    
471         //////////////////////////////////////////////////////////////////////
472         //////////////////////////////////////////////////////////////////////
473         }