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

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

?? chatwindow.java

?? 可以實現P2P聊天通信
?? JAVA
字號:
package jxtamessenger;

import java.io.DataOutput;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.logging.Logger;

import jxtamessenger.bean.OnlineMessage;
import jxtamessenger.service.JxtaServerSocketService;
import jxtamessenger.util.Constants;
import jxtamessenger.util.MiscUtil;
import jxtamessenger.util.PipeUtil;
import jxtamessenger.xml.XmlCreator;
import net.jxta.peergroup.PeerGroup;
import net.jxta.socket.JxtaSocket;

import org.apache.commons.lang.StringUtils;
import org.eclipse.jface.window.Window;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.SashForm;
import org.eclipse.swt.events.ControlAdapter;
import org.eclipse.swt.events.ControlEvent;
import org.eclipse.swt.events.KeyAdapter;
import org.eclipse.swt.events.KeyEvent;
import org.eclipse.swt.events.MouseAdapter;
import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;

public class ChatWindow extends Window {
	private static final Logger LOG = Logger.getLogger(ChatWindow.class.getName());
	private JxtaSocket socket;
	private OnlineMessage msg;
	private PeerGroup pg;
	
	private static final int BTNWIDTH = 32;
	private static final int BTNHEIGHT = 22;
	
	private Text up_text;
	public Text getUp_text() {
		return up_text;
	}
	private Text down_text;
//	public Text getDown_text() {
//		return down_text;
//	}
	private Button down_send;
//	public Button getDown_send() {
//		return down_send;
//	}
	public void disableInputAndSend(String userName) {
		down_text.setText(userName + "已離開會話");
		down_text.setEnabled(false);
		down_send.setEnabled(false);
	}
	
	public void enableInputAndSend() {
        try {
        	// TODO: Terminated gracefully
//    		if(!socket.isClosed())
//    			socket.close();
			socket = new JxtaSocket(pg,
			        null,	//no specific peerid
			        PipeUtil.findPipeAdv(pg, JxtaServerSocketService.JxtaServerSocketPipeAdvPrefix + msg.getHostName()),
			        60000,	//general TO: 60 seconds
			        true);	// reliable connection
		} catch (IOException e) {
			LOG.warning("JxtaSocket initialize failed!");
			e.printStackTrace();
		}
		down_text.setText("");
		down_text.setEnabled(true);
		down_send.setEnabled(true);
	}
	
	public ChatWindow(Shell parentShell, PeerGroup pg, OnlineMessage msg) {
		super(parentShell);
		this.msg = msg;
		this.pg = pg;
        try {
			socket = new JxtaSocket(pg,
			        null,	//no specific peerid
			        PipeUtil.findPipeAdv(pg, JxtaServerSocketService.JxtaServerSocketPipeAdvPrefix + msg.getHostName()),
			        60000,	//general TO: 60 seconds
			        true);	// reliable connection
		} catch (IOException e) {
			LOG.warning("JxtaSocket initialize failed!");
			e.printStackTrace();
		}
	}

