001 package com.croftsoft.core.gui;
002
003 import java.awt.*;
004
005 import com.croftsoft.core.lang.ClassLib;
006 import com.croftsoft.core.lang.lifecycle.Lifecycle;
007
008 /*********************************************************************
009 * Lifecycle management for a Frame.
010 *
011 * <p />
012 *
013 * @version
014 * 2001-07-24
015 * @since
016 * 2001-05-17
017 * @author
018 * <a href="https://www.croftsoft.com/">David W. Croft</a>
019 *********************************************************************/
020
021 public final class FrameManager
022 implements Lifecycle
023 //////////////////////////////////////////////////////////////////////
024 //////////////////////////////////////////////////////////////////////
025 {
026
027 private Frame frame;
028
029 private String title;
030
031 private String iconName;
032
033 private Dimension size;
034
035 //////////////////////////////////////////////////////////////////////
036 //////////////////////////////////////////////////////////////////////
037
038 public static void main ( String [ ] args )
039 //////////////////////////////////////////////////////////////////////
040 {
041 FrameManager frameManager = new FrameManager ( "Frame Manager" );
042
043 frameManager.init ( );
044
045 frameManager.getFrame ( ).addWindowListener (
046 new ShutdownWindowListener ( frameManager ) );
047
048 frameManager.start ( );
049 }
050
051 //////////////////////////////////////////////////////////////////////
052 //////////////////////////////////////////////////////////////////////
053
054 public FrameManager (
055 Frame frame,
056 String title,
057 Dimension size,
058 String iconName )
059 //////////////////////////////////////////////////////////////////////
060 {
061 this.frame = frame;
062
063 this.title = title;
064
065 this.size = size;
066
067 this.iconName = iconName;
068 }
069
070 public FrameManager ( String title )
071 //////////////////////////////////////////////////////////////////////
072 {
073 this ( null, title, null, null );
074 }
075
076 //////////////////////////////////////////////////////////////////////
077 //////////////////////////////////////////////////////////////////////
078
079 public synchronized void init ( )
080 //////////////////////////////////////////////////////////////////////
081 {
082 if ( frame == null )
083 {
084 frame = new Frame ( );
085 }
086
087 if ( title != null )
088 {
089 frame.setTitle ( title );
090 }
091
092 if ( iconName != null )
093 {
094 try
095 {
096 Image frameIconImage
097 = ClassLib.getResourceAsImage ( getClass ( ), iconName );
098
099 frame.setIconImage ( frameIconImage );
100 }
101 catch ( Exception ex )
102 {
103 ex.printStackTrace ( );
104 }
105 }
106
107 if ( size == null )
108 {
109 size = Toolkit.getDefaultToolkit ( ).getScreenSize ( );
110 }
111
112 WindowLib.centerOnScreen ( frame, size );
113 }
114
115 public synchronized void start ( )
116 //////////////////////////////////////////////////////////////////////
117 {
118 frame.show ( );
119 }
120
121 public synchronized void stop ( )
122 //////////////////////////////////////////////////////////////////////
123 {
124 frame.setVisible ( false );
125 }
126
127 public synchronized void destroy ( )
128 //////////////////////////////////////////////////////////////////////
129 {
130 stop ( );
131
132 frame.dispose ( );
133
134 frame = null;
135 }
136
137 //////////////////////////////////////////////////////////////////////
138 //////////////////////////////////////////////////////////////////////
139
140 public Frame getFrame ( ) { return frame; }
141
142 //////////////////////////////////////////////////////////////////////
143 //////////////////////////////////////////////////////////////////////
144 }