001    /*
002     * cs101 ServerDialog
003     * $Id: ServerDialog.java,v 1.1.1.1 2002/06/05 21:56:32 root Exp $
004     *
005     * Developed for "Rethinking CS101", a project of Lynn Andrea Stein's AP Group.
006     * For more information, see <a href="http://www.ai.mit.edu/projects/cs101/">the
007     * CS101 homepage</a> or email <las@ai.mit.edu>.
008     *
009     * Copyright (C) 1996 Massachusetts Institute of Technology.
010     * Please do not redistribute without obtaining permission.
011     */
012    
013    package cs101.awt;
014    
015    /**
016     * Manages a top level query dialog box to get port connection information.
017     * To display the dialog box, use ask(); to extract the port number, use
018     * getPort().<p>
019     * 
020     * Relies heavily on QueryDialog.
021     *
022     * <P>Copyright (c) 1998 Massacuhsetts Institute of Technology
023     *
024     * @author Todd C. Parnell, tparnell@ai.mit.edu
025     * @author Nathan Williams <nathanw@mit.edu>
026     * @author Lynn Andrea Stein <las@ai.mit.edu>
027     * @version $Id: ServerDialog.java,v 1.1.1.1 2002/06/05 21:56:32 root Exp $
028     *
029     * @see cs101.awt.QueryDialog
030     * @see #ask
031     * @see #getPort
032     */
033    public class ServerDialog {
034      
035        protected QueryDialog qd;
036        protected String[] answers,
037                                   questions;
038        /**
039         * Creates the dialog information.
040         * To show the dialog, call ask().
041         * To retrieve information, use int getPort().
042         */
043         public ServerDialog() {
044             this.questions = new String[1];
045             this.questions[0] = "Port";
046             this.answers = new String[1];
047             this.answers[0] = "4321";
048             this.qd = new QueryDialog("Please enter the port to listen on.",
049                                       this.questions,
050                                       this.answers);
051        }
052    
053        /**
054         * Actually display the query dialog and get the answers from the user.
055         *
056         * @see #getPort()
057         */ 
058        public synchronized void ask() {
059            this.answers = this.qd.ask();
060        }
061    
062        /**
063         * Return the port number from the user.  Not guaranteed to be sensible
064         * if ask hasn't aready been called.
065         *
066         * @see #ask()
067         */
068        public synchronized int getPort() {
069            try {
070                return Integer.parseInt( this.answers[0] );
071            } catch ( NumberFormatException e ) {
072                throw new RuntimeException("Bad port number '"+answers[0]+"'");
073            }
074        }
075    
076    }
077        
078        
079    /*
080     * $Log: ServerDialog.java,v $
081     * Revision 1.1.1.1  2002/06/05 21:56:32  root
082     * CS101 comes to Olin finally.
083     *
084     * Revision 1.5  1998/07/24 17:06:31  tparnell
085     * Placate new javadoc behavior
086     *
087     * Revision 1.4  1998/07/22 18:18:41  tparnell
088     * migration from cs101.util to cs101.*
089     *
090     * Revision 1.3  1998/07/21 20:19:17  tparnell
091     * javadoc bugfix
092     *
093     * Revision 1.2  1998/06/03 19:52:01  tparnell
094     * update from Java 1.0 to 1.1
095     *
096     * Revision 1.1  1998/03/13 22:18:21  tparnell
097     * Import from server crash.  I think the src and class files match up.
098     *
099     * Revision 1.1  1996/11/18 17:25:06  las
100     * Added revised SharedWhiteboard support classes.  These versions of
101     * Client and Server supercede the previous ones and are not directly
102     * backwards compatible.  In particular, Server is an instantiable class
103     * rather than a primarily static one (use RunServer to run it), and
104     * Client uses StringHandler rather than subclassing to specialize it.
105     * Line.java just picked up some obscure documentation along the way.
106     * Otherwise, classes are direct imports from SharedWhiteboard.
107     *
108     * Revision 1.4  1996/11/17 22:28:17  las
109     * Everything compiles (now).  Client, Server, ClientDialog, ServerDialog,
110     * StringHandler, and RunServer need to be moved to cs101.util.  But
111     * first, to test....
112     *
113     * Revision 1.3  1996/11/17 21:26:54  las
114     * Client, ClientDialog writen, not yet tested.
115     *
116     */
117