	/* (non-Javadoc)
	 * @see org.eclipse.jface.window.Window#createContents(org.eclipse.swt.widgets.Composite)
	 */
	@Override
	protected Control createContents(Composite parent) {
		SashForm form = new SashForm(parent, SWT.VERTICAL);
		form.setLayout(new FillLayout());
		
		Composite up = new Composite(form,SWT.NONE);
		up.setLayout(new FillLayout());
		up_text = new Text(up, SWT.BORDER | SWT.MULTI | SWT.V_SCROLL | SWT.READ_ONLY | SWT.H_SCROLL);
		up_text.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_WHITE));

		Composite down = new Composite(form,SWT.NONE);
		down.setLayout(new FillLayout());
		down_text = new Text(down, SWT.BORDER | SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL);
		down_text.addControlListener(new ControlAdapter() {
			public void controlResized(ControlEvent e) {
				Text source = (Text)e.getSource();
				source.setSize(source.getParent().getSize().x - BTNWIDTH-8, source.getParent().getSize().y);
			}
		});
		down_text.setFocus();

		down_send = new Button(down, SWT.PUSH);
		down_send.setText("發送");
		down_send.addControlListener(new ControlAdapter() {
			public void controlResized(ControlEvent e) {
				Button source = (Button)e.getSource();
				source.pack();
				int x = source.getParent().getSize().x - BTNWIDTH - 4;
				int y = (source.getParent().getSize().y - BTNHEIGHT)/2;
				source.setLocation(x, y);
			}
		});
		
		down_text.addKeyListener(new KeyAdapter() {
			public void keyPressed(KeyEvent event) {
				// CTRL+A --- Select All
				if(event.stateMask == SWT.CTRL && event.keyCode == 'a')	// If has better mothed?
					down_text.selectAll();
/*				// when user clicks CTRL+RETURN, then send the message, just like down_send button is clicked!
 * 				else if(event.stateMask == SWT.CTRL && (event.keyCode == SWT.CR || event.keyCode == SWT.LF)) {
					if(!StringUtils.isEmpty(down_text.getText())) {
						try {
							down_send.setEnabled(false);
							OutputStream out = (OutputStream) socket.getOutputStream();
							DataOutput dos = new DataOutputStream(out);
							dos.writeInt(Constants.MESSAGE_CHAT);

							Object[] chatMsgArr = MiscUtil.splitUTFString(XmlCreator.createChatMessage(down_text.getText()));
							dos.writeInt(chatMsgArr.length);
							for(int i=0; i<chatMsgArr.length; i++)
								dos.writeUTF((String)chatMsgArr[i]);
							
							up_text.append(MiscUtil.getUserName());
							up_text.append(":");
							up_text.append(down_text.getText());
							*//**
							 * @see org.eclipse.swt.widgets.Text.sendKeyEvent
							 *//*
							up_text.append("\r");
							down_text.setText("");
							out.flush();
							down_send.setEnabled(true);
						} catch (IOException e) {
							LOG.warning("Send chat message failed.");
							e.printStackTrace();
						}
					}					
				}*/
			}
		});
		down_send.addMouseListener(new MouseAdapter() {
			public void mouseUp(MouseEvent event) {
				if(!StringUtils.isEmpty(down_text.getText())) {
					try {
						down_send.setEnabled(false);
						OutputStream out = (OutputStream) socket.getOutputStream();
						DataOutput dos = new DataOutputStream(out);
						dos.writeInt(Constants.MESSAGE_CHAT);

						Object[] chatMsgArr = MiscUtil.splitUTFString(XmlCreator.createChatMessage(down_text.getText()));
						dos.writeInt(chatMsgArr.length);
						for(int i=0; i<chatMsgArr.length; i++)
							dos.writeUTF((String)chatMsgArr[i]);
						
						up_text.append(MiscUtil.getUserName());
						up_text.append(":");
						up_text.append(down_text.getText());
						up_text.append("\r\n");	// hard-code cariage return
						down_text.setText("");
						out.flush();
						down_send.setEnabled(true);
					} catch (IOException e) {
						// TODO: 發送失敗
						LOG.warning("Send chat message failed.");
						e.printStackTrace();
					}
				}
			}
		});
		
		form.setWeights(new int[] {60,40});
		
		return parent;
	}

	/* (non-Javadoc)
	 * @see org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets.Shell)
	 */
	@Override
	protected void configureShell(Shell newShell) {
		super.configureShell(newShell);

		newShell.setSize(300, 250);
		
		FillLayout layout = new FillLayout();
		layout.type = SWT.VERTICAL;
		layout.marginWidth = 4;
		layout.marginHeight = 4;
		newShell.setLayout(layout);
		
		newShell.setText("與" + msg.getUserName() + "交談");
	}

	/* (non-Javadoc)
	 * @see org.eclipse.jface.window.Window#close()
	 */
	@Override
	public boolean close() {
		try {
			MainApplicationWindow.chatwin.remove(msg.getHostName());
			OutputStream out = (OutputStream) socket.getOutputStream();
			DataOutput dos = new DataOutputStream(out);
			dos.writeInt(Constants.MESSAGE_EXITWINDOW);
//			dos.writeUTF(MiscUtil.getHostName());
//			dos.writeUTF(MiscUtil.getUserName());
			out.flush();
			out.close();
			// TODO: Close socket gracefully!
//			socket.close();
		} catch (IOException e) {
			LOG.warning("JxtaSocket close failed!");
			e.printStackTrace();
		}
		
		LOG.info("super.close()");
		return super.close();
	}
	
	
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精选一区二区三区| 欧美午夜免费电影| 日韩视频一区二区在线观看| 一区二区三区久久| 日本韩国一区二区三区| 国产精品蜜臀在线观看| 高清在线不卡av| 亚洲国产精品v| 国产成人精品aa毛片| 天天射综合影视| 欧美日韩亚洲综合在线| 日韩欧美国产精品| 成人欧美一区二区三区黑人麻豆| 激情国产一区二区| 久久丁香综合五月国产三级网站 | 亚洲国产精品国自产拍av| 韩国三级电影一区二区| 久久久精品免费观看| zzijzzij亚洲日本少妇熟睡| 亚洲欧美日韩国产手机在线| 国产精品一区在线| 久久综合五月天婷婷伊人| 久久99精品久久久久久动态图 | 亚洲第一激情av| 欧美成人欧美edvon| 成人爱爱电影网址| 爽好多水快深点欧美视频| 精品国产伦一区二区三区观看体验 | 欧美综合亚洲图片综合区| 午夜在线成人av| 久久久久久麻豆| 欧美日韩亚洲综合在线| 国产精品一区二区在线看| 亚洲综合色区另类av| 精品国产免费久久| 欧美日韩精品免费观看视频| 精品一区二区综合| 天堂午夜影视日韩欧美一区二区| 久久久久国产成人精品亚洲午夜| 国产高清亚洲一区| 午夜精品久久久久| 亚洲免费在线看| 中文字幕成人在线观看| 日韩午夜电影在线观看| 欧洲一区二区三区免费视频| 亚洲免费高清视频在线| 国产亚洲精品资源在线26u| 日本高清免费不卡视频| 久久99热国产| 日韩午夜三级在线| 成人av影院在线| 国产精品一二三四五| 亚洲高清免费观看高清完整版在线观看 | 婷婷综合在线观看| 国产精品福利一区二区三区| 欧美一卡二卡在线观看| 欧美日本在线播放| 在线一区二区三区四区| 成人免费av资源| 丁香婷婷深情五月亚洲| 国产成人精品www牛牛影视| 欧美午夜寂寞影院| voyeur盗摄精品| 日韩vs国产vs欧美| 久久久久亚洲综合| 欧美色电影在线| 日韩高清不卡一区二区| 国产女主播视频一区二区| 91麻豆精品国产自产在线| 国产99久久久国产精品免费看 | 欧美日韩视频在线一区二区| 欧美精品乱人伦久久久久久| 欧美色图片你懂的| 91精品国产麻豆国产自产在线| 欧美性生活大片视频| 色诱亚洲精品久久久久久| 99久久99久久精品免费看蜜桃| 丁香亚洲综合激情啪啪综合| 不卡一区在线观看| 不卡av在线免费观看| 欧美色爱综合网| 精品理论电影在线| 悠悠色在线精品| 秋霞电影一区二区| 人人精品人人爱| 不卡大黄网站免费看| 欧美精品少妇一区二区三区| 99精品国产99久久久久久白柏 | 国产精品久久久久久亚洲伦| 欧美韩国日本一区| 亚洲一区二区四区蜜桃| 国产一区日韩二区欧美三区| 色视频一区二区| 国产精品久99| 韩国v欧美v日本v亚洲v| 欧美优质美女网站| 国产亚洲精品免费| 国产精品欧美极品| 九九热在线视频观看这里只有精品| 国产69精品久久777的优势| 91久久国产综合久久| 欧美电影精品一区二区| 亚洲精品乱码久久久久久黑人 | 不卡大黄网站免费看| 在线成人免费视频| 亚洲欧洲精品天堂一级| 蜜桃精品视频在线| 欧美午夜精品理论片a级按摩| 欧美丰满嫩嫩电影| 亚欧色一区w666天堂| 99国产精品久久久久| 欧美videossexotv100| 亚洲国产毛片aaaaa无费看 | 欧美调教femdomvk| 亚洲综合色成人| 欧美精品第1页| 亚洲福利视频一区二区| 99国产精品久久| 视频一区二区三区入口| 91精品久久久久久久99蜜桃| 日本亚洲一区二区| 91社区在线播放| 国产精品乱码久久久久久| 精品一区二区三区在线视频| 91精品国产色综合久久不卡蜜臀| 天堂蜜桃一区二区三区| 欧美精品v国产精品v日韩精品 | 国产午夜精品理论片a级大结局| 国产精品一区不卡| 精品日韩在线观看| eeuss影院一区二区三区| 日韩欧美电影一区| 国产不卡在线一区| 一区在线中文字幕| 欧美电影在哪看比较好| 久久精品国产在热久久| 日韩欧美亚洲国产另类| 国产精品99久久久久久有的能看| 中文字幕一区二区三区视频| 欧美日韩国产在线观看| 精品在线亚洲视频| 亚洲第四色夜色| 久久久精品欧美丰满| 欧美日韩1234| 国产精品白丝jk白祙喷水网站| √…a在线天堂一区| 一本色道久久综合亚洲aⅴ蜜桃 | 一区二区三区在线免费观看| 色婷婷综合久久久| 国产精品1区2区3区在线观看| www国产成人免费观看视频 深夜成人网| 国产精品99久久久久| 免费视频一区二区| 亚洲天堂中文字幕| 国产三级一区二区三区| 欧美va亚洲va香蕉在线| 欧美变态tickle挠乳网站| 欧美日韩精品欧美日韩精品一 | 中文字幕在线一区免费| 在线精品亚洲一区二区不卡| 成人三级在线视频| 国产麻豆精品95视频| 蜜桃一区二区三区四区| 亚洲午夜三级在线| 亚洲成人av一区| 亚洲精品视频在线观看网站| 欧美电影免费观看完整版| 精品人在线二区三区| 精品国产乱码久久久久久久久 | 亚洲一区二区三区视频在线播放| 综合欧美亚洲日本| 日韩久久精品一区| 一本一本久久a久久精品综合麻豆| 中文字幕字幕中文在线中不卡视频| 精品99一区二区| 日韩一级黄色片| 日韩午夜电影av| 国产精品久久久久久久蜜臀| 中文字幕乱码亚洲精品一区| 国产精品你懂的在线| 日本一区二区三区久久久久久久久不| 91麻豆精品久久久久蜜臀| 欧美色涩在线第一页| 欧美日韩美女一区二区| 在线综合视频播放| 欧美一区二区福利视频| 久久影院午夜片一区| 亚洲欧美综合另类在线卡通| 天天色图综合网| 成人综合婷婷国产精品久久免费| 激情欧美日韩一区二区| 成人黄页毛片网站| 日韩精品一区国产麻豆| 国产欧美一区视频| 日韩av在线免费观看不卡| 国产精品1024| 欧美一区二区三区啪啪| 欧美国产精品v| 午夜精品福利一区二区蜜股av | 成人av免费在线播放|