001 /*
002 * $Id: ClientDialog.java,v 1.2 2003/09/23 16:12:31 gus Exp $
003 *
004 * Developed for "Rethinking CS101", a project of Lynn Andrea Stein's AP Group.
005 * For more information, see <a href="http://www.ai.mit.edu/projects/cs101/">the
006 * CS101 homepage</a> or email <las@ai.mit.edu>.
007 *
008 * Copyright (C) 1996 Massachusetts Institute of Technology.
009 * Please do not redistribute without obtaining permission.
010 */
011 package cs101.awt;
012
013 import java.net.InetAddress;
014 import java.net.UnknownHostException;
015
016 /**
017 * Manages a top level query dialog box to get hostName and port
018 * connection information. To display the dialog box, use ask(); to
019 * extract the hostName or port number, use getHostName or getPort().<p>
020 *
021 * Relies heavily on QueryDialog.<p>
022 *
023 * Copyright (c) 1998 Massachusetts Institute of Technology
024 *
025 * @see cs101.awt.QueryDialog
026 * @see #ask
027 * @see #getHostName
028 * @see #getPort
029 *
030 * @author Todd C. Parnell, tparnell@ai.mit.edu
031 * @author Nathan Williams <nathanw@mit.edu>
032 * @author Lynn Andrea Stein <las@ai.mit.edu>
033 * @version $Id: ClientDialog.java,v 1.2 2003/09/23 16:12:31 gus Exp $
034 */
035 public class ClientDialog {
036
037 protected QueryDialog qd;
038 protected String[] answers, questions;
039
040 /**
041 * Creates the dialog information.
042 * To show the dialog, call ask().
043 * To retrieve information, use int getPort().
044 */
045 public ClientDialog() {
046 this.questions = new String[2];
047 this.questions[0] = "HostName";
048 this.questions[1] = "Port";
049 this.answers = new String[2];
050 try{
051 this.answers[0] = InetAddress.getLocalHost().getHostName();
052 } catch (UnknownHostException e) {}
053 this.answers[1] = "4321";
054 this.qd = new QueryDialog("Please enter the server host and port.",
055 questions,
056 answers);
057 }
058
059 /**
060 * Actually display the query dialog and get the answers from the user.
061 *
062 * @see #getHostName()
063 * @see #getPort()
064 */
065 public synchronized void ask() {
066 this.answers = this.qd.ask();
067 }
068
069 /**
070 * Return the host machine name from the user. Not guaranteed to be
071 * sensible if ask hasn't aready been called.
072 *
073 * @see #ask()
074 */
075 public synchronized String getHostName() {
076 return( this.answers[0] );
077 }
078
079 /**
080 * Return the port number from the user. Not guaranteed to be sensible
081 * if ask hasn't aready been called.
082 *
083 * @see #ask()
084 */
085 public synchronized int getPort() {
086 try {
087 return Integer.parseInt( this.answers[1] );
088 } catch ( NumberFormatException e ) {
089 throw new RuntimeException("Bad port number '"+answers[1]+"'");
090 }
091 }
092
093 }
094
095 /*
096 * $Log: ClientDialog.java,v $
097 * Revision 1.2 2003/09/23 16:12:31 gus
098 * javadoc fix
099 *
100 * Revision 1.1.1.1 2002/06/05 21:56:32 root
101 * CS101 comes to Olin finally.
102 *
103 * Revision 1.7 1998/07/24 17:06:26 tparnell
104 * Placate new javadoc behavior
105 *
106 * Revision 1.6 1998/07/22 18:18:33 tparnell
107 * migration from cs101.util to cs101.*
108 *
109 * Revision 1.5 1998/07/21 20:19:53 tparnell
110 * bugfix javadoc
111 *
112 * Revision 1.4 1998/06/24 21:27:21 tparnell
113 * code cleanup
114 *
115 * Revision 1.3 1998/06/22 21:26:54 tparnell
116 * merge from 6004 lab tparnell/rcddisk/cs101/util
117 *
118 * Revision 1.2 1998/06/03 21:48:42 tparnell
119 * update from Java 1.0 to 1.1
120 *
121 * Revision 1.1 1998/03/13 22:18:06 tparnell
122 * Import from server crash. I think the src and class files match up.
123 *
124 * Revision 1.1 1996/11/18 17:25:00 las
125 * Added revised SharedWhiteboard support classes. These versions of
126 * Client and Server supercede the previous ones and are not directly
127 * backwards compatible. In particular, Server is an instantiable class
128 * rather than a primarily static one (use RunServer to run it), and
129 * Client uses StringHandler rather than subclassing to specialize it.
130 * Line.java just picked up some obscure documentation along the way.
131 * Otherwise, classes are direct imports from SharedWhiteboard.
132 *
133 * Revision 1.5 1996/11/18 16:41:19 las
134 * Client, Server, their dependencies (e.g. the Dialogs and their
135 * invokers) all work. ClientTester is a bit awkward in that it doesn't
136 * echo received strings until something is read. Oh, well.
137 * Moving them to cs101.util in the next revision.
138 *
139 * Revision 1.4 1996/11/17 22:28:13 las
140 * Everything compiles (now). Client, Server, ClientDialog, ServerDialog,
141 * StringHandler, and RunServer need to be moved to cs101.util. But
142 * first, to test....
143 *
144 * Revision 1.3 1996/11/17 21:26:53 las
145 * Client, ClientDialog writen, not yet tested.
146 *
147 */
148