?? chatclient.java
字號:
package com.cxz.httpchat.client;import java.io.IOException;import java.util.Date;import java.util.List;import com.cloudgarden.resource.SWTResourceManager;import com.cxz.httpchat.message.HeartBeatRequest;import com.cxz.httpchat.message.HeartBeatResponse;import com.cxz.httpchat.message.Message;import com.cxz.httpchat.message.UploadRequest;import com.cxz.httpchat.message.UploadResponse;import com.cxz.httpchat.util.MessagePoster;import org.apache.commons.httpclient.HttpException;import org.eclipse.swt.events.ShellEvent;import org.eclipse.swt.layout.FormAttachment;import org.eclipse.swt.layout.FormData;import org.eclipse.swt.layout.FormLayout;import org.eclipse.swt.widgets.Button;import org.eclipse.swt.widgets.Display;import org.eclipse.swt.widgets.MessageBox;import org.eclipse.swt.widgets.Shell;import org.eclipse.swt.widgets.Text;import org.eclipse.swt.SWT;import org.eclipse.swt.custom.CTabFolder;import org.eclipse.swt.custom.CTabItem;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.events.ShellAdapter;/** * This code was edited or generated using CloudGarden's Jigloo SWT/Swing GUI * Builder, which is free for non-commercial use. If Jigloo is being used * commercially (ie, by a corporation, company or business for any purpose * whatever) then you should purchase a license for each developer using Jigloo. * Please visit www.cloudgarden.com for details. Use of Jigloo implies * acceptance of these licensing terms. A COMMERCIAL LICENSE HAS NOT BEEN * PURCHASED FOR THIS MACHINE, SO JIGLOO OR THIS CODE CANNOT BE USED LEGALLY FOR * ANY CORPORATE OR COMMERCIAL PURPOSE. */public class ChatClient extends org.eclipse.swt.widgets.Dialog implements Runnable { private static final int INTERVAL_SECONDS = 1; private Shell dialogShell; private boolean flag = true; private Button sendMessage; private CTabItem setupTab; private CTabItem messageTab; private Text messages; private CTabFolder myTabFolder; private Text input; private int usrId = 1; private String pwd = "19841230"; private int distId = 2; MessagePoster<UploadRequest, UploadResponse> postUploading = null; MessagePoster<HeartBeatRequest, HeartBeatResponse> postHeartBeat = null; Thread heartBeatThread = null; List<Message> list = null; /** * Auto-generated main method to display this org.eclipse.swt.widgets.Dialog * inside a new Shell. */ public static void main(String[] args) { try { Display display = Display.getDefault(); Shell shell = new Shell(display); ChatClient inst = new ChatClient(shell, SWT.NULL); inst.open(); } catch (Exception e) { e.printStackTrace(); } } public ChatClient(Shell parent, int style) { super(parent, style); postUploading = new MessagePoster<UploadRequest, UploadResponse>(); postHeartBeat = new MessagePoster<HeartBeatRequest, HeartBeatResponse>(); } public void open() { try { this.start(); Shell parent = getParent(); dialogShell = new Shell(parent, SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL); { // Register as a resource user - SWTResourceManager will // handle the obtaining and disposing of resources SWTResourceManager.registerResourceUser(dialogShell); } dialogShell.setLayout(new FormLayout()); dialogShell.layout(); dialogShell.pack(); dialogShell.setSize(709, 429); { myTabFolder = new CTabFolder(dialogShell, SWT.BORDER); FormData MyTabFolderLData = new FormData(); MyTabFolderLData.width = 697; MyTabFolderLData.height = 309; MyTabFolderLData.left = new FormAttachment(0, 1000, 0); MyTabFolderLData.top = new FormAttachment(0, 1000, 12); myTabFolder.setLayoutData(MyTabFolderLData); { messageTab = new CTabItem(myTabFolder, SWT.NONE); messageTab.setText("Message"); { messages = new Text(myTabFolder, SWT.MULTI | SWT.WRAP | SWT.BORDER); messageTab.setControl(messages); messages.setEditable(false); messages.setFont(SWTResourceManager.getFont("Tahoma", 14, 0, false, false)); } } { setupTab = new CTabItem(myTabFolder, SWT.NONE); setupTab.setText("Setup Page"); } myTabFolder.setSelection(0); } { input = new Text(dialogShell, SWT.BORDER); FormData sentenseLData = new FormData(); sentenseLData.width = 519; sentenseLData.height = 19; sentenseLData.left = new FormAttachment(0, 1000, 39); sentenseLData.top = new FormAttachment(0, 1000, 355); input.setLayoutData(sentenseLData); input.setFont(SWTResourceManager.getFont("Tahoma", 14, 0, false, false)); input.addKeyListener(new KeyAdapter() { public void keyPressed(KeyEvent evt) { inputKeyPressed(evt); } }); } { sendMessage = new Button(dialogShell, SWT.PUSH | SWT.CENTER); sendMessage.setText("Send"); FormData sendMessageLData = new FormData(); sendMessageLData.width = 80; sendMessageLData.height = 30; sendMessageLData.left = new FormAttachment(0, 1000, 605); sendMessageLData.top = new FormAttachment(0, 1000, 353); sendMessage.setLayoutData(sendMessageLData); sendMessage.addMouseListener(new MouseAdapter() { public void mouseUp(MouseEvent evt) { sendMessage(input.getText()); } }); } dialogShell.addShellListener(new ShellAdapter() { public void shellClosed(ShellEvent evt) { flag = false;// stop the heart beat thread if(heartBeatThread != null) heartBeatThread.interrupt(); } }); dialogShell.setLocation(getParent().toDisplay(100, 100)); dialogShell.open(); Display display = dialogShell.getDisplay(); while (!dialogShell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); //Jam code! if(list != null){ synchronized(list){ for(int i = 0; i < list.size(); i++){ messages.append("User-" + list.get(i).getFrom() + " said to you: " + list.get(i).getContent() + "\n"); } list = null; } } } } catch (Exception e) { e.printStackTrace(); } } public void run() { while(flag){ HeartBeatRequest request = makeHeartBeat(); HeartBeatResponse response = null; try { response = postHeartBeat.postXML(request); if(response.getMessages().size() != 0){ displayMessage(response.getMessages()); } Thread.sleep(INTERVAL_SECONDS * 1000); } catch (HttpException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } private void displayMessage(List<Message> mess) { if(mess != null){ if(list != null){ synchronized(list){ list = mess; } } else { list = mess; } } } private HeartBeatRequest makeHeartBeat(){ HeartBeatRequest heartBeat = new HeartBeatRequest(); heartBeat.setId(usrId); heartBeat.setPwd(pwd); return heartBeat; } private void start(){ heartBeatThread = new Thread(this, "Heart Beat Thread"); heartBeatThread.start(); } private void inputKeyPressed(KeyEvent evt) { if (evt.keyCode == SWT.CR//check the enter pressing || evt.keyCode == SWT.KEYPAD_CR) { sendMessage(input.getText()); } } private void sendMessage(String message) { if (message != null && !message.equals("")) { //To check whether the input is null printToScreen(message); sendToServer(message); } else { Display display = Display.getDefault(); Shell shell = new Shell(display); MessageBox messageBox = new MessageBox(shell, SWT.OK); messageBox.setMessage("Can't send empty message."); messageBox.open(); } } private void sendToServer(String message) { UploadRequest upload = new UploadRequest(); upload.setId(usrId); upload.setTo(distId); upload.setDate(new Date(System.currentTimeMillis())); upload.setPwd(pwd); upload.setContent(message); UploadResponse response = null; try { response = postUploading.postXML(upload); System.out.println("UploadResponse: " + response.isFlag()); } catch (HttpException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } private void printToScreen(String message) { messages.append("You said to User-" + distId + ": " + input.getText() + "\n"); input.setText(""); }}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -