001        package com.croftsoft.apps.skipper;
002         
003        import java.awt.*;
004        import java.io.*;
005        import java.util.logging.*;
006    
007        import com.croftsoft.core.CroftSoftConstants;
008        import com.croftsoft.core.beans.XmlBeanCoder;
009    
010        /***********************************************************************
011        * Skipper persistent configuration.
012        *  
013        * Copyright 2007 David Wallace Croft.
014        * 
015        * @version
016        *   $Date: 2007/07/28 17:59:46 $ $Author: croft $
017        * @since
018        *   2006-12-19
019        * @author
020        *   <a href="https://www.croftsoft.com/">David Wallace Croft</a>
021        ***********************************************************************/
022    
023        public final class  SkipperConfig
024        ////////////////////////////////////////////////////////////////////////
025        ////////////////////////////////////////////////////////////////////////
026        {
027           
028        private static final String
029          VERSION    = "$Date: 2007/07/28 17:59:46 $",
030          CLASS_NAME = SkipperConfig.class.getName ( ),
031          TITLE      = "CroftSoft Skipper";
032    
033        private static final String  INFO
034          = TITLE + "\n"
035          + "Version " + VERSION + "\n"
036          + CroftSoftConstants.COPYRIGHT + "\n"
037          + CroftSoftConstants.DEFAULT_LICENSE + "\n"
038          + CroftSoftConstants.HOME_PAGE + "\n";
039    
040        private static final int
041          FRAME_WIDTH  = 600,
042          FRAME_HEIGHT = 400;
043    
044        private static final double  UPDATE_RATE = 1.0;
045    
046        private static final String  SHUTDOWN_CONFIRMATION_PROMPT = null;
047    
048        private static final Font    FONT
049          = new Font ( "Arioso", Font.BOLD, 20 );
050    
051        private static final Color
052          BACKGROUND_COLOR = Color.BLACK,
053          FOREGROUND_COLOR = Color.GREEN;
054    
055        private static final String
056          CROFTSOFT_DIRECTORY   = ".croftsoft",
057          SKIPPER_DIRECTORY     = "skipper",
058          CONFIG_FILENAME       = "skipper.cfg",
059          DEFAULT_PICTURES_PATH = "My Documents/My Pictures",
060          WEIGHTS_FILENAME      = "skipper.dat";
061        
062        private static final String  SKIPPER_PATH
063          = System.getProperty ( "user.home" )
064          + File.separator
065          + CROFTSOFT_DIRECTORY
066          + File.separator
067          + SKIPPER_DIRECTORY;
068    
069        // default values
070        
071        private static final long     DEFAULT_DISPLAY_TIME = 60;
072    
073        private static final Boolean  DEFAULT_DISPLAYING_IMAGE_FILENAME
074          = Boolean.FALSE;
075    
076        // instance variables
077    
078        private Boolean  displayingImageFilename;
079    
080        private long     displayTime;
081    
082        private String   picturesPath;
083    
084        ////////////////////////////////////////////////////////////////////////
085        // static methods
086        ////////////////////////////////////////////////////////////////////////
087    
088        public static File  createWeightsFile ( )
089        ////////////////////////////////////////////////////////////////////////
090        {
091          final File  skipperPathFile = new File ( SKIPPER_PATH );
092          
093          skipperPathFile.mkdirs ( );
094          
095          return new File ( skipperPathFile, WEIGHTS_FILENAME );
096        }
097    
098        public static SkipperConfig  load ( String [ ]  args )
099        ////////////////////////////////////////////////////////////////////////
100        {
101          try
102          {
103            final File  configFile = new File ( SKIPPER_PATH, CONFIG_FILENAME );
104    
105            if ( configFile.exists ( ) )
106            {
107              return ( SkipperConfig )
108                XmlBeanCoder.loadFromXmlFile ( configFile );
109            }
110          }
111          catch ( final Exception  ex )
112          {
113            Logger.getLogger ( CLASS_NAME ).throwing ( CLASS_NAME, "load", ex );
114          }
115    
116          return new SkipperConfig ( );
117        }
118    
119        ////////////////////////////////////////////////////////////////////////
120        // accessor methods
121        ////////////////////////////////////////////////////////////////////////
122        
123        public Color  getBackgroundColor ( ) { return BACKGROUND_COLOR; }
124    
125        public Color  getForegroundColor ( ) { return FOREGROUND_COLOR; }
126    
127        public String  getInfo ( ) { return INFO; }
128    
129        public Font  getFont ( ) { return FONT; }
130    
131        public Dimension  getFrameSize ( )
132          { return new Dimension ( FRAME_WIDTH, FRAME_HEIGHT ); }
133    
134        public String  getFrameTitle ( ) { return TITLE; }
135    
136        public String  getPicturesPath ( ) { return picturesPath; }
137    
138        public String  getShutdownConfirmationPrompt ( )
139          { return SHUTDOWN_CONFIRMATION_PROMPT; }
140    
141        public String  getThreadName ( ) { return TITLE; }
142    
143        public double  getUpdateRate ( ) { return UPDATE_RATE; }
144    
145        public long  getDisplayTime ( ) { return displayTime; }
146    
147        public long  getDefaultDisplayTime ( ) { return DEFAULT_DISPLAY_TIME; }
148    
149        public String  getDefaultPicturesPath ( )
150          { return DEFAULT_PICTURES_PATH; }
151    
152        public Boolean  getDisplayingImageFilename ( )
153          { return displayingImageFilename; }
154        
155        public Boolean  getDefaultDisplayingImageFilename ( )
156          { return DEFAULT_DISPLAYING_IMAGE_FILENAME; }
157    
158        ////////////////////////////////////////////////////////////////////////
159        // mutator methods
160        ////////////////////////////////////////////////////////////////////////
161        
162        public void  setDisplayingImageFilename (
163          final Boolean  displayingImageFilename )
164        ////////////////////////////////////////////////////////////////////////
165        {
166          this.displayingImageFilename = displayingImageFilename;
167        }
168        
169        public void  setDisplayTime ( final long  displayTime )
170        ////////////////////////////////////////////////////////////////////////
171        {
172          this.displayTime = displayTime;
173        }     
174    
175        public void  setPicturesPath ( final String  picturesPath )
176        ////////////////////////////////////////////////////////////////////////
177        {
178          this.picturesPath = picturesPath;
179        }
180    
181        ////////////////////////////////////////////////////////////////////////
182        // persistence method
183        ////////////////////////////////////////////////////////////////////////
184    
185        public void  save ( )
186          throws IOException
187        ////////////////////////////////////////////////////////////////////////
188        {
189          final File  skipperPathFile = new File ( SKIPPER_PATH );
190    
191          skipperPathFile.mkdirs ( );
192    
193          XmlBeanCoder.saveToXmlFile (
194            this,
195            new File ( skipperPathFile, CONFIG_FILENAME ) );
196        }
197    
198        ////////////////////////////////////////////////////////////////////////
199        ////////////////////////////////////////////////////////////////////////
200        }