Author: bdonlan
Date: 2005-01-06 23:14:34 -0500 (Thu, 06 Jan 2005)
New Revision: 532
Added:
trunk/misc/javer/src/javer/UserQueryTab.java
Modified:
/
trunk/misc/javer/src/javer/ChannelTab.java
trunk/misc/javer/src/javer/HaverClient.java
trunk/misc/javer/src/javer/JaverUIPanel.java
trunk/misc/javer/src/javer/SimpleTextTab.java
Log:
[EMAIL PROTECTED]: bdonlan | 2005-01-07T04:13:27.126830Z
Added user queries; fixed splitpane positioning bug
Property changes on:
___________________________________________________________________
Name: svk:merge
- 1f59643a-e6e5-0310-bc24-f7d4c744f460:/haver/local:11205
+ 1f59643a-e6e5-0310-bc24-f7d4c744f460:/haver/local:11207
Modified: trunk/misc/javer/src/javer/ChannelTab.java
===================================================================
--- trunk/misc/javer/src/javer/ChannelTab.java 2005-01-07 02:22:52 UTC (rev
531)
+++ trunk/misc/javer/src/javer/ChannelTab.java 2005-01-07 04:14:34 UTC (rev
532)
@@ -7,6 +7,8 @@
package javer;
import java.io.*;
import java.util.*;
+import java.awt.*;
+
/**
*
* @author bdonlan
@@ -16,6 +18,7 @@
HaverClient cli;
String channel;
Set users;
+ boolean positioned = false;
/** Creates new form ChannelTab */
public ChannelTab(HaverClient cli, String channel) {
@@ -25,6 +28,10 @@
initComponents();
}
+ public String getChannel() {
+ return channel;
+ }
+
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
@@ -60,11 +67,13 @@
}
public void putText(String s) {
- boolean atEnd =
- (chatArea.getCaretPosition() == chatArea.getText().length() - 1);
+ /* XXX: this is a bit of a hack */
+ if (!positioned) {
+ jSplitPane1.setDividerLocation(0.8);
+ positioned = true;
+ }
chatArea.append(s + "\n");
- if (atEnd)
- chatArea.setCaretPosition(chatArea.getText().length() - 1);
+ chatArea.setCaretPosition(chatArea.getText().length());
}
public void updateUsers() {
Modified: trunk/misc/javer/src/javer/HaverClient.java
===================================================================
--- trunk/misc/javer/src/javer/HaverClient.java 2005-01-07 02:22:52 UTC (rev
531)
+++ trunk/misc/javer/src/javer/HaverClient.java 2005-01-07 04:14:34 UTC (rev
532)
@@ -56,6 +56,10 @@
start();
}
+ public String getUID() {
+ return uid;
+ }
+
public void connect(String uid, String hostname) throws
java.io.IOException {
connect(uid, hostname, 7070);
}
@@ -122,6 +126,12 @@
eventMessage(args[1], args[2], args[3], msgArgs);
}
});
+ serverevents.put("PMSG", new ServerHandler() {
+ public void trigger(String[] args) {
+ String[] msgArgs = subStringArray(args, 3, args.length - 1);
+ eventPrivateMessage(args[1], args[2], msgArgs);
+ }
+ });
serverevents.put("JOIN", new ServerHandler() {
public void trigger(String[] args) {
if (args[2].equals(uid)) {
@@ -178,6 +188,10 @@
send("JOIN\t" + channel);
}
+ public void part(String channel) throws java.io.IOException {
+ send("PART\t" + channel);
+ }
+
public void eventIdentAccepted() {
/* STUB */
}
@@ -221,6 +235,21 @@
/* STUB */
}
+ public void eventPrivateMessage(String who, String type, String[] args) {
+ if (type.equals("\"")) {
+ eventPrivateNormalMessage(who, args[0]);
+ } else if (type.equals(":")) {
+ eventPrivateAction(who, args[0]);
+ }
+ }
+
+ public void eventPrivateNormalMessage(String who, String arg) {
+ /* STUB */
+ }
+ public void eventPrivateAction(String who, String arg) {
+ /* STUB */
+ }
+
public void eventChannelList(String where, Set names) {
/* STUB */
}
@@ -255,7 +284,27 @@
public void sendAction(String where, String message) throws IOException {
sendMessage(where, ":", message);
}
-
+
+ public void sendPrivateMessage(String target, String type, String message)
throws IOException {
+ send("PMSG\t" + target + "\t" + type + "\t" + message);
+ }
+
+ public void sendPrivateMessage(String target, String type, String[]
message) throws IOException {
+ String s = "PMSG\t" + target + "\t" + type + "\t";
+ for (int i = 0; i < message.length; i++) {
+ s = s + message[i];
+ }
+ send(s);
+ }
+
+ public void sendPrivateNormalMessage(String target, String message) throws
IOException {
+ sendPrivateMessage(target, "\"", message);
+ }
+
+ public void sendPrivateAction(String target, String message) throws
IOException {
+ sendPrivateMessage(target, ":", message);
+ }
+
public void eventIdenting() {
/* STUB */
}
Modified: trunk/misc/javer/src/javer/JaverUIPanel.java
===================================================================
--- trunk/misc/javer/src/javer/JaverUIPanel.java 2005-01-07 02:22:52 UTC
(rev 531)
+++ trunk/misc/javer/src/javer/JaverUIPanel.java 2005-01-07 04:14:34 UTC
(rev 532)
@@ -20,6 +20,9 @@
int port = 7070;
Map commands = new HashMap();
Map tabs = new HashMap();
+ Map channelTabs = new HashMap();
+ Map userTabs = new HashMap();
+ Map tabToPair = new HashMap();
TabPair serverTabPair = new TabPair();
SimpleTextTab serverTab = new SimpleTextTab();
@@ -49,7 +52,9 @@
protected void addTab(TabPair p) {
p.index = jTabbedPane1.getTabCount();
jTabbedPane1.addTab(p.title, p.tab);
+ jTabbedPane1.setSelectedIndex(p.index);
tabs.put(p.title, p);
+ tabToPair.put(p.tab, p);
}
protected TabPair findTab(String tag) {
@@ -61,6 +66,7 @@
Iterator it;
if (p == null || !tabs.containsValue(p))
return;
+ jTabbedPane1.removeTabAt(p.index);
tabs.remove(p.title);
it = tabs.values().iterator();
while (it.hasNext()) {
@@ -69,8 +75,34 @@
x.index--;
}
}
+ try {
+ channelTabs.remove(((ChannelTab)p.tab).getChannel());
+ } catch (ClassCastException e) {}
+ try {
+ userTabs.remove(((UserQueryTab)p.tab).getUID());
+ } catch (ClassCastException e) {}
+ tabToPair.remove(p.tab);
}
+ protected void killTab(java.awt.Component t) {
+ TabPair p = (TabPair)tabToPair.get(t);
+ if (p.index == 0)
+ return;
+ killTab(p);
+ }
+
+ protected UserQueryTab getQuery(String who) {
+ TabPair p = (TabPair)userTabs.get(who);
+ if (p != null)
+ return (UserQueryTab)p.tab;
+ p = new TabPair();
+ p.title = "Query: " + who;
+ p.tab = new UserQueryTab(cli, who);
+ addTab(p);
+ userTabs.put(who, p);
+ return (UserQueryTab)p.tab;
+ }
+
public class Client extends HaverClient {
public void eventDebugMessage(String s) {
System.out.println(s);
@@ -89,17 +121,19 @@
}
public void eventChannelPart(String where) {
- killTab(findTab("Channel: " + where));
+ killTab((TabPair)channelTabs.get(where));
+ channelTabs.remove(where);
super.eventChannelPart(where);
}
public void eventChannelJoin(String where) {
- TabPair t = findTab(where);
+ TabPair t = (TabPair) channelTabs.get(where);
if (t == null) {
t = new TabPair();
t.tab = new ChannelTab(cli, where);
t.title = "Channel: " + where;
addTab(t);
+ channelTabs.put(where, t);
}
QueryTab qt = (QueryTab) t.tab;
qt.putText("--- Joined " + where);
@@ -116,7 +150,7 @@
public void eventChannelList(String where, Set names) {
ChannelTab tab;
- TabPair t = findTab("Channel: " + where);
+ TabPair t = (TabPair) channelTabs.get(where);
if (t == null)
return;
tab = (ChannelTab) t.tab;
@@ -143,7 +177,7 @@
public void eventNormalMessage(String where, String who, String arg) {
TextTab tab;
- TabPair t = findTab("Channel: " + where);
+ TabPair t = (TabPair) channelTabs.get(where);
if (t == null)
return;
tab = (TextTab) t.tab;
@@ -153,7 +187,7 @@
public void eventChannelPart(String where, String who) {
ChannelTab tab;
- TabPair t = findTab("Channel: " + where);
+ TabPair t = (TabPair) channelTabs.get(where);
if (t == null)
return;
tab = (ChannelTab) t.tab;
@@ -164,7 +198,7 @@
public void eventChannelJoin(String where, String who) {
ChannelTab tab;
- TabPair t = findTab("Channel: " + where);
+ TabPair t = (TabPair) channelTabs.get(where);
if (t == null)
return;
tab = (ChannelTab) t.tab;
@@ -178,13 +212,28 @@
public void eventAction(String where, String who, String arg) {
TextTab tab;
- TabPair t = findTab("Channel: " + where);
+ TabPair t = (TabPair) channelTabs.get(where);
if (t == null)
return;
tab = (TextTab) t.tab;
tab.putText("* " + who + " " + arg);
super.eventAction(where, who, arg);
}
+
+ public void eventPrivateMessage(String who, String type, String[]
args) {
+
+ super.eventPrivateMessage(who, type, args);
+ }
+
+ public void eventPrivateNormalMessage(String who, String arg) {
+ getQuery(who).putText("<" + who + "> " + arg);
+ super.eventPrivateNormalMessage(who, arg);
+ }
+
+ public void eventPrivateAction(String who, String arg) {
+ getQuery(who).putText("* " + who + " " + arg);
+ super.eventPrivateAction(who, arg);
+ }
}
public void disconnect() {
@@ -284,12 +333,82 @@
});
commands.put("join", new CommandHandler() {
boolean trigger(String arg) throws IOException {
- if (findTab(arg) != null)
+ if (channelTabs.containsKey(arg))
return true;
cli.join(arg);
return true;
}
});
+ commands.put("part", new CommandHandler() {
+ boolean trigger(String arg) throws IOException {
+ if (arg == "") {
+ try {
+ ChannelTab t;
+ t = (ChannelTab) jTabbedPane1.getSelectedComponent();
+ arg = t.getChannel();
+ } catch (ClassCastException e) {
+ return false;
+ }
+ }
+ if (!channelTabs.containsKey(arg))
+ return true;
+ cli.part(arg);
+ return true;
+ }
+ });
+ commands.put("quit", new CommandHandler() {
+ boolean trigger(String arg) {
+ System.exit(0);
+ return false;
+ }
+ });
+ commands.put("query", new CommandHandler() {
+ boolean trigger(String arg) {
+ UserQueryTab tab = getQuery(arg);
+ jTabbedPane1.setSelectedComponent(tab);
+ return true;
+ }
+ });
+ commands.put("msg", new CommandHandler() {
+ boolean trigger(String arg) {
+ UserQueryTab tab;
+ String who, what;
+ int space = arg.indexOf(' ');
+ if (space == -1)
+ return false;
+ who = arg.substring(0, space);
+ what = arg.substring(space + 1);
+
+ tab = getQuery(who);
+ try {
+ tab.sendText(what);
+ } catch (IOException e) { /* XXX */ }
+ return true;
+ }
+ });
+ commands.put("act", new CommandHandler() {
+ boolean trigger(String arg) {
+ UserQueryTab tab;
+ String who, what;
+ int space = arg.indexOf(' ');
+ if (space == -1)
+ return false;
+ who = arg.substring(0, space);
+ what = arg.substring(space + 1);
+
+ tab = getQuery(who);
+ try {
+ tab.sendAction(what);
+ } catch (IOException e) { /* XXX */ }
+ return true;
+ }
+ });
+ commands.put("close", new CommandHandler() {
+ boolean trigger(String arg) {
+ killTab(jTabbedPane1.getSelectedComponent());
+ return true;
+ }
+ });
}
public boolean processLine(String query) {
@@ -310,6 +429,8 @@
return false;
System.out.println("triggering\n");
return
((CommandHandler)commands.get(command)).trigger(arg);
+ } else {
+ query = query.substring(2);
}
}
try {
Modified: trunk/misc/javer/src/javer/SimpleTextTab.java
===================================================================
--- trunk/misc/javer/src/javer/SimpleTextTab.java 2005-01-07 02:22:52 UTC
(rev 531)
+++ trunk/misc/javer/src/javer/SimpleTextTab.java 2005-01-07 04:14:34 UTC
(rev 532)
@@ -35,11 +35,8 @@
}//GEN-END:initComponents
public void putText(String s) {
- boolean atEnd =
- (textField.getCaretPosition() == textField.getText().length() - 1);
textField.append(s + "\n");
- if (atEnd)
- textField.setCaretPosition(textField.getText().length() - 1);
+ textField.setCaretPosition(textField.getText().length() - 1);
}
// Variables declaration - do not modify//GEN-BEGIN:variables
Added: trunk/misc/javer/src/javer/UserQueryTab.java
===================================================================
--- trunk/misc/javer/src/javer/UserQueryTab.java 2005-01-07 02:22:52 UTC
(rev 531)
+++ trunk/misc/javer/src/javer/UserQueryTab.java 2005-01-07 04:14:34 UTC
(rev 532)
@@ -0,0 +1,40 @@
+/*
+ * UserQueryTab.java
+ *
+ * Created on January 6, 2005, 10:39 PM
+ */
+
+package javer;
+
+/**
+ *
+ * @author bdonlan
+ */
+public class UserQueryTab extends SimpleTextTab implements QueryTab {
+
+ String who;
+ HaverClient cli;
+
+ /** Creates a new instance of UserQueryTab */
+ public UserQueryTab(HaverClient cli, String who) {
+ super();
+ this.cli = cli;
+ this.who = who;
+ putText("--- Opening query with: " + who);
+ }
+
+ public String getUID() {
+ return who;
+ }
+
+ public void sendAction(String s) throws java.io.IOException {
+ putText("* " + cli.getUID() + " " + s);
+ cli.sendPrivateAction(who, s);
+ }
+
+ public void sendText(String s) throws java.io.IOException {
+ putText("<" + cli.getUID() + "> " + s);
+ cli.sendPrivateNormalMessage(who, s);
+ }
+
+}
Property changes on: trunk/misc/javer/src/javer/UserQueryTab.java
___________________________________________________________________
Name: svn:eol-style
+ native