亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? chatwindow.java

?? 一個用java編寫的服務器,對于學習網絡編程的人來說是個很好的例子
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
/*
 * This file is part of the QuickServer library 
 * Copyright (C) 2003-2005 QuickServer.org
 *
 * Use, modification, copying and distribution of this software is subject to
 * the terms and conditions of the GNU Lesser General Public License. 
 * You should have received a copy of the GNU LGP License along with this 
 * library; if not, you can download a copy from <http://www.quickserver.org/>.
 *
 * For questions, suggestions, bug-reports, enhancement-requests etc.
 * visit http://www.quickserver.org
 *
 */

package chatserver.client;

import javax.swing.text.*;
import java.awt.Color;
import java.awt.Point;
import java.util.HashMap;
import java.util.Map;
import java.util.logging.*;
import javax.swing.*;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import java.awt.Graphics;
import java.awt.event.*;

/**
 *
 * @author  Akshathkumar Shetty
 */
public class ChatWindow extends javax.swing.JFrame {
    private static Logger logger = Logger.getLogger(ChatWindow.class.getName());

	private ClassLoader classLoader = getClass().getClassLoader();
	public final ImageIcon logo = new ImageIcon(
		classLoader.getResource("chatserver/client/face-smile.gif"));
	public final ImageIcon smile = new ImageIcon(
		classLoader.getResource("chatserver/client/smile.gif"));
	public final ImageIcon sad = new ImageIcon(
		classLoader.getResource("chatserver/client/sad.gif"));
    
    private ChatRoom chatRoom;
    private LoginDialog loginDialog;
    private DefaultStyledDocument logDoc = null;
    private DefaultStyledDocument chatDoc = null;
    private DefaultListModel userListModel = null;
    private UserListListener userListListener = null;
    private Map styleMap = new HashMap();
    
    final String NORMALBLUE = "NormalBlue";
    final String BOLDBLUE = "BoldBlue";
    final String NORMALBLACK = "NormalBlack";
	final String ITALICBLACK = "ITALICBLACK";
    final String BOLDGREEN = "BoldGreen";
    final String NORMALRED = "NormalRed";
    final String ITALICRED = "ItalicRed";
    
	private InfiniteProgressPanel glassPane;
    
    /** Creates new form ChatWindow */
    public ChatWindow(ChatRoom chatRoom, String args[]) {
        this.chatRoom = chatRoom;
        setLogDoc(new DefaultStyledDocument());
        setChatDoc(new DefaultStyledDocument());
        setUserListModel(new DefaultListModel());
		prepareAllStyles();
        initComponents();
        userListListener = new UserListListener(userList);
        userList.addListSelectionListener(userListListener);
        loginDialog = new LoginDialog(this, args);
    }
    
    private void initComponents() {
        getContentPane().setLayout(new java.awt.BorderLayout(2, 2));
        setTitle("QuickChat - Please Login");
        
        buildChatPanel();
		buildSendMsg();
		buildLogPanel();
		buildUserListPanel();

		//---
		jPanel1 = new javax.swing.JPanel();
        jPanel1.setLayout(new java.awt.BorderLayout());
		jPanel1.add(jPanel2, java.awt.BorderLayout.SOUTH); //sendmsg

		JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,
			chatRoomScrollPane, jScrollPane1);
		splitPane.setOneTouchExpandable(true);
		java.awt.Dimension minimumSize = new java.awt.Dimension(500, 20);
		chatRoomScrollPane.setMinimumSize(minimumSize);
		splitPane.setDividerLocation(500);
		splitPane.setResizeWeight(0.9);

		jPanel1.add(splitPane, java.awt.BorderLayout.CENTER); //chat

		jTabbedPane1 = new javax.swing.JTabbedPane();
        jTabbedPane1.setTabPlacement(javax.swing.JTabbedPane.BOTTOM);
        jTabbedPane1.addTab("Chat Room", jPanel1);
        jTabbedPane1.addTab("Logs", logTextScrollPane);

		getContentPane().add(jTabbedPane1, java.awt.BorderLayout.CENTER);

        buildMenu();
		setIconImage(logo.getImage());

