Author: bdonlan
Date: 2005-01-06 20:50:13 -0500 (Thu, 06 Jan 2005)
New Revision: 529
Added:
trunk/misc/javer/src/javer/ChannelTab.form
trunk/misc/javer/src/javer/ChannelTab.java
trunk/misc/javer/src/javer/QueryTab.java
trunk/misc/javer/src/javer/SimpleTextTab.form
trunk/misc/javer/src/javer/SimpleTextTab.java
trunk/misc/javer/src/javer/TextTab.java
Modified:
/
trunk/misc/javer/nbproject/build-impl.xml
trunk/misc/javer/nbproject/genfiles.properties
trunk/misc/javer/src/javer/HaverClient.java
trunk/misc/javer/src/javer/JaverUI.java
trunk/misc/javer/src/javer/JaverUIPanel.form
trunk/misc/javer/src/javer/JaverUIPanel.java
Log:
[EMAIL PROTECTED]: bdonlan | 2005-01-07T01:49:45.773847Z
Javer now has a simple tabbed interface. Far from feature-complete.
Property changes on:
___________________________________________________________________
Name: svk:merge
- 1f59643a-e6e5-0310-bc24-f7d4c744f460:/haver/local:11199
+ 1f59643a-e6e5-0310-bc24-f7d4c744f460:/haver/local:11201
Modified: trunk/misc/javer/nbproject/build-impl.xml
===================================================================
--- trunk/misc/javer/nbproject/build-impl.xml 2005-01-06 23:53:34 UTC (rev
528)
+++ trunk/misc/javer/nbproject/build-impl.xml 2005-01-07 01:50:13 UTC (rev
529)
@@ -94,7 +94,7 @@
<attribute name="name"/>
<attribute name="value"/>
<sequential>
- <property name="@{name}" value="[EMAIL PROTECTED]"/>
+ <property value="[EMAIL PROTECTED]" name="@{name}"/>
</sequential>
</macrodef>
</target>
@@ -303,7 +303,7 @@
=================
-->
<target name="-debug-start-debugger" if="netbeans.home" depends="init">
- <j2seproject:nbjpdastart
xmlns:j2seproject="http://www.netbeans.org/ns/j2se-project/1"/>
+ <j2seproject:nbjpdastart
xmlns:j2seproject="http://www.netbeans.org/ns/j2se-project/1"
name="${debug.class}"/>
</target>
<target name="-debug-start-debuggee" depends="init,compile">
<j2seproject:debug
xmlns:j2seproject="http://www.netbeans.org/ns/j2se-project/1"/>
@@ -443,7 +443,7 @@
<fail unless="applet.url">Must select one file in the IDE or set
applet.url</fail>
<j2seproject:java
xmlns:j2seproject="http://www.netbeans.org/ns/j2se-project/1"
classname="sun.applet.AppletViewer">
<customize>
- <arg line="${applet.url}"/>
+ <arg value="${applet.url}"/>
</customize>
</j2seproject:java>
</target>
@@ -454,7 +454,7 @@
-->
<target name="-debug-start-debuggee-applet" if="netbeans.home"
depends="init,compile-single">
<fail unless="applet.url">Must select one file in the IDE or set
applet.url</fail>
- <j2seproject:debug
xmlns:j2seproject="http://www.netbeans.org/ns/j2se-project/1"
args="${applet.url}" classname="sun.applet.AppletViewer"/>
+ <j2seproject:debug
xmlns:j2seproject="http://www.netbeans.org/ns/j2se-project/1"
args=""${applet.url}"" classname="sun.applet.AppletViewer"/>
</target>
<target name="debug-applet" if="netbeans.home"
depends="init,compile-single,-debug-start-debugger,-debug-start-debuggee-applet"/>
<!--
Modified: trunk/misc/javer/nbproject/genfiles.properties
===================================================================
--- trunk/misc/javer/nbproject/genfiles.properties 2005-01-06 23:53:34 UTC
(rev 528)
+++ trunk/misc/javer/nbproject/genfiles.properties 2005-01-07 01:50:13 UTC
(rev 529)
@@ -2,5 +2,5 @@
build.xml.script.CRC32=e8133476
build.xml.stylesheet.CRC32=ba5d3624
nbproject/build-impl.xml.data.CRC32=6ef497b2
-nbproject/build-impl.xml.script.CRC32=4b3443b9
-nbproject/build-impl.xml.stylesheet.CRC32=fac80600
+nbproject/build-impl.xml.script.CRC32=e20b63b8
+nbproject/build-impl.xml.stylesheet.CRC32=1cf0b40c
Added: trunk/misc/javer/src/javer/ChannelTab.form
===================================================================
--- trunk/misc/javer/src/javer/ChannelTab.form 2005-01-06 23:53:34 UTC (rev
528)
+++ trunk/misc/javer/src/javer/ChannelTab.form 2005-01-07 01:50:13 UTC (rev
529)
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<Form version="1.0" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
+
+ <Layout
class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
+ <SubComponents>
+ <Container class="javax.swing.JSplitPane" name="jSplitPane1">
+ <Constraints>
+ <Constraint
layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"
value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
+ <BorderConstraints direction="Center"/>
+ </Constraint>
+ </Constraints>
+
+ <Layout
class="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout"/>
+ <SubComponents>
+ <Container class="javax.swing.JScrollPane" name="jScrollPane1">
+ <Constraints>
+ <Constraint
layoutClass="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout"
value="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout$JSplitPaneConstraintsDescription">
+ <JSplitPaneConstraints position="left"/>
+ </Constraint>
+ </Constraints>
+
+ <Layout
class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
+ <SubComponents>
+ <Component class="javax.swing.JTextArea" name="chatArea">
+ <AuxValues>
+ <AuxValue name="JavaCodeGenerator_VariableModifier"
type="java.lang.Integer" value="0"/>
+ </AuxValues>
+ </Component>
+ </SubComponents>
+ </Container>
+ <Container class="javax.swing.JScrollPane" name="jScrollPane2">
+ <Constraints>
+ <Constraint
layoutClass="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout"
value="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout$JSplitPaneConstraintsDescription">
+ <JSplitPaneConstraints position="right"/>
+ </Constraint>
+ </Constraints>
+
+ <Layout
class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
+ <SubComponents>
+ <Component class="javax.swing.JList" name="userList">
+ <AuxValues>
+ <AuxValue name="JavaCodeGenerator_VariableModifier"
type="java.lang.Integer" value="0"/>
+ </AuxValues>
+ </Component>
+ </SubComponents>
+ </Container>
+ </SubComponents>
+ </Container>
+ </SubComponents>
+</Form>
Added: trunk/misc/javer/src/javer/ChannelTab.java
===================================================================
--- trunk/misc/javer/src/javer/ChannelTab.java 2005-01-06 23:53:34 UTC (rev
528)
+++ trunk/misc/javer/src/javer/ChannelTab.java 2005-01-07 01:50:13 UTC (rev
529)
@@ -0,0 +1,101 @@
+/*
+ * ChannelTab.java
+ *
+ * Created on January 5, 2005, 11:50 PM
+ */
+
+package javer;
+import java.io.*;
+import java.util.*;
+/**
+ *
+ * @author bdonlan
+ */
+public class ChannelTab extends javax.swing.JPanel implements QueryTab {
+
+ HaverClient cli;
+ String channel;
+ Set users;
+
+ /** Creates new form ChannelTab */
+ public ChannelTab(HaverClient cli, String channel) {
+ this.cli = cli;
+ this.channel = channel;
+ users = new java.util.TreeSet();
+ initComponents();
+ }
+
+ /** This method is called from within the constructor to
+ * initialize the form.
+ * WARNING: Do NOT modify this code. The content of this method is
+ * always regenerated by the Form Editor.
+ */
+ private void initComponents() {//GEN-BEGIN:initComponents
+ jSplitPane1 = new javax.swing.JSplitPane();
+ jScrollPane1 = new javax.swing.JScrollPane();
+ chatArea = new javax.swing.JTextArea();
+ jScrollPane2 = new javax.swing.JScrollPane();
+ userList = new javax.swing.JList();
+
+ setLayout(new java.awt.BorderLayout());
+
+ jScrollPane1.setViewportView(chatArea);
+
+ jSplitPane1.setLeftComponent(jScrollPane1);
+
+ jScrollPane2.setViewportView(userList);
+
+ jSplitPane1.setRightComponent(jScrollPane2);
+
+ add(jSplitPane1, java.awt.BorderLayout.CENTER);
+
+ }//GEN-END:initComponents
+
+ public void sendText(String s) throws java.io.IOException {
+ cli.sendNormalMessage(channel, s);
+ }
+
+ public void sendAction(String s) throws java.io.IOException {
+ cli.sendAction(channel, s);
+ }
+
+ public void putText(String s) {
+ boolean atEnd =
+ (chatArea.getCaretPosition() == chatArea.getText().length() - 1);
+ chatArea.append(s + "\n");
+ if (atEnd)
+ chatArea.setCaretPosition(chatArea.getText().length() - 1);
+ }
+
+ public void updateUsers() {
+ userList.setListData(users.toArray());
+ }
+
+ public void setUsers(Set m) {
+ try {
+ users = (SortedSet) m;
+ } catch (ClassCastException e) {
+ users = new TreeSet(m);
+ }
+ updateUsers();
+ }
+
+ public void addUser(String who) {
+ users.add(who);
+ updateUsers();
+ }
+
+ public void delUser(String who) {
+ users.remove(who);
+ updateUsers();
+ }
+
+ // Variables declaration - do not modify//GEN-BEGIN:variables
+ javax.swing.JTextArea chatArea;
+ private javax.swing.JScrollPane jScrollPane1;
+ private javax.swing.JScrollPane jScrollPane2;
+ private javax.swing.JSplitPane jSplitPane1;
+ javax.swing.JList userList;
+ // End of variables declaration//GEN-END:variables
+
+}
Property changes on: trunk/misc/javer/src/javer/ChannelTab.java
___________________________________________________________________
Name: svn:eol-style
+ native
Modified: trunk/misc/javer/src/javer/HaverClient.java
===================================================================
--- trunk/misc/javer/src/javer/HaverClient.java 2005-01-06 23:53:34 UTC (rev
528)
+++ trunk/misc/javer/src/javer/HaverClient.java 2005-01-07 01:50:13 UTC (rev
529)
@@ -20,7 +20,6 @@
private java.io.BufferedReader reader = null;
private java.util.Map wants = null;
private java.util.Map serverevents = null;
- private java.util.Map notifies = null;
private String uid = null;
private Integer lock = new Integer(0);
@@ -39,7 +38,6 @@
public HaverClient() {
initWants();
initServerEvents();
- notifies = new HashMap();
}
public void connect(String uid, java.net.Socket socket) throws
java.io.IOException {
@@ -265,4 +263,14 @@
public void listChannel(String channel) throws IOException {
send("LIST\t" + channel + "\tuser");
}
+
+ public void disconnect() {
+ try {
+ sock.close();
+ } catch(Exception e) {}
+ sock = null;
+ reader = null;
+ writer = null;
+ uid = null;
+ }
}
Modified: trunk/misc/javer/src/javer/JaverUI.java
===================================================================
--- trunk/misc/javer/src/javer/JaverUI.java 2005-01-06 23:53:34 UTC (rev
528)
+++ trunk/misc/javer/src/javer/JaverUI.java 2005-01-07 01:50:13 UTC (rev
529)
@@ -14,7 +14,7 @@
/** Creates new form JaverUI */
public JaverUI() {
- add(new JaverUIPanel());
+ add(new JaverUIPanel("odin.haverdev.org", 7070));
pack();
}
Modified: trunk/misc/javer/src/javer/JaverUIPanel.form
===================================================================
--- trunk/misc/javer/src/javer/JaverUIPanel.form 2005-01-06 23:53:34 UTC
(rev 528)
+++ trunk/misc/javer/src/javer/JaverUIPanel.form 2005-01-07 01:50:13 UTC
(rev 529)
@@ -4,55 +4,43 @@
<Layout
class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
<SubComponents>
- <Component class="javax.swing.JTextField" name="input">
- <Properties>
- <Property name="text" type="java.lang.String" value="jTextField1"/>
- </Properties>
- <Events>
- <EventHandler event="actionPerformed"
listener="java.awt.event.ActionListener"
parameters="java.awt.event.ActionEvent" handler="inputActionPerformed"/>
- <EventHandler event="keyTyped" listener="java.awt.event.KeyListener"
parameters="java.awt.event.KeyEvent" handler="inputKeyTyped"/>
- </Events>
+ <Container class="javax.swing.JTabbedPane" name="jTabbedPane1">
<Constraints>
<Constraint
layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"
value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
- <BorderConstraints direction="South"/>
+ <BorderConstraints direction="Center"/>
</Constraint>
</Constraints>
- </Component>
- <Container class="javax.swing.JSplitPane" name="jSplitPane1">
+
+ <Layout
class="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout"/>
+ </Container>
+ <Container class="javax.swing.JPanel" name="jPanel2">
<Constraints>
<Constraint
layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"
value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
- <BorderConstraints direction="Center"/>
+ <BorderConstraints direction="South"/>
</Constraint>
</Constraints>
- <Layout
class="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout"/>
+ <Layout
class="org.netbeans.modules.form.compat2.layouts.DesignBoxLayout">
+ <Property name="axis" type="int" value="1"/>
+ </Layout>
<SubComponents>
- <Container class="javax.swing.JScrollPane" name="jScrollPane1">
- <Constraints>
- <Constraint
layoutClass="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout"
value="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout$JSplitPaneConstraintsDescription">
- <JSplitPaneConstraints position="left"/>
- </Constraint>
- </Constraints>
-
- <Layout
class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
- <SubComponents>
- <Component class="javax.swing.JTextArea" name="chatWindow">
- </Component>
- </SubComponents>
- </Container>
- <Container class="javax.swing.JScrollPane" name="jScrollPane2">
- <Constraints>
- <Constraint
layoutClass="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout"
value="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout$JSplitPaneConstraintsDescription">
- <JSplitPaneConstraints position="right"/>
- </Constraint>
- </Constraints>
-
- <Layout
class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
- <SubComponents>
- <Component class="javax.swing.JList" name="userList">
- </Component>
- </SubComponents>
- </Container>
+ <Component class="javax.swing.JTextField" name="input">
+ <Properties>
+ <Property name="text" type="java.lang.String" value="jTextField1"/>
+ </Properties>
+ <Events>
+ <EventHandler event="actionPerformed"
listener="java.awt.event.ActionListener"
parameters="java.awt.event.ActionEvent" handler="inputActionPerformed"/>
+ <EventHandler event="keyTyped"
listener="java.awt.event.KeyListener" parameters="java.awt.event.KeyEvent"
handler="inputKeyTyped"/>
+ </Events>
+ </Component>
+ <Component class="javax.swing.JLabel" name="status">
+ <Properties>
+ <Property name="text" type="java.lang.String" value="NOT
CONNECTED"/>
+ <Property name="minimumSize" type="java.awt.Dimension"
editor="org.netbeans.beaninfo.editors.DimensionEditor">
+ <Dimension value="[300, 300]"/>
+ </Property>
+ </Properties>
+ </Component>
</SubComponents>
</Container>
</SubComponents>
Modified: trunk/misc/javer/src/javer/JaverUIPanel.java
===================================================================
--- trunk/misc/javer/src/javer/JaverUIPanel.java 2005-01-06 23:53:34 UTC
(rev 528)
+++ trunk/misc/javer/src/javer/JaverUIPanel.java 2005-01-07 01:50:13 UTC
(rev 529)
@@ -14,125 +14,153 @@
*/
public class JaverUIPanel extends java.awt.Panel {
- Client cli;
- Set names = new HashSet();
+ Client cli = null;
+ String host = null;
+ String uid = null;
+ int port = 7070;
+ Map commands = new HashMap();
+ Map tabs = new HashMap();
+ TabPair serverTabPair = new TabPair();
+ SimpleTextTab serverTab = new SimpleTextTab();
/** Creates new form JaverUIPanel */
- public JaverUIPanel() {
+ public JaverUIPanel(String hostname, int port) {
+ this.host = hostname;
+ this.port = port;
+ initCommands();
initComponents();
- jSplitPane1.setDividerLocation(.8);
- cli = new Client();
- try {
- cli.connect("bd_javer", "odin.haverdev.org", 7070);
- } catch (IOException e) {
- putLine(e.getStackTrace().toString());
+ serverTabPair.tab = serverTab;
+ serverTabPair.title = "Server";
+ addTab(serverTabPair);
+ disconnect();
+ }
+
+ protected abstract class CommandHandler {
+ public CommandHandler () {}
+ abstract boolean trigger(String arg) throws IOException;
+ }
+
+ public final class TabPair {
+ java.awt.Component tab;
+ int index;
+ String title;
+ }
+
+ protected void addTab(TabPair p) {
+ p.index = jTabbedPane1.getTabCount();
+ jTabbedPane1.addTab(p.title, p.tab);
+ tabs.put(p.title, p);
+ }
+
+ protected TabPair findTab(String tag) {
+ TabPair t = (TabPair) tabs.get(tag);
+ return t;
+ }
+
+ protected void killTab(TabPair p) {
+ Iterator it;
+ if (p == null || !tabs.containsValue(p))
+ return;
+ tabs.remove(p.title);
+ it = tabs.values().iterator();
+ while (it.hasNext()) {
+ TabPair x = (TabPair) it.next();
+ if (x.index > p.index) {
+ x.index--;
+ }
}
}
-
- public final class Client extends HaverClient {
+
+ public class Client extends HaverClient {
public void eventDebugMessage(String s) {
- putLine(s);
+ System.out.println(s);
super.eventDebugMessage(s);
}
public void eventIdentAccepted() {
- putLine("--- Logged in.");
- try {
- cli.join("lobby");
- } catch (IOException e) {
- putLine(e.getStackTrace().toString());
- }
+ putServer("Logged in successfully.");
+ status.setText("Connected.");
super.eventIdentAccepted();
}
+ public void eventIdenting() {
+ putServer("Connected, logging in...");
+ super.eventIdenting();
+ }
+
+ public void eventChannelPart(String where) {
+ killTab(findTab("Channel: " + where));
+ super.eventChannelPart(where);
+ }
+
public void eventChannelJoin(String where) {
- putLine("--- You have now joined: " + where);
+ TabPair t = findTab(where);
+ if (t == null) {
+ t = new TabPair();
+ t.tab = new ChannelTab(cli, where);
+ t.title = "Channel: " + where;
+ addTab(t);
+ }
+ QueryTab qt = (QueryTab) t.tab;
+ qt.putText("--- Joined " + where);
try {
- listChannel(where);
- } catch (IOException e) {
- /* XXX */
- }
+ cli.listChannel(where);
+ } catch (IOException e) { /* XXX */ }
super.eventChannelJoin(where);
}
public void eventMessage(String where, String who, String type,
String[] args) {
+
super.eventMessage(where, who, type, args);
}
- public void eventNormalMessage(String where, String who, String arg) {
- putLine(where + ": <" + who + "> " + arg);
- super.eventNormalMessage(where, who, arg);
- }
+ public void eventChannelList(String where, Set names) {
- public void eventAction(String where, String who, String arg) {
- putLine(where + ": * " + who + " " + arg);
- super.eventAction(where, who, arg);
+ super.eventChannelList(where, names);
}
- public void eventChannelJoin(String where, String who) {
- putLine("--- " + where + ": Joined: " + who);
- names.add(who);
- userList.setListData(names.toArray());
- super.eventChannelJoin(where, who);
- }
+ public void eventQuit(String who, String why) {
- public void eventIdenting() {
- putLine("--- Logging in...");
- super.eventIdenting();
+ super.eventQuit(who, why);
}
- public void eventChannelPart(String where) {
- putLine("--- You have now left channel " + where);
- super.eventChannelPart(where);
+ public void eventNormalMessage(String where, String who, String arg) {
+ TextTab tab;
+ TabPair t = findTab("Channel: " + where);
+ if (t == null)
+ return;
+ tab = (TextTab) t.tab;
+ tab.putText("<" + who + "> " + arg);
+ super.eventNormalMessage(where, who, arg);
}
- public void eventChannelList(String where, java.util.Set newnames) {
- int i;
- names = newnames;
- Iterator iter = names.iterator();
- String line = "--- ";
- userList.setListData(names.toArray());
- putLine("--- Users for " + where + ": ");
- i = 0;
- while(iter.hasNext()) {
- String nick = (String) iter.next();
- if (i != 0) {
- line = line + " - ";
- }
- line = line + nick;
- i++;
- if (i == 4) {
- putLine(line);
- line = "--- ";
- i = 0;
- }
- }
- if (i != 0) {
- putLine(line);
- }
- super.eventChannelList(where, names);
+ public void eventChannelPart(String where, String who) {
+
+ super.eventChannelPart(where, who);
}
- public void eventQuit(String who, String why) {
- names.remove(who);
- userList.setListData(names.toArray());
- putLine("--- " + who + " has quit: " + why);
- super.eventQuit(who, why);
+ public void eventChannelJoin(String where, String who) {
+
+ super.eventChannelJoin(where, who);
}
- public void eventChannelPart(String where, String who) {
- putLine("--- " + who + " has left " + where);
- names.remove(who);
- userList.setListData(names.toArray());
- super.eventChannelPart(where, who);
+ public void eventAction(String where, String who, String arg) {
+
+ super.eventAction(where, who, arg);
}
-
}
- public void putLine(String s) {
- chatWindow.append(s + "\n");
+ public void disconnect() {
+ if (cli != null) {
+ cli.disconnect();
+ cli = null;
+ }
+ serverTab.putText(
+ "Welcome to haver!\n\n" +
+ "Enter your UID to begin."
+ );
+ status.setText("NOT CONNECTED");
}
-
/** This method is called from within the constructor to
* initialize the form.
@@ -140,15 +168,17 @@
* always regenerated by the Form Editor.
*/
private void initComponents() {//GEN-BEGIN:initComponents
+ jTabbedPane1 = new javax.swing.JTabbedPane();
+ jPanel2 = new javax.swing.JPanel();
input = new javax.swing.JTextField();
- jSplitPane1 = new javax.swing.JSplitPane();
- jScrollPane1 = new javax.swing.JScrollPane();
- chatWindow = new javax.swing.JTextArea();
- jScrollPane2 = new javax.swing.JScrollPane();
- userList = new javax.swing.JList();
+ status = new javax.swing.JLabel();
setLayout(new java.awt.BorderLayout());
+ add(jTabbedPane1, java.awt.BorderLayout.CENTER);
+
+ jPanel2.setLayout(new javax.swing.BoxLayout(jPanel2,
javax.swing.BoxLayout.Y_AXIS));
+
input.setText("jTextField1");
input.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
@@ -161,43 +191,106 @@
}
});
- add(input, java.awt.BorderLayout.SOUTH);
+ jPanel2.add(input);
- jScrollPane1.setViewportView(chatWindow);
+ status.setText("NOT CONNECTED");
+ status.setMinimumSize(new java.awt.Dimension(300, 300));
+ jPanel2.add(status);
- jSplitPane1.setLeftComponent(jScrollPane1);
+ add(jPanel2, java.awt.BorderLayout.SOUTH);
- jScrollPane2.setViewportView(userList);
-
- jSplitPane1.setRightComponent(jScrollPane2);
-
- add(jSplitPane1, java.awt.BorderLayout.CENTER);
-
}//GEN-END:initComponents
private void inputKeyTyped(java.awt.event.KeyEvent evt)
{//GEN-FIRST:event_inputKeyTyped
- // TODO add your handling code here:
- if (evt.getKeyChar() == '\n') {
- String line = input.getText();
- input.setText("");
+ if (evt.getKeyChar() != '\n')
+ return;
+ if (cli == null) {
+ putServer("Connecting...");
+ status.setText("Connecting...");
+ cli = new Client();
try {
- cli.sendNormalMessage("lobby", line);
- } catch (Exception e) { /* XXX */ }
+ cli.connect(uid = input.getText(), host, port);
+ input.setText("");
+ putServer("Connected, logging in...");
+ return;
+ } catch (IOException e) {
+ putServer("Failed: " + e.getLocalizedMessage());
+ status.setText("NOT CONNECTED");
+ return;
+ }
}
+ String query = input.getText();
+ if (processLine(query)) {
+ input.setText("");
+ }
}//GEN-LAST:event_inputKeyTyped
private void inputActionPerformed(java.awt.event.ActionEvent evt)
{//GEN-FIRST:event_inputActionPerformed
// TODO add your handling code here:
}//GEN-LAST:event_inputActionPerformed
+ private void putServer(String s) {
+ serverTab.putText(s);
+ }
+ protected void initCommands() {
+ commands.put("me", new CommandHandler() {
+ boolean trigger(String arg) throws IOException {
+ try {
+ QueryTab q = (QueryTab)
jTabbedPane1.getSelectedComponent();
+ q.sendAction(arg);
+ return true;
+ } catch(ClassCastException e) {
+ return false;
+ }
+ }
+ });
+ commands.put("join", new CommandHandler() {
+ boolean trigger(String arg) throws IOException {
+ if (findTab(arg) != null)
+ return true;
+ cli.join(arg);
+ return true;
+ }
+ });
+ }
+
+ public boolean processLine(String query) {
+ try {
+ if (query.charAt(0) == '/') {
+ if (query.charAt(1) != ' ') {
+ String command, arg;
+ int endcommand = query.indexOf(' ');
+ if (endcommand == -1) {
+ command = query.substring(1);
+ arg = "";
+ } else {
+ command = query.substring(1, endcommand);
+ arg = query.substring(endcommand + 1);
+ }
+ System.out.println("COMMAND: " + command + " ARG: " + arg);
+ if (!commands.containsKey(command.toLowerCase()))
+ return false;
+ System.out.println("triggering\n");
+ return
((CommandHandler)commands.get(command)).trigger(arg);
+ }
+ }
+ try {
+ QueryTab tab = (QueryTab) jTabbedPane1.getSelectedComponent();
+ tab.sendText(query);
+ return true;
+ } catch (java.lang.ClassCastException ex) {
+ return false;
+ }
+ } catch (IOException e) { /* XXX */ }
+ return false;
+ }
+
// Variables declaration - do not modify//GEN-BEGIN:variables
- private javax.swing.JTextArea chatWindow;
private javax.swing.JTextField input;
- private javax.swing.JScrollPane jScrollPane1;
- private javax.swing.JScrollPane jScrollPane2;
- private javax.swing.JSplitPane jSplitPane1;
- private javax.swing.JList userList;
+ private javax.swing.JPanel jPanel2;
+ private javax.swing.JTabbedPane jTabbedPane1;
+ private javax.swing.JLabel status;
// End of variables declaration//GEN-END:variables
}
Added: trunk/misc/javer/src/javer/QueryTab.java
===================================================================
--- trunk/misc/javer/src/javer/QueryTab.java 2005-01-06 23:53:34 UTC (rev
528)
+++ trunk/misc/javer/src/javer/QueryTab.java 2005-01-07 01:50:13 UTC (rev
529)
@@ -0,0 +1,16 @@
+/*
+ * QueryTab.java
+ *
+ * Created on January 6, 2005, 12:43 AM
+ */
+
+package javer;
+
+/**
+ *
+ * @author bdonlan
+ */
+public interface QueryTab extends TextTab {
+ public void sendText(String s) throws java.io.IOException;
+ public void sendAction(String s) throws java.io.IOException;
+}
Property changes on: trunk/misc/javer/src/javer/QueryTab.java
___________________________________________________________________
Name: svn:eol-style
+ native
Added: trunk/misc/javer/src/javer/SimpleTextTab.form
===================================================================
--- trunk/misc/javer/src/javer/SimpleTextTab.form 2005-01-06 23:53:34 UTC
(rev 528)
+++ trunk/misc/javer/src/javer/SimpleTextTab.form 2005-01-07 01:50:13 UTC
(rev 529)
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<Form version="1.0" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
+
+ <Layout
class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
+ <SubComponents>
+ <Container class="javax.swing.JScrollPane" name="jScrollPane1">
+ <Constraints>
+ <Constraint
layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"
value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
+ <BorderConstraints direction="Center"/>
+ </Constraint>
+ </Constraints>
+
+ <Layout
class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
+ <SubComponents>
+ <Component class="javax.swing.JTextArea" name="textField">
+ </Component>
+ </SubComponents>
+ </Container>
+ </SubComponents>
+</Form>
Added: trunk/misc/javer/src/javer/SimpleTextTab.java
===================================================================
--- trunk/misc/javer/src/javer/SimpleTextTab.java 2005-01-06 23:53:34 UTC
(rev 528)
+++ trunk/misc/javer/src/javer/SimpleTextTab.java 2005-01-07 01:50:13 UTC
(rev 529)
@@ -0,0 +1,50 @@
+/*
+ * SimpleTextTab.java
+ *
+ * Created on January 6, 2005, 2:26 PM
+ */
+
+package javer;
+
+/**
+ *
+ * @author bdonlan
+ */
+public class SimpleTextTab extends javax.swing.JPanel implements TextTab {
+
+ /** Creates new form SimpleTextTab */
+ protected SimpleTextTab() {
+ initComponents();
+ }
+
+ /** This method is called from within the constructor to
+ * initialize the form.
+ * WARNING: Do NOT modify this code. The content of this method is
+ * always regenerated by the Form Editor.
+ */
+ private void initComponents() {//GEN-BEGIN:initComponents
+ jScrollPane1 = new javax.swing.JScrollPane();
+ textField = new javax.swing.JTextArea();
+
+ setLayout(new java.awt.BorderLayout());
+
+ jScrollPane1.setViewportView(textField);
+
+ add(jScrollPane1, java.awt.BorderLayout.CENTER);
+
+ }//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);
+ }
+
+ // Variables declaration - do not modify//GEN-BEGIN:variables
+ private javax.swing.JScrollPane jScrollPane1;
+ private javax.swing.JTextArea textField;
+ // End of variables declaration//GEN-END:variables
+
+}
Property changes on: trunk/misc/javer/src/javer/SimpleTextTab.java
___________________________________________________________________
Name: svn:eol-style
+ native
Added: trunk/misc/javer/src/javer/TextTab.java
===================================================================
--- trunk/misc/javer/src/javer/TextTab.java 2005-01-06 23:53:34 UTC (rev
528)
+++ trunk/misc/javer/src/javer/TextTab.java 2005-01-07 01:50:13 UTC (rev
529)
@@ -0,0 +1,15 @@
+/*
+ * TextTab.java
+ *
+ * Created on January 6, 2005, 12:44 AM
+ */
+
+package javer;
+
+/**
+ *
+ * @author bdonlan
+ */
+public interface TextTab {
+ public void putText(String s);
+}
Property changes on: trunk/misc/javer/src/javer/TextTab.java
___________________________________________________________________
Name: svn:eol-style
+ native