📄 chatserver.java
字号:
/*
* ChatServer.java
*
* Created on July 26, 2000, 10:35 PM
*/
/**
*
* @author Yani Ioannou
* @version 1.0
*/
public class ChatServer extends javax.swing.JFrame {
Host Server=null;
static javax.swing.tree.DefaultMutableTreeNode msgRoot=null;
static javax.swing.tree.DefaultMutableTreeNode userRoot=null;
static javax.swing.tree.DefaultTreeModel msgModel=null;
static javax.swing.tree.DefaultTreeModel usrModel=null;
/** Creates new form ChatServer */
public ChatServer() {
initComponents ();
setSize(500,360);
java.awt.Dimension d = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
setLocation((d.width - getSize().width) / 2, (d.height - getSize().height) / 2);
}
private void initComponents () {
SplitPane = new javax.swing.JSplitPane ();
MessagePane = new javax.swing.JScrollPane ();
msgRoot = new javax.swing.tree.DefaultMutableTreeNode("Messages");
msgModel=new javax.swing.tree.DefaultTreeModel(msgRoot);
javax.swing.tree.DefaultTreeCellRenderer msgrenderer = new javax.swing.tree.DefaultTreeCellRenderer();
msgrenderer.setLeafIcon(new javax.swing.ImageIcon(getClass().getResource("images/nm.gif")));
MessageTree=new javax.swing.JTree(msgModel);
MessageTree.setCellRenderer(msgrenderer);
MessageTree.putClientProperty("JTree.lineStyle", "Angled");
UserPane = new javax.swing.JScrollPane ();
userRoot = new javax.swing.tree.DefaultMutableTreeNode("User List");
usrModel=new javax.swing.tree.DefaultTreeModel(userRoot);
javax.swing.tree.DefaultTreeCellRenderer usrrenderer = new javax.swing.tree.DefaultTreeCellRenderer();
usrrenderer.setLeafIcon(new javax.swing.ImageIcon(getClass().getResource("images/userm.gif")));
UserTree = new javax.swing.JTree(usrModel);
UserTree.setCellRenderer(usrrenderer);
North = new javax.swing.JToolBar ();
ServerName = new javax.swing.JTextPane ();
Port = new javax.swing.JTextPane ();
StartButton = new javax.swing.JToggleButton ();
South = new javax.swing.JToolBar ();
MessageText = new javax.swing.JTextPane ();
SendButton = new javax.swing.JButton ();
debugCheck=new javax.swing.JCheckBox();
setTitle ("Kaff Chat Server");
addWindowListener (new java.awt.event.WindowAdapter () {
public void windowClosing (java.awt.event.WindowEvent evt) {
exitForm (evt);
}
}
);
SplitPane.setDividerLocation (120);
SplitPane.setContinuousLayout (true);
SplitPane.setOneTouchExpandable (true);
MessageTree.setShowsRootHandles (false);
MessageTree.expandRow(0);
MessageTree.setRootVisible(false);
MessagePane.setViewportBorder (new javax.swing.border.BevelBorder(1));
MessagePane.setOpaque (false);
MessagePane.setViewportView (MessageTree);
SplitPane.setRightComponent (MessagePane);
UserPane.setViewportBorder (new javax.swing.border.BevelBorder(1));
UserTree.setShowsRootHandles (true);
UserTree.setPreferredSize (new java.awt.Dimension(74, 40));
UserTree.setMaximumSize (new java.awt.Dimension(999999, 99999));
UserTree.setMinimumSize (new java.awt.Dimension(60, 40));
UserTree.setShowsRootHandles (true);
UserPane.setViewportView (UserTree);
SplitPane.setLeftComponent (UserPane);
getContentPane ().add (SplitPane, java.awt.BorderLayout.CENTER);
North.setPreferredSize (new java.awt.Dimension(118, 50));
North.setMinimumSize (new java.awt.Dimension(118, 45));
North.setMaximumSize (new java.awt.Dimension(9999, 9999));
debugCheck.setBorder (new javax.swing.border.TitledBorder("Debug"));
North.add (debugCheck);
ServerName.setPreferredSize (new java.awt.Dimension(60, 35));
ServerName.setBorder (new javax.swing.border.TitledBorder("LocalHost"));
ServerName.setEditable (false);
ServerName.setMinimumSize (new java.awt.Dimension(60, 35));
ServerName.setOpaque (false);
North.add (ServerName);
Port.setPreferredSize (new java.awt.Dimension(40, 35));
Port.setBorder (new javax.swing.border.TitledBorder("Port"));
Port.setMaximumSize (new java.awt.Dimension(40, 2147483647));
Port.setText ("1024");
Port.setMinimumSize (new java.awt.Dimension(40, 35));
Port.setOpaque (false);
North.add (Port);
StartButton.setText ("Start");
StartButton.addActionListener (new java.awt.event.ActionListener () {
public void actionPerformed (java.awt.event.ActionEvent evt) {
StartButtonActionPerformed (evt);
}
}
);
North.add (StartButton);
getContentPane ().add (North, java.awt.BorderLayout.NORTH);
MessageText.setBorder (new javax.swing.border.TitledBorder("Admin Message"));
MessageText.setEnabled (false);
MessageText.setOpaque (false);
MessageText.addKeyListener (new java.awt.event.KeyAdapter () {
public void keyPressed (java.awt.event.KeyEvent evt) {
MessageTextKeyPressed (evt);
}
}
);
South.add (MessageText);
SendButton.setText ("Send");
SendButton.setEnabled (false);
SendButton.addActionListener (new java.awt.event.ActionListener () {
public void actionPerformed (java.awt.event.ActionEvent evt) {
SendButtonActionPerformed (evt);
}
}
);
South.add (SendButton);
getContentPane ().add (South, java.awt.BorderLayout.SOUTH);
}
private void SendButtonActionPerformed (java.awt.event.ActionEvent evt) {
try
{
ChatServer.printd("Debug: Send button");
if(MessageText.getText().equals("")==false)
{
Server.returnTb().receiveRequest("!Admin Message!> "+MessageText.getText());
MessageText.setText("");
}
}
catch(Exception e){}
}
private void StartButtonActionPerformed (java.awt.event.ActionEvent evt) {
java.net.ServerSocket tmp=null;
StartButton.setEnabled(false);
clearMsgTree();
if(Port.getText().equals(""))
{
Port.setText("1024");
}
if(StartButton.getText().equals("Start"))
{
try
{
tmp=new java.net.ServerSocket(Integer.parseInt(Port.getText()));
}catch(Exception e)
{
try{tmp.close();}catch(Exception ee) {}
StartButton.setText("Start");
StartButton.setEnabled(true);
print("Port in use");
return;
}
try{tmp.close();}catch(Exception e) {}
Server=new Host(Integer.parseInt(Port.getText()),this);
print("Server Started");
StartButton.setText("Stop");
StartButton.setEnabled(true);
Port.setEnabled(false);
MessageText.setEnabled(true);
SendButton.setEnabled(true);
}else
{
Server.kill();
Server=null;
StartButton.setText("Start");
StartButton.setEnabled(true);
Port.setEnabled(true);
MessageText.setEnabled(false);
SendButton.setEnabled(false);
}
}
private void MessageTextKeyPressed (java.awt.event.KeyEvent evt) {
//if key is 'enter' then send message
//if messageText!="" then sendButton enabled, else disabled
if(MessageText.getText().equals("")==false)
{
if(evt.getKeyCode()==evt.VK_ENTER)
{
Server.returnTb().receiveRequest("!Admin Message!> " +MessageText.getText());
MessageText.setText("");
}
}
}
/** Exit the Application */
private void exitForm(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_exitForm
System.exit (0);
}
public static void main (String args[]) {
new ChatServer ().show ();
}
private javax.swing.JSplitPane SplitPane;
private javax.swing.JScrollPane MessagePane;
private static javax.swing.JTree MessageTree;
private javax.swing.JScrollPane UserPane;
private static javax.swing.JTree UserTree;
private javax.swing.JToolBar North;
private javax.swing.JTextPane ServerName;
private javax.swing.JTextPane Port;
private javax.swing.JToggleButton StartButton;
private javax.swing.JToolBar South;
private javax.swing.JTextPane MessageText;
private javax.swing.JButton SendButton;
private static javax.swing.JCheckBox debugCheck;
public static synchronized void print(String s)
{
java.util.Calendar rightNow = java.util.Calendar.getInstance();
//msgRoot.add(new javax.swing.tree.DefaultMutableTreeNode(rightNow.getTime().toString()+"> Server Message: "+s));
addMesg(rightNow.getTime().toString()+"> Server Message: "+s);
System.out.println(rightNow.getTime().toString()+"> Server Message: "+s);
//try { Thread.sleep(10);} catch(Exception e){}
}
public static synchronized void printd(String s)
{
if(debugCheck.isSelected())
{
java.util.Calendar rightNow = java.util.Calendar.getInstance();
addMesg(rightNow.getTime().toString()+"> Debug Message: "+s);
System.out.println(rightNow.getTime().toString()+"> Debug Message: "+s);
}
}
public static synchronized void removeUser(User usr)
{
UserTree.setSelectionRow(1);
int x;
String Child;
for(x=0;x<userRoot.getChildCount();x++)
{
Child =usrModel.getChild(userRoot,x).toString();
if(Child.equals(usr.getname())) break;
}
if(x!=userRoot.getChildCount())
{
usrModel.removeNodeFromParent((javax.swing.tree.MutableTreeNode) usrModel.getChild(userRoot, x));
}else
{
System.out.println("error couldn't remove user");
}
}
public void setHostName(String s)
{
ServerName.setText(s);
}
public void clearMsgTree()
{
msgRoot.removeAllChildren();
msgModel.reload();
}
//------------------------------------------------------------------------------------
public static javax.swing.tree.DefaultMutableTreeNode addMesg(Object child) {
javax.swing.tree.DefaultMutableTreeNode parentNode = null;
javax.swing.tree.TreePath parentPath=null;
if (parentPath == null) {
parentNode = msgRoot;
} else {
parentNode = (javax.swing.tree.DefaultMutableTreeNode)
(parentPath.getLastPathComponent());
}
return addMesg(parentNode, child, true);
}
public static javax.swing.tree.DefaultMutableTreeNode addMesg(javax.swing.tree.DefaultMutableTreeNode parent,
Object child) {
return addMesg(parent, child, false);
}
public static javax.swing.tree.DefaultMutableTreeNode addMesg(javax.swing.tree.DefaultMutableTreeNode parent,
Object child,
boolean shouldBeVisible) {
javax.swing.tree.DefaultMutableTreeNode childNode = new javax.swing.tree.DefaultMutableTreeNode(child);
if (parent == null) {
parent = msgRoot;
}
msgModel.insertNodeInto(childNode, parent,
parent.getChildCount());
if (shouldBeVisible) {
MessageTree.scrollPathToVisible(new javax.swing.tree.TreePath(childNode.getPath()));
}
return childNode;
}
//------------------------------------------------------------------------------------
public static javax.swing.tree.DefaultMutableTreeNode addUsermsg(Object child) {
javax.swing.tree.DefaultMutableTreeNode parentNode = null;
javax.swing.tree.TreePath parentPath=null;
if (parentPath == null) {
parentNode = userRoot;
} else {
parentNode = (javax.swing.tree.DefaultMutableTreeNode)
(parentPath.getLastPathComponent());
}
return addUsermsg(parentNode, child, true);
}
public static javax.swing.tree.DefaultMutableTreeNode addUsermsg(javax.swing.tree.DefaultMutableTreeNode parent,
Object child) {
return addUsermsg(parent, child, false);
}
public static javax.swing.tree.DefaultMutableTreeNode addUsermsg(javax.swing.tree.DefaultMutableTreeNode parent,
Object child,
boolean shouldBeVisible) {
javax.swing.tree.DefaultMutableTreeNode childNode = new javax.swing.tree.DefaultMutableTreeNode(child);
if (parent == null) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -