1
1
package com .mercuryirc .client ;
2
2
3
- import com .mercuryirc .client .protocol .model .Channel ;
4
- import com .mercuryirc .client .protocol .model .Message ;
5
- import com .mercuryirc .client .protocol .model .Mode ;
6
- import com .mercuryirc .client .protocol .model .Target ;
7
- import com .mercuryirc .client .protocol .model .User ;
8
- import com .mercuryirc .client .protocol .network .Connection ;
9
- import com .mercuryirc .client .protocol .network .callback .InputCallback ;
10
3
import com .mercuryirc .client .ui .ApplicationPane ;
11
- import com .mercuryirc .client .ui .Tab ;
12
4
import com .mercuryirc .client .ui .model .MessageRow ;
5
+ import com .mercuryirc .model .Channel ;
6
+ import com .mercuryirc .model .Entity ;
7
+ import com .mercuryirc .model .Message ;
8
+ import com .mercuryirc .model .Mode ;
9
+ import com .mercuryirc .model .User ;
10
+ import com .mercuryirc .network .Connection ;
11
+ import com .mercuryirc .network .callback .InputCallback ;
13
12
import javafx .application .Platform ;
14
13
15
14
import java .util .List ;
@@ -24,53 +23,63 @@ public InputCallbackImpl(ApplicationPane appPane) {
24
23
}
25
24
26
25
public void onConnect (final Connection connection ) {
27
- connection .joinChannel ("#mercury" );
26
+ connection .join ("#mercury" );
28
27
}
29
28
30
29
@ Override
31
- public void onMessage (final Connection connection , final Message message ) {
30
+ public void onPrivMsg (final Connection connection , final Message message ) {
32
31
Platform .runLater (new Runnable () {
32
+ @ Override
33
33
public void run () {
34
- Target target = connection .resolveTarget (message .getTarget ());
35
- MessageRow row = new MessageRow (connection , message );
36
- Tab tab ;
37
- if (message .getType () == Message .Type .NOTICE ) {
38
- tab = appPane .getTabPane ().getSelected ();
39
- } else {
40
- if (message .getTarget ().startsWith ("#" )) {
41
- tab = appPane .getTabPane ().get (target );
42
- } else {
43
- tab = appPane .getTabPane ().get (connection .resolveTarget (message .getSource ()));
44
- }
45
- }
46
- tab .getContentPane ().getMessagePane ().addRow (row );
34
+ boolean highlight = message .getMessage ().toLowerCase ().contains (connection .getLocalUser ().getName ().toLowerCase ());
35
+ appPane .getTabPane ().addTargetedMessage (connection , message , highlight ? MessageRow .Type .HIGHLIGHT : MessageRow .Type .PRIVMSG );
47
36
}
48
37
});
49
38
}
50
39
51
40
@ Override
52
- public void onCTCP (Connection connection , String from , String ctcp ) {
53
- String arch = System .getProperty ("os.arch" );
54
- if (arch .equals ("amd64" ))
55
- arch = "x64" ;
56
-
57
- String sysInfo = System .getProperty ("os.name" ) + " (" + arch + ", "
58
- + Runtime .getRuntime ().availableProcessors () + " cores)" ;
41
+ public void onNotice (final Connection connection , final Message message ) {
42
+ Platform .runLater (new Runnable () {
43
+ @ Override
44
+ public void run () {
45
+ appPane .getTabPane ().addUntargetedMessage (connection , message , MessageRow .Type .NOTICE );
46
+ }
47
+ });
48
+ }
59
49
60
- connection .ctcp (from , "VERSION MercuryIRC // " + sysInfo );
50
+ @ Override
51
+ public void onCtcp (final Connection connection , final Message message ) {
52
+ Platform .runLater (new Runnable () {
53
+ @ Override
54
+ public void run () {
55
+ String ctcp = message .getMessage ();
56
+ if (ctcp .startsWith ("ACTION" )) {
57
+ Message _message = new Message (message .getSource (), message .getTarget (), ctcp .substring (7 ));
58
+ appPane .getTabPane ().addTargetedMessage (connection , _message , MessageRow .Type .EVENT );
59
+ } else {
60
+ Message _message = new Message (message .getSource (), message .getTarget (), ctcp );
61
+ appPane .getTabPane ().addUntargetedMessage (connection , _message , MessageRow .Type .CTCP );
62
+ if (ctcp .equals ("VERSION" )) {
63
+ String arch = System .getProperty ("os.arch" );
64
+ if (arch .equals ("amd64" )) {
65
+ arch = "x64" ;
66
+ }
67
+ String sysInfo = System .getProperty ("os.name" ) + " (" + arch + " "
68
+ + Runtime .getRuntime ().availableProcessors () + "-core)" ;
69
+ connection .ctcp (message .getSource (), "VERSION MercuryIRC // " + sysInfo );
70
+ }
71
+ }
72
+ }
73
+ });
61
74
}
62
75
63
76
@ Override
64
77
public void onChannelJoin (final Connection connection , final Channel channel , final User user ) {
65
78
Platform .runLater (new Runnable () {
79
+ @ Override
66
80
public void run () {
67
- MessageRow row = new MessageRow (channel .getName (), user .getName () + " has joined the channel" , MessageRow .Type .EVENT );
68
- Tab tab = appPane .getTabPane ().get (channel );
69
- tab .getContentPane ().getMessagePane ().addRow (row );
70
- tab .getContentPane ().getTopicPane ().setTopic (channel .getTopic ());
71
- if (user .equals (connection .getLocalUser ())) {
72
- appPane .getTabPane ().select (tab );
73
- }
81
+ Message message = new Message (user , channel , "has joined the channel" );
82
+ appPane .getTabPane ().addTargetedMessage (connection , message , MessageRow .Type .JOIN );
74
83
}
75
84
});
76
85
}
@@ -80,9 +89,10 @@ public void onChannelPart(final Connection connection, final Channel channel, fi
80
89
Platform .runLater (new Runnable () {
81
90
@ Override
82
91
public void run () {
83
- appPane .getTabPane ().get (channel ).getContentPane ().getMessagePane ().addRow (new MessageRow (channel .getName (), user .getName () + " has left the channel" + (reason == null ? "" : " (" + reason + ")" ), MessageRow .Type .EVENT ));
92
+ Message message = new Message (user , channel , "has left the channel" );
93
+ appPane .getTabPane ().addTargetedMessage (connection , message , MessageRow .Type .PART );
84
94
if (user .equals (connection .getLocalUser ())) {
85
- appPane .getTabPane ().close (appPane .getTabPane ().get (channel ));
95
+ appPane .getTabPane ().close (appPane .getTabPane ().get (connection , channel ));
86
96
}
87
97
}
88
98
});
@@ -93,31 +103,29 @@ public void onUserQuit(Connection connection, final User user, final String reas
93
103
Platform .runLater (new Runnable () {
94
104
@ Override
95
105
public void run () {
96
- for (Tab tab : appPane .getTabPane ().getItems ()) {
97
- if (tab .getContentPane ().getUserPane ().getUsers ().contains (user )) {
98
- tab .getContentPane ().getMessagePane ().addRow (new MessageRow (tab .getTarget ().getName (), user .getName () + " has quit" + (reason == null ? "" : " (" + reason + ")" ), MessageRow .Type .EVENT ));
99
- }
100
- }
106
+ Message message = new Message (user , null , "has quit (" + reason + ")" );
107
+ appPane .getTabPane ().addUserStatusMessage (user , message , MessageRow .Type .PART );
101
108
}
102
109
});
103
110
}
104
111
105
112
@ Override
106
- public void onChannelNickList (Connection connection , final Channel channel , final Set <String > nicks ) {
113
+ public void onChannelNickList (final Connection connection , final Channel channel , final Set <User > users ) {
107
114
Platform .runLater (new Runnable () {
108
115
public void run () {
109
- appPane .getTabPane ().get (channel ).getContentPane ().getUserPane ().setUsers (nicks );
116
+ appPane .getTabPane ().get (connection , channel ).getContentPane ().getUserPane ().setUsers (users );
110
117
}
111
118
});
112
119
}
113
120
114
121
@ Override
115
- public void onTopicChange (Connection connection , final Channel channel , final String who , final String topic ) {
122
+ public void onTopicChange (final Connection connection , final Channel channel , final User source , final String topic ) {
116
123
Platform .runLater (new Runnable () {
117
124
@ Override
118
125
public void run () {
119
- appPane .getTabPane ().get (channel ).getContentPane ().getMessagePane ().addRow (new MessageRow (channel .getName (), who + " has set the topic to: " + topic , MessageRow .Type .EVENT ));
120
- appPane .getTabPane ().get (channel ).getContentPane ().getTopicPane ().setTopic (topic );
126
+ Message message = new Message (source , channel , "has set the topic: " + topic );
127
+ appPane .getTabPane ().addTargetedMessage (connection , message , MessageRow .Type .EVENT );
128
+ appPane .getTabPane ().get (connection , channel ).getContentPane ().getTopicPane ().setTopic (topic );
121
129
}
122
130
});
123
131
}
@@ -127,24 +135,11 @@ public void onUserNickChange(final Connection connection, final User user, final
127
135
Platform .runLater (new Runnable () {
128
136
@ Override
129
137
public void run () {
130
- for (Tab tab : appPane .getTabPane ().getItems ()) {
131
- for (String _nick : tab .getContentPane ().getUserPane ().getUsers ()) {
132
- User _user = (User ) connection .resolveTarget (_nick );
133
- if (_nick .equals (oldNick ) && _user .getServer ().equals (user .getServer ())) {
134
- tab .getContentPane ().getMessagePane ().addRow (new MessageRow (tab .getTarget ().getName (), oldNick + " has changed their name to " + user .getName (), MessageRow .Type .EVENT ));
135
- break ;
136
- }
137
- }
138
-
139
- /*
140
- topicpane now has more info. can't get CSS right. changed the way InputPane nick is set, since it didn't like the Property being set from the network thread. now works, but nick changing is still messed up because it doesn't update the list of channel users w/the new nick.
141
- */
142
-
143
- if (user .equals (connection .getLocalUser ())) {
144
- tab .getContentPane ().getMessagePane ().getInputPane ().setNick (user .getName ());
145
- }
138
+ Message message = new Message (null , null , oldNick + " is now known as " + user .getName ());
139
+ appPane .getTabPane ().addUserStatusMessage (user , message , MessageRow .Type .EVENT );
140
+ if (user .equals (connection .getLocalUser ())) {
141
+ appPane .getContentPane ().getMessagePane ().getInputPane ().setNick (user .getName ());
146
142
}
147
-
148
143
}
149
144
});
150
145
}
@@ -154,17 +149,59 @@ public void onUserKick(final Connection connection, final Channel channel, final
154
149
Platform .runLater (new Runnable () {
155
150
@ Override
156
151
public void run () {
157
- appPane .getTabPane ().get (channel ).getContentPane ().getMessagePane ().addRow (new MessageRow (channel .getName (), user .getName () + " has been kicked out of the channel" + (reason == null ? "" : " (" + reason + ")" ), MessageRow .Type .EVENT ));
158
- if (user .equals (connection .getLocalUser ())) {
159
- appPane .getTabPane ().close (appPane .getTabPane ().get (channel ));
160
- }
152
+ Message message = new Message (user , channel , "has been kicked from the channel" );
153
+ appPane .getTabPane ().addTargetedMessage (connection , message , MessageRow .Type .PART );
161
154
}
162
155
});
163
156
}
164
157
165
158
@ Override
166
159
public void onChannelModeList (Connection connection , Channel channel , Mode .Type type , List <Mode > list ) {
167
- //To change body of implemented methods use File | Settings | File Templates.
160
+ Message message = new Message (null , null , "Channel " + type .toString () + " list:" );
161
+ appPane .getTabPane ().addTargetedMessage (connection , message , MessageRow .Type .EVENT );
162
+ for (Mode mode : list ) {
163
+ Message message2 = new Message (null , null , ((User ) mode .getTarget ()).getHost () + " by " + mode .getSource ().getHost ());
164
+ appPane .getTabPane ().addTargetedMessage (connection , message2 , MessageRow .Type .EVENT );
165
+ }
166
+ }
167
+
168
+ @ Override
169
+ public void onError (final Connection connection , final String error ) {
170
+ Platform .runLater (new Runnable () {
171
+ @ Override
172
+ public void run () {
173
+ Message message = new Message (null , null , error );
174
+ appPane .getTabPane ().addUntargetedMessage (connection , message , MessageRow .Type .ERROR );
175
+ }
176
+ });
177
+ }
178
+
179
+ @ Override
180
+ public void onUnknownCommand (final Connection connection , final String command ) {
181
+ Platform .runLater (new Runnable () {
182
+ @ Override
183
+ public void run () {
184
+ Message message = new Message (null , null , "Unknown command: " + command );
185
+ appPane .getTabPane ().addUntargetedMessage (connection , message , MessageRow .Type .ERROR );
186
+ }
187
+ });
188
+ }
189
+
190
+ @ Override
191
+ public void onModeChange (final Connection connection , final Entity target , final Set <Mode > modes , final boolean add ) {
192
+ Platform .runLater (new Runnable () {
193
+ @ Override
194
+ public void run () {
195
+ for (Mode mode : modes ) {
196
+ Message message = new Message (mode .getSource (), target , (add ? "" : "un" ) + "sets " + mode .getType ().toString () + " on " + mode .getTarget ().getName () + (mode .getTarget ().equals (target ) ? "" : " in " + target .getName ()));
197
+ if (target instanceof Channel ) {
198
+ appPane .getTabPane ().addTargetedMessage (connection , message , MessageRow .Type .EVENT );
199
+ } else {
200
+ appPane .getTabPane ().addUntargetedMessage (connection , message , MessageRow .Type .EVENT );
201
+ }
202
+ }
203
+ }
204
+ });
168
205
}
169
206
170
207
}
0 commit comments