Advertisement
Guest User

Untitled

a guest
Mar 4th, 2017
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 28.28 KB | None | 0 0
  1. package com.ui;
  2.  
  3. import com.socket.History;
  4. import com.socket.Message;
  5. import com.socket.SocketClient;
  6. import java.awt.event.WindowEvent;
  7. import java.awt.event.WindowListener;
  8. import java.io.File;
  9. import javax.swing.DefaultListModel;
  10. import javax.swing.JFileChooser;
  11. import javax.swing.JFrame;
  12. import javax.swing.UIManager;
  13. import oracle.jrockit.jfr.JFR;
  14.  
  15. public class ChatFrame extends javax.swing.JFrame {
  16.  
  17. public SocketClient client;
  18. public int port;
  19. public String serverAddr, username, password;
  20. public Thread clientThread;
  21. public DefaultListModel model;
  22. public File file;
  23. public String historyFile = "D:/History.xml";
  24. public HistoryFrame historyFrame;
  25. public History hist;
  26.  
  27. public ChatFrame() {
  28. initComponents();
  29. this.setTitle("jMessenger");
  30. model.addElement("All");
  31. jList1.setSelectedIndex(0);
  32.  
  33. jTextField6.setEditable(false);
  34.  
  35. this.addWindowListener(new WindowListener() {
  36.  
  37. @Override public void windowOpened(WindowEvent e) {}
  38. @Override public void windowClosing(WindowEvent e) { try{ client.send(new Message("message", username, ".bye", "SERVER")); clientThread.stop(); }catch(Exception ex){} }
  39. @Override public void windowClosed(WindowEvent e) {}
  40. @Override public void windowIconified(WindowEvent e) {}
  41. @Override public void windowDeiconified(WindowEvent e) {}
  42. @Override public void windowActivated(WindowEvent e) {}
  43. @Override public void windowDeactivated(WindowEvent e) {}
  44. });
  45.  
  46. hist = new History(historyFile);
  47. }
  48.  
  49. public boolean isWin32(){
  50. return System.getProperty("os.name").startsWith("Windows");
  51. }
  52.  
  53. @SuppressWarnings("unchecked")
  54. // <editor-fold defaultstate="collapsed" desc="Generated Code">
  55. private void initComponents() {
  56.  
  57. jLabel1 = new javax.swing.JLabel();
  58. jTextField1 = new javax.swing.JTextField();
  59. jLabel2 = new javax.swing.JLabel();
  60. jTextField2 = new javax.swing.JTextField();
  61. jButton1 = new javax.swing.JButton();
  62. jTextField3 = new javax.swing.JTextField();
  63. jLabel3 = new javax.swing.JLabel();
  64. jLabel4 = new javax.swing.JLabel();
  65. jButton3 = new javax.swing.JButton();
  66. jPasswordField1 = new javax.swing.JPasswordField();
  67. jSeparator1 = new javax.swing.JSeparator();
  68. jScrollPane1 = new javax.swing.JScrollPane();
  69. jTextArea1 = new javax.swing.JTextArea();
  70. jScrollPane2 = new javax.swing.JScrollPane();
  71. jList1 = new javax.swing.JList();
  72. jLabel5 = new javax.swing.JLabel();
  73. jTextField4 = new javax.swing.JTextField();
  74. jButton4 = new javax.swing.JButton();
  75. jButton2 = new javax.swing.JButton();
  76. jSeparator2 = new javax.swing.JSeparator();
  77. jTextField5 = new javax.swing.JTextField();
  78. jButton5 = new javax.swing.JButton();
  79. jButton6 = new javax.swing.JButton();
  80. jLabel6 = new javax.swing.JLabel();
  81. jLabel7 = new javax.swing.JLabel();
  82. jTextField6 = new javax.swing.JTextField();
  83. jButton7 = new javax.swing.JButton();
  84. jButton8 = new javax.swing.JButton();
  85. jButton9 = new javax.swing.JButton();
  86.  
  87. setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
  88.  
  89. jLabel1.setText("Host Address : ");
  90.  
  91. jTextField1.setText("localhost");
  92.  
  93. jLabel2.setText("Host Port : ");
  94.  
  95. jTextField2.setText("13000");
  96.  
  97. jButton1.setText("Connect");
  98. jButton1.addActionListener(new java.awt.event.ActionListener() {
  99. public void actionPerformed(java.awt.event.ActionEvent evt) {
  100. jButton1ActionPerformed(evt);
  101. }
  102. });
  103.  
  104. jTextField3.setEnabled(false);
  105.  
  106. jLabel3.setText("Password :");
  107.  
  108. jLabel4.setText("Username :");
  109.  
  110. jButton3.setText("SignUp");
  111. jButton3.setEnabled(false);
  112. jButton3.addActionListener(new java.awt.event.ActionListener() {
  113. public void actionPerformed(java.awt.event.ActionEvent evt) {
  114. jButton3ActionPerformed(evt);
  115. }
  116. });
  117.  
  118. jPasswordField1.setEnabled(false);
  119. jPasswordField1.addActionListener(new java.awt.event.ActionListener() {
  120. public void actionPerformed(java.awt.event.ActionEvent evt) {
  121. jPasswordField1ActionPerformed(evt);
  122. }
  123. });
  124.  
  125. jTextArea1.setColumns(20);
  126. jTextArea1.setFont(new java.awt.Font("Consolas", 0, 12)); // NOI18N
  127. jTextArea1.setRows(5);
  128. jScrollPane1.setViewportView(jTextArea1);
  129.  
  130. jList1.setModel((model = new DefaultListModel()));
  131. jScrollPane2.setViewportView(jList1);
  132.  
  133. jLabel5.setText("Message : ");
  134.  
  135. jButton4.setText("Send Message ");
  136. jButton4.setEnabled(false);
  137. jButton4.addActionListener(new java.awt.event.ActionListener() {
  138. public void actionPerformed(java.awt.event.ActionEvent evt) {
  139. jButton4ActionPerformed(evt);
  140. }
  141. });
  142.  
  143. jButton2.setText("Login");
  144. jButton2.setEnabled(false);
  145. jButton2.addActionListener(new java.awt.event.ActionListener() {
  146. public void actionPerformed(java.awt.event.ActionEvent evt) {
  147. jButton2ActionPerformed(evt);
  148. }
  149. });
  150.  
  151. jButton5.setText("...");
  152. jButton5.setEnabled(false);
  153. jButton5.addActionListener(new java.awt.event.ActionListener() {
  154. public void actionPerformed(java.awt.event.ActionEvent evt) {
  155. jButton5ActionPerformed(evt);
  156. }
  157. });
  158.  
  159. jButton6.setText("Send");
  160. jButton6.setEnabled(false);
  161. jButton6.addActionListener(new java.awt.event.ActionListener() {
  162. public void actionPerformed(java.awt.event.ActionEvent evt) {
  163. jButton6ActionPerformed(evt);
  164. }
  165. });
  166.  
  167. jLabel6.setText("File :");
  168.  
  169. jLabel7.setText("History File :");
  170.  
  171. jButton7.setText("...");
  172. jButton7.setEnabled(false);
  173. jButton7.addActionListener(new java.awt.event.ActionListener() {
  174. public void actionPerformed(java.awt.event.ActionEvent evt) {
  175. jButton7ActionPerformed(evt);
  176. }
  177. });
  178.  
  179. jButton8.setText("Show");
  180. jButton8.setEnabled(false);
  181. jButton8.addActionListener(new java.awt.event.ActionListener() {
  182. public void actionPerformed(java.awt.event.ActionEvent evt) {
  183. jButton8ActionPerformed(evt);
  184. }
  185. });
  186.  
  187. jButton9.setText("Disconnect");
  188. jButton9.addActionListener(new java.awt.event.ActionListener() {
  189. public void actionPerformed(java.awt.event.ActionEvent evt) {
  190. jButton9ActionPerformed(evt);
  191. }
  192. });
  193.  
  194. javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
  195. getContentPane().setLayout(layout);
  196. layout.setHorizontalGroup(
  197. layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  198. .addGroup(layout.createSequentialGroup()
  199. .addContainerGap()
  200. .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  201. .addComponent(jSeparator2)
  202. .addComponent(jSeparator1, javax.swing.GroupLayout.Alignment.TRAILING)
  203. .addGroup(layout.createSequentialGroup()
  204. .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
  205. .addComponent(jLabel1)
  206. .addComponent(jLabel4)
  207. .addComponent(jLabel7))
  208. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  209. .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  210. .addGroup(layout.createSequentialGroup()
  211. .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  212. .addComponent(jTextField3)
  213. .addComponent(jTextField1))
  214. .addGap(18, 18, 18)
  215. .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
  216. .addComponent(jLabel2)
  217. .addComponent(jLabel3))
  218. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
  219. .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  220. .addComponent(jTextField2)
  221. .addComponent(jPasswordField1)))
  222. .addComponent(jTextField6))
  223. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  224. .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
  225. .addComponent(jButton1, javax.swing.GroupLayout.DEFAULT_SIZE, 83, Short.MAX_VALUE)
  226. .addComponent(jButton2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  227. .addComponent(jButton7, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
  228. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  229. .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
  230. .addComponent(jButton8, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  231. .addComponent(jButton3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  232. .addComponent(jButton9, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
  233. .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
  234. .addComponent(jScrollPane1)
  235. .addGap(18, 18, 18)
  236. .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 108, javax.swing.GroupLayout.PREFERRED_SIZE))
  237. .addGroup(layout.createSequentialGroup()
  238. .addGap(23, 23, 23)
  239. .addComponent(jLabel6)
  240. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
  241. .addComponent(jTextField5, javax.swing.GroupLayout.PREFERRED_SIZE, 378, javax.swing.GroupLayout.PREFERRED_SIZE)
  242. .addGap(18, 18, 18)
  243. .addComponent(jButton5, javax.swing.GroupLayout.PREFERRED_SIZE, 27, javax.swing.GroupLayout.PREFERRED_SIZE)
  244. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  245. .addComponent(jButton6, javax.swing.GroupLayout.PREFERRED_SIZE, 77, javax.swing.GroupLayout.PREFERRED_SIZE))
  246. .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
  247. .addComponent(jLabel5)
  248. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  249. .addComponent(jTextField4)
  250. .addGap(18, 18, 18)
  251. .addComponent(jButton4, javax.swing.GroupLayout.PREFERRED_SIZE, 108, javax.swing.GroupLayout.PREFERRED_SIZE)))
  252. .addContainerGap())
  253. );
  254. layout.setVerticalGroup(
  255. layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  256. .addGroup(layout.createSequentialGroup()
  257. .addContainerGap()
  258. .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
  259. .addComponent(jLabel1)
  260. .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  261. .addComponent(jLabel2)
  262. .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  263. .addComponent(jButton1)
  264. .addComponent(jButton9))
  265. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
  266. .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
  267. .addComponent(jTextField3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  268. .addComponent(jLabel3)
  269. .addComponent(jLabel4)
  270. .addComponent(jButton3)
  271. .addComponent(jPasswordField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  272. .addComponent(jButton2))
  273. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  274. .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
  275. .addComponent(jLabel7)
  276. .addComponent(jTextField6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  277. .addComponent(jButton7)
  278. .addComponent(jButton8))
  279. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
  280. .addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE)
  281. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
  282. .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
  283. .addComponent(jScrollPane1)
  284. .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 264, Short.MAX_VALUE))
  285. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
  286. .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
  287. .addComponent(jButton4)
  288. .addComponent(jLabel5)
  289. .addComponent(jTextField4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
  290. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
  291. .addComponent(jSeparator2, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE)
  292. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
  293. .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE, false)
  294. .addComponent(jButton6, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  295. .addComponent(jButton5, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  296. .addComponent(jLabel6)
  297. .addComponent(jTextField5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
  298. .addContainerGap())
  299. );
  300.  
  301. pack();
  302. }// </editor-fold>
  303.  
  304. private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
  305. serverAddr = jTextField1.getText(); port = Integer.parseInt(jTextField2.getText());
  306.  
  307. if(!serverAddr.isEmpty() && !jTextField2.getText().isEmpty()){
  308. try{
  309. client = new SocketClient(this);
  310. clientThread = new Thread(client);
  311. clientThread.start();
  312. client.send(new Message("test", "testUser", "testContent", "SERVER"));
  313. }
  314. catch(Exception ex){
  315. jTextArea1.append("[Application > Me] : Server not foundn");
  316. }
  317. }
  318. }
  319.  
  320.  
  321.  
  322. private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
  323. username = jTextField3.getText();
  324. password = jPasswordField1.getText();
  325.  
  326. if(!username.isEmpty() && !password.isEmpty()){
  327. client.send(new Message("login", username, password, "SERVER"));
  328. }
  329. }
  330.  
  331. private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {
  332. String msg = jTextField4.getText();
  333. String target = jList1.getSelectedValue().toString();
  334.  
  335. if(!msg.isEmpty() && !target.isEmpty()){
  336. jTextField4.setText("");
  337. client.send(new Message("message", username, msg, target));
  338. }
  339. }
  340.  
  341. private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
  342. username = jTextField3.getText();
  343. password = jPasswordField1.getText();
  344.  
  345. if(!username.isEmpty() && !password.isEmpty()){
  346. client.send(new Message("signup", username, password, "SERVER"));
  347. }
  348. }
  349.  
  350. private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {
  351. JFileChooser fileChooser = new JFileChooser();
  352. fileChooser.showDialog(this, "Select File");
  353. file = fileChooser.getSelectedFile();
  354.  
  355. if(file != null){
  356. if(!file.getName().isEmpty()){
  357. jButton6.setEnabled(true); String str;
  358.  
  359. if(jTextField5.getText().length() > 30){
  360. String t = file.getPath();
  361. str = t.substring(0, 20) + " [...] " + t.substring(t.length() - 20, t.length());
  362. }
  363. else{
  364. str = file.getPath();
  365. }
  366. jTextField5.setText(str);
  367. }
  368. }
  369. }
  370.  
  371. private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) {
  372. long size = file.length();
  373. if(size < 120 * 1024 * 1024){
  374. client.send(new Message("upload_req", username, file.getName(), jList1.getSelectedValue().toString()));
  375. }
  376. else{
  377. jTextArea1.append("[Application > Me] : File is size too largen");
  378. }
  379. }
  380.  
  381. private void jButton7ActionPerformed(java.awt.event.ActionEvent evt) {
  382. JFileChooser jf = new JFileChooser();
  383. jf.showDialog(this, "Select File");
  384.  
  385. if(!jf.getSelectedFile().getPath().isEmpty()){
  386. historyFile = jf.getSelectedFile().getPath();
  387. if(this.isWin32()){
  388. historyFile = historyFile.replace("/", "\");
  389. }
  390. jTextField6.setText(historyFile);
  391. jTextField6.setEditable(false);
  392. jButton7.setEnabled(false);
  393. jButton8.setEnabled(true);
  394. hist = new History(historyFile);
  395.  
  396. historyFrame = new HistoryFrame(hist);
  397. historyFrame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
  398. historyFrame.setVisible(false);
  399. }
  400. }
  401.  
  402. private void jButton8ActionPerformed(java.awt.event.ActionEvent evt) {
  403. historyFrame.setLocation(this.getLocation());
  404. historyFrame.setVisible(true);
  405. }
  406.  
  407. private void jPasswordField1ActionPerformed(java.awt.event.ActionEvent evt) {
  408. // TODO add your handling code here:
  409. }
  410.  
  411. private void jButton9ActionPerformed(java.awt.event.ActionEvent evt) {
  412. // TODO add your handling code here:
  413.  
  414. }
  415.  
  416. public static void main(String args[]) {
  417. try {
  418. UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
  419. }
  420. catch(Exception ex){
  421. System.out.println("Look & Feel exception");
  422. }
  423.  
  424. java.awt.EventQueue.invokeLater(new Runnable() {
  425. public void run() {
  426. new ChatFrame().setVisible(true);
  427. }
  428. });
  429. }
  430. // Variables declaration - do not modify
  431. public javax.swing.JButton jButton1;
  432. public javax.swing.JButton jButton2;
  433. public javax.swing.JButton jButton3;
  434. public javax.swing.JButton jButton4;
  435. public javax.swing.JButton jButton5;
  436. public javax.swing.JButton jButton6;
  437. public javax.swing.JButton jButton7;
  438. public javax.swing.JButton jButton8;
  439. private javax.swing.JButton jButton9;
  440. private javax.swing.JLabel jLabel1;
  441. private javax.swing.JLabel jLabel2;
  442. private javax.swing.JLabel jLabel3;
  443. private javax.swing.JLabel jLabel4;
  444. private javax.swing.JLabel jLabel5;
  445. private javax.swing.JLabel jLabel6;
  446. private javax.swing.JLabel jLabel7;
  447. public javax.swing.JList jList1;
  448. public javax.swing.JPasswordField jPasswordField1;
  449. private javax.swing.JScrollPane jScrollPane1;
  450. private javax.swing.JScrollPane jScrollPane2;
  451. private javax.swing.JSeparator jSeparator1;
  452. private javax.swing.JSeparator jSeparator2;
  453. public javax.swing.JTextArea jTextArea1;
  454. public javax.swing.JTextField jTextField1;
  455. public javax.swing.JTextField jTextField2;
  456. public javax.swing.JTextField jTextField3;
  457. public javax.swing.JTextField jTextField4;
  458. public javax.swing.JTextField jTextField5;
  459. public javax.swing.JTextField jTextField6;
  460. // End of variables declaration
  461. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement