summaryrefslogtreecommitdiff
path: root/src/Client/ChatClient.java
blob: ac6e6acc11f956c68d78d4d838f8f17fde3aca00 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
package Client;
import java.io.*;
import java.net.Socket;





import Server.ChatServer;

public class ChatClient
{
	private String nick;
	private String realname;
	private	ChatClientWriter writer;
	private	UserInterface ui;
	
	/** returning the nick name */
	public String getNick ()
	{
		return this.nick;
	}
	/** returning the real name */
	public String getRealname ()
	{
		return this.realname;
	}
	/** changing the nick name */
	public void setNick (String nick)
	{
		this.nick = nick;
	}
	/** changing the real name */
	public void setRealname (String realname)
	{
		this.realname = realname;
	}
	
	public void runSendline (String line)
	{
		writer.sendLine(line);
	}
	
	public boolean connect (String host, int port)
	{
		Socket soc;
				
		try
		{
			soc = new Socket(host, port);
			ChatClientReader reader = new ChatClientReader(soc);
								
			reader.setDisplay(ui);
			
			this.writer = new ChatClientWriter(soc,this);

			reader.start();
			writer.start();
			
			return true;
			
		} catch (IOException e)
		{
			System.err.println("Failed connecting to server: " + host + ":" + port + " (" + e + ")");
			return false;
		}
	}
	
	public static void main(String[] args) throws IOException
	{
 		ChatClient client = new ChatClient();
		client.setNick("dor");
		client.setRealname("Dor bivas");
		client.ui = new UserInterface(client);
		
		
		//soc.close();
	}

}



/** Tasks
 * TODO: 1. Data received from the network will be written to the output window.
 * 
 * TODO: 2. When the user presses "Connect", a message will be sent to a channel:
 * use PRIVMSG to channel #chat.
 * 
 * TODO: 3. After the user pressed "Connect", the button is displayed
 * as "disabled".
 *
 * TODO: 4. But we do want to allow sending commands to the channel. A
 * message line that begins with the word "/QUOTE", will be sent as is
 * (except the word "/QUOTE") to the server.
 * 
 * TODO: 5. Join a channel at startup: For any server besides our own we need to send
 * a JOIN command (see how it is handled in the server).
 * 
 * TODO: 6. Don't allow sending text until we joined a channel.
 * 
 * TODO: 7. When we get from the server a PRIVMSG, parse it and show who sent it.
 * Print other messages (Server messages) differently.
 */

/** Later
 * 
 * * Fix or remove all the fixme-s.
 * * Closing the program (Close, ALT-F4) does not end the process
 * * The output buffer does not have a scroll bar.
 * * Pressing Enter in the message line does not send text.
 * * It may be handy to implement other client commands:
 *   - /NICK - changes the nick
 *   - /CLEAR - clears the output window
 *   - /SAY - print a message directly to output window
 *   - // - sends just a leading '/' (in case you want to send '/NICK whatever' to the channel
 *   - /HELP - print a help message to the user
 */