		addWindowListener(new WindowAdapter() {
             public void windowClosing(WindowEvent e) {
				 glassPane.interrupt();
                 System.exit(0);
             }
			 public void windowOpened(WindowEvent e) {			
			 }			
        });
        pack();
		setLocationRelativeTo(null);

		glassPane = new InfiniteProgressPanel("Logging to server..");
		setGlassPane(glassPane);
    }

    private void loginMenuItemActionPerformed(final java.awt.event.ActionEvent evt) {
		Thread t = new Thread() {
			public void run() {
				while(true) {
					if(login()==false) break;
					logger.info("Calling login()");
				}
			}
		};
		t.setPriority(Thread.NORM_PRIORITY);
        t.start();
    }
    
	private boolean login() {
		loginDialog.clearStatus();
        loginDialog.show();
        if(loginDialog.isOk()==true) {
            String r[] = loginDialog.getValues();
			glassPane.start();
			try {
				boolean flag = chatRoom.doLogin(r[0], Integer.parseInt(r[1]), 
					r[2], r[3]);				

				if(flag==true) {									
					enableChat(true);
				} else {
					enableChat(false);
					return true;//recall the login dialog
				}
			} catch(Exception ex) {
				enableChat(false);
				logger.warning("Error logging in : "+ex);
				return true;
			}
        }
		return false;
    }                                             
    
    private void logoutMenuItemActionPerformed(java.awt.event.ActionEvent evt) {
		Thread t = new Thread() {
			public void run() {
				try {
					chatRoom.doLogout();
				} catch(Exception ex) {
					loginMenuItem.setEnabled(true);
					logoutMenuItem.setEnabled(false);
					logger.warning("Error logging in : "+ex);
				}
			}
		};
		t.setPriority(Thread.NORM_PRIORITY);
        t.start();
    }                                              
    
    private void sendTextActionPerformed(java.awt.event.ActionEvent evt) {                                         
       sendButtonActionPerformed(evt);
    }                                        
    
    private void sendPrivateButtonActionPerformed(java.awt.event.ActionEvent evt) {
		if(userListListener.getSelecteduser()==null) {
			setResponse("-ERR No User is selected!");
			return;
		}
		if(sendText.getText().length()==0) {
			setResponse("-ERR No message to send!");
			return;
		}
        chatRoom.sendPrivateMessage(userListListener.getSelecteduser()+"@"+chatRoom.getRoom(),
                sendText.getText());
        sendText.setText("");
    }                                                 
    
    private void sendButtonActionPerformed(java.awt.event.ActionEvent evt) {
		if(sendText.getText().length()==0) {
			setResponse("-ERR No message to send!");
			return;
		}
        chatRoom.sendMessage(sendText.getText());
        sendText.setText("");
    }                                          
    
    
    // Variables declaration - do not modify
    private javax.swing.JScrollPane chatRoomScrollPane;
    private javax.swing.JTextPane chatRoomTextPane1;
    private javax.swing.JMenu jMenu1, jMenu2;
    private javax.swing.JMenuBar jMenuBar1;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTabbedPane jTabbedPane1;
    private javax.swing.JTextPane logTextPane;
    private javax.swing.JScrollPane logTextScrollPane;
    private javax.swing.JMenuItem loginMenuItem;
    private javax.swing.JMenuItem logoutMenuItem;
	private javax.swing.JMenuItem exitMenuItem;
	private javax.swing.JMenuItem changeRoomMenuItem;
	private javax.swing.JMenuItem updateUserListMenuItem;
	private javax.swing.JMenuItem clearMenuItem;
	private javax.swing.JMenuItem aboutMenuItem;
    private javax.swing.JButton sendButton;
    private javax.swing.JButton sendPrivateButton;
    private javax.swing.JTextField sendText;
    private javax.swing.JList userList;
    // End of variables declaration
    
    public void log(String msg) {
        logger.fine("Got: "+msg);
        try {
            AttributeSet style = (AttributeSet)styleMap.get(NORMALBLACK);
            getLogDoc().insertString(getLogDoc().getLength(),
                    msg +  "\n" ,style);
            
            //Point pt1=logTextPane.getLocation();
            Point pt2 = new Point((int)(0),
                    (int)(logTextPane.getBounds().getHeight()));
            logTextScrollPane.getViewport().setViewPosition(pt2);
        } catch(Exception e) {
            logger.warning("Error: "+e);
        }
    }
    
    public DefaultStyledDocument getLogDoc() {
        return logDoc;
    }
    
    public void setLogDoc(DefaultStyledDocument logDoc) {
        this.logDoc = logDoc;
    }
    
    
    
    public void prepareAllStyles() {
        SimpleAttributeSet aset = new SimpleAttributeSet();
        StyleConstants.setForeground(aset,Color.blue);
        StyleConstants.setFontSize(aset,12);
        StyleConstants.setFontFamily(aset,"Verdana");
        styleMap.put(NORMALBLUE,aset);

        aset = new SimpleAttributeSet();
        StyleConstants.setForeground(aset,Color.blue);
        StyleConstants.setFontSize(aset,12);
        StyleConstants.setFontFamily(aset,"Verdana");
        StyleConstants.setBold(aset, true);
        styleMap.put(BOLDBLUE,aset);

        aset = new SimpleAttributeSet();
        StyleConstants.setForeground(aset,Color.black);
        StyleConstants.setFontSize(aset,12);
        StyleConstants.setFontFamily(aset,"Verdana");
        styleMap.put(NORMALBLACK,aset);

        aset = new SimpleAttributeSet();
        StyleConstants.setForeground(aset,Color.black);
        StyleConstants.setFontSize(aset,12);
        StyleConstants.setFontFamily(aset,"Verdana");
		StyleConstants.setItalic(aset, true);
        styleMap.put(ITALICBLACK,aset);

        aset = new SimpleAttributeSet();
        StyleConstants.setForeground(aset, new Color(0, 128, 0));
        StyleConstants.setFontSize(aset,12);
        StyleConstants.setFontFamily(aset,"Verdana");
        StyleConstants.setBold(aset, true);
        styleMap.put(BOLDGREEN,aset);

        aset = new SimpleAttributeSet();
        StyleConstants.setForeground(aset,Color.red);
        StyleConstants.setFontSize(aset,12);
        StyleConstants.setFontFamily(aset,"Verdana");
        styleMap.put(NORMALRED,aset);

        aset = new SimpleAttributeSet();
        StyleConstants.setForeground(aset,Color.red);
        StyleConstants.setFontSize(aset,12);
        StyleConstants.setFontFamily(aset,"Verdana");
        StyleConstants.setItalic(aset, true);
        styleMap.put(ITALICRED,aset);
    }
    
    public void addChatMessage(String message) {
        logger.fine("Got: "+message);
        if(message.startsWith("{system.help} ")) {
            return;
        } else if(message.startsWith("{system.debug} ")) {
            //already logged
            return;
        }
        
        AttributeSet style = null;
        String fromid = null;
		String toid = null;
        
		String msgType = null;
        try {
            if(message.startsWith("{system.msg} ")) {
				msgType = "{system.msg}";
                message = message.substring(13);
                style = (AttributeSet)styleMap.get(BOLDBLUE);
            } else if(message.startsWith("{system.error} ")) {
				msgType = "{system.error}";
                message = "Error: "+message.substring(15);
                style = (AttributeSet)styleMap.get(NORMALRED);				
            } else if(message.startsWith("{user.msg:")) { 
				msgType = "{user.msg}";
				int j = message.indexOf(":", 10);//end of from
				int i = message.indexOf("} ", 10);
				if(j!=-1) {
					toid = message.substring(j+1, i);
				} else {
					j = i;
				}
                fromid = message.substring(10, j);
                message = message.substring(i+2);
                style = (AttributeSet)styleMap.get(NORMALBLUE);
            } else if(message.startsWith("{msg.user:")) { //gui command
				msgType = "{msg.user}";
                int i = message.indexOf("} ", 10);
                toid = message.substring(10, i);
                message = message.substring(i+2);
                style = (AttributeSet)styleMap.get(NORMALBLUE);
            } else if(message.startsWith("{user.info:")) {
				msgType = "{user.info}";
                int i = message.indexOf("} ", 11);
                fromid = message.substring(11, i);
                message = message.substring(i+2);
				if(message.equals("LoggedIn")) {
					addToUserList(fromid);
					message = "joined the room";
				} else if(message.equals("LoggedOut")) {
					removeFromUserList(fromid);
					message = "left the room";
				} else
					System.out.println("Unknown ->"+message+"<-");
                style = (AttributeSet)styleMap.get(ITALICBLACK);
            } else {
				msgType = "{unknown}";
                style = (AttributeSet)styleMap.get(NORMALBLACK);
            }
            

			if(msgType.equals("{user.msg}")) {
				toid = removeRoom(toid);
				fromid = removeRoom(fromid);
				if(toid!=null && toid.length()==0) {//to group
	                getChatDoc().insertString(getChatDoc().getLength(),
                        fromid+": ", (AttributeSet)styleMap.get(NORMALRED));
				} else if(toid!=null) {
					getChatDoc().insertString(getChatDoc().getLength(),
                        "PrvMsg From "+fromid+": ", (AttributeSet)styleMap.get(BOLDBLUE));
				}
			} else if(msgType.equals("{msg.user}")) {
				toid = removeRoom(toid);
                getChatDoc().insertString(getChatDoc().getLength(),
                        "PrvMsg To "+toid+": ", (AttributeSet)styleMap.get(BOLDBLUE));
            } else if(msgType.equals("{user.info}")) {
				fromid = removeRoom(fromid);
				getChatDoc().insertString(getChatDoc().getLength(),
                        fromid+": ", (AttributeSet)styleMap.get(NORMALRED));
			}
            
			if(message.indexOf(":-)")==-1 && message.indexOf(":-(")==-1) {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人深夜福利app| 免费观看一级特黄欧美大片| 中文幕一区二区三区久久蜜桃| 久久久av毛片精品| 久久蜜臀中文字幕| 亚洲视频小说图片| 三级在线观看一区二区| 国产二区国产一区在线观看| 成人免费va视频| 欧美老女人第四色| 久久久精品综合| 亚洲二区在线观看| 成人av午夜影院| 日韩一区二区精品在线观看| 国产午夜一区二区三区| 亚洲国产精品一区二区久久恐怖片 | 麻豆精品一区二区| 99久久精品免费观看| 精品久久人人做人人爽| 尤物在线观看一区| 丁香啪啪综合成人亚洲小说| 日韩欧美国产系列| 午夜国产不卡在线观看视频| 成人蜜臀av电影| 国产三级精品视频| 国产呦精品一区二区三区网站| 欧美性生活一区| 亚洲综合色网站| 在线观看成人免费视频| 国产精品欧美一区喷水| 狠狠久久亚洲欧美| 亚洲精品一区二区三区精华液| 亚洲自拍偷拍综合| 一本大道久久精品懂色aⅴ| 成人免费在线视频观看| 成人激情文学综合网| 国产精品午夜久久| 色婷婷综合激情| 夜夜精品浪潮av一区二区三区| 波多野结衣中文字幕一区| 中日韩免费视频中文字幕| 97se亚洲国产综合自在线不卡| 亚洲日本一区二区| 欧美福利一区二区| 精品一区二区影视| 国产夜色精品一区二区av| 日韩你懂的在线观看| 久久麻豆一区二区| 成人免费三级在线| 亚洲大尺度视频在线观看| 欧美日韩成人综合天天影院 | 麻豆精品视频在线观看免费 | 奇米四色…亚洲| 国产精品美女久久久久久久久| 99久久777色| 首页综合国产亚洲丝袜| 久久久久国产免费免费| 91麻豆国产自产在线观看| 亚洲午夜在线电影| 美国十次综合导航| 国产欧美视频一区二区| 欧美日韩国产另类不卡| 国内外成人在线| 麻豆精品在线播放| 亚洲免费资源在线播放| 亚洲精品一区二区在线观看| 欧美视频一区二区| 99精品欧美一区二区三区小说| 蜜桃久久av一区| 日韩激情一区二区| 香蕉久久一区二区不卡无毒影院 | 日韩精品一二三区| 亚洲大型综合色站| 亚洲精品福利视频网站| 国产精品久久久久永久免费观看 | 加勒比av一区二区| 日韩不卡手机在线v区| 一级精品视频在线观看宜春院| 亚洲国产精品黑人久久久| 日韩欧美国产一区二区三区 | 免费成人av在线| 美腿丝袜亚洲一区| 精久久久久久久久久久| 国产麻豆精品95视频| a级精品国产片在线观看| 国产成人免费视频精品含羞草妖精| 久草热8精品视频在线观看| 免费看欧美女人艹b| 国产高清精品久久久久| 国产不卡在线视频| 欧洲视频一区二区| 91精品视频网| 国产精品色哟哟网站| 亚洲一级二级三级| 精品一区二区三区欧美| 国产乱子伦一区二区三区国色天香| 成人一区在线看| 欧日韩精品视频| 亚洲国产精品t66y| 亚洲综合激情另类小说区| 日韩综合小视频| 91色综合久久久久婷婷| 综合精品久久久| 777a∨成人精品桃花网| 日韩欧美精品在线视频| 中文字幕电影一区| 免费一区二区视频| 99久久精品免费看国产| 欧美电影免费提供在线观看| 国产精品国产三级国产三级人妇| 亚洲国产一区在线观看| 懂色av中文一区二区三区| 在线成人午夜影院| 亚洲欧美日韩国产手机在线 | 国产乱子伦视频一区二区三区| 欧美三区免费完整视频在线观看| 精品1区2区在线观看| 久久精品国产77777蜜臀| 欧美视频在线不卡| 91浏览器在线视频| 国产日韩精品一区二区三区在线| 亚洲午夜精品久久久久久久久| 成人国产精品免费| 国产丝袜在线精品| 国产成人免费视频网站高清观看视频| 日韩视频永久免费| 蜜臂av日日欢夜夜爽一区| 91精品欧美福利在线观看| 日韩经典一区二区| 欧美成人国产一区二区| 黑人巨大精品欧美一区| 精品国产乱码久久久久久闺蜜| 91丨九色丨蝌蚪丨老版| 亚洲激情男女视频| 91精品久久久久久久91蜜桃| 久久疯狂做爰流白浆xx| 国产乱码一区二区三区| 久久久久国产成人精品亚洲午夜| 国产精品18久久久久久久久| 欧美国产日韩在线观看| 97精品国产露脸对白| 亚洲线精品一区二区三区八戒| 欧美群妇大交群的观看方式| 日本不卡视频在线| 国产精品高清亚洲| 精品视频在线免费看| 激情综合网av| 亚洲精品视频在线| 精品理论电影在线| 欧美日韩你懂的| 成人综合在线观看| 久久国产人妖系列| 亚洲一区影音先锋| 精品久久人人做人人爱| 午夜伦理一区二区| 欧美一级二级在线观看| 91视频国产观看| 国产精品一级在线| caoporn国产精品| 国产精品911| 韩国av一区二区三区| 奇米精品一区二区三区四区 | 精品一区二区三区免费视频| 亚洲精品日韩专区silk| 国产欧美日韩在线观看| 精品免费视频.| 欧美一区二区三区婷婷月色| 欧洲精品一区二区| 色婷婷精品久久二区二区蜜臀av| 亚洲成在线观看| 久久青草欧美一区二区三区| 这里只有精品99re| 91精品国产入口| 日韩免费观看2025年上映的电影| 欧美三片在线视频观看| 95精品视频在线| 91香蕉视频污在线| 在线观看一区日韩| 欧美日韩色综合| 日韩欧美在线123| 精品三级在线看| 中文字幕免费不卡在线| 中文字幕在线一区免费| 亚洲一区二区三区小说| 亚洲不卡一区二区三区| 日韩成人精品在线观看| 久草在线在线精品观看| 99re热这里只有精品视频| 欧美吞精做爰啪啪高潮| 国产福利不卡视频| 国产福利一区在线| 成人黄色av电影| 欧美日韩国产片| 久久精品亚洲一区二区三区浴池 | 亚洲免费av在线| 黑人精品欧美一区二区蜜桃| www.在线成人| 精品久久久久一区二区国产| 亚洲美女淫视频| 国产精品一二三区在线|