diff options
| author | cirakg <ciraboxkg@gmail.com> | 2022-12-30 05:46:35 +0100 | 
|---|---|---|
| committer | cirakg <ciraboxkg@gmail.com> | 2022-12-30 05:46:35 +0100 | 
| commit | 71eac283af1b69d1f665a83a0dd251d095cfb235 (patch) | |
| tree | 53f583d3832fb98e6cf84b76ba495baac3a57351 /src/main/java/ui | |
| parent | 110a2354cff010f88b59dbb302192fce0cc6a9ac (diff) | |
Slanje available korisnika svaki put kad se desi promena na serveru. Dodate provere za prekidanje konekcije. Kod premesten iz panela u MainFrame.
Diffstat (limited to 'src/main/java/ui')
| -rw-r--r-- | src/main/java/ui/ChooseOpponentPanel.java | 23 | ||||
| -rw-r--r-- | src/main/java/ui/LoginPanel.java | 29 | ||||
| -rw-r--r-- | src/main/java/ui/MainFrame.java | 70 | 
3 files changed, 66 insertions, 56 deletions
| diff --git a/src/main/java/ui/ChooseOpponentPanel.java b/src/main/java/ui/ChooseOpponentPanel.java index 1b63fca..4ecd823 100644 --- a/src/main/java/ui/ChooseOpponentPanel.java +++ b/src/main/java/ui/ChooseOpponentPanel.java @@ -48,31 +48,8 @@ public class ChooseOpponentPanel extends JPanel {  		MainFrame topFrame=(MainFrame) SwingUtilities.getAncestorOfClass(MainFrame.class, ChooseOpponentPanel.this);  		try {  			SocketChannel client=topFrame.getClient(); -			ByteBuffer readBuffer=topFrame.getReadBuffer();  			ByteBuffer buff = ByteBuffer.wrap("REQUESTUSERS".getBytes());  			client.write(buff); -			client.configureBlocking(true); -			readBuffer.clear(); -			StringBuilder sb=new StringBuilder(); -			while(client.read(readBuffer)>0) { -				System.out.println("uslo"); -				readBuffer.flip(); -				byte[] bytes = new byte[readBuffer.limit()]; -				readBuffer.get(bytes); -				sb.append(new String(bytes)); -				readBuffer.clear(); -				client.configureBlocking(false); -			} -			XMLDecoder decoder = null; -			decoder = new XMLDecoder(new ByteArrayInputStream(sb.toString().getBytes())); -			UserListWrapper wp=(UserListWrapper) decoder.readObject(); -			decoder.close(); -			comboBox.removeAllItems(); -			for(User user :wp.getUsers()) { -				comboBox.addItem(new ComboBoxUser(user)); -				 -			} -			  		} catch (Exception e) {  			// TODO: handle exception  		} diff --git a/src/main/java/ui/LoginPanel.java b/src/main/java/ui/LoginPanel.java index 7ec97f1..bfd47f9 100644 --- a/src/main/java/ui/LoginPanel.java +++ b/src/main/java/ui/LoginPanel.java @@ -73,6 +73,7 @@ public class LoginPanel extends JPanel {  	}  	public void Login() { +		System.out.println("SEND LOGIN");  		String username=textFieldUsername.getText();  		String password=textFieldPassword.getText();  		if(!(username.trim().length()>0 && password.trim().length()>0)) @@ -85,36 +86,10 @@ public class LoginPanel extends JPanel {  		MainFrame topFrame=(MainFrame) SwingUtilities.getAncestorOfClass(MainFrame.class, LoginPanel.this);  		try {  			SocketChannel client=topFrame.getClient(); -			ByteBuffer readBuffer=topFrame.getReadBuffer();  			client.write(bbLogin); -			client.configureBlocking(true); -			readBuffer.clear(); -			StringBuilder sb=new StringBuilder(); -			while(client.read(readBuffer)>0) { -				readBuffer.flip(); -				byte[] bytes = new byte[readBuffer.limit()]; -				readBuffer.get(bytes); -				sb.append(new String(bytes)); -				readBuffer.clear(); -				client.configureBlocking(false); -			} -			String response[]=sb.toString().split(":"); -			if(response[0].trim().equals("ACCEPTED")) { -				topFrame.setUserId(Long.parseLong(response[1].trim())); -				topFrame.getContentPane().removeAll(); -				ChooseOpponentPanel panel=new ChooseOpponentPanel(); -				topFrame.getContentPane().add(panel,BorderLayout.CENTER); -				SwingUtilities.updateComponentTreeUI(topFrame); -				panel.getUsers(); -				 -				 -			}else { -				System.out.println("Bad Login"); -				warningTextArea.setText("Pogresan Login"); -			}  		} catch (Exception e) { -			// TODO: handle exception +			e.printStackTrace();  		}  	} diff --git a/src/main/java/ui/MainFrame.java b/src/main/java/ui/MainFrame.java index cb6c6ca..62fb754 100644 --- a/src/main/java/ui/MainFrame.java +++ b/src/main/java/ui/MainFrame.java @@ -7,8 +7,12 @@ import javax.swing.JPanel;  import javax.swing.border.EmptyBorder;  import models.CONSTS; +import models.ComboBoxUser; +import models.User; +import models.UserListWrapper;  import javax.swing.JTextField; +import javax.swing.SwingUtilities;  import javax.swing.JLabel;  import java.awt.Color;  import javax.swing.JButton; @@ -16,6 +20,8 @@ import javax.swing.JTextArea;  import java.awt.Font;  import java.awt.event.WindowAdapter;  import java.awt.event.WindowEvent; +import java.beans.XMLDecoder; +import java.io.ByteArrayInputStream;  import java.io.IOException;  import java.net.InetSocketAddress;  import java.nio.ByteBuffer; @@ -38,6 +44,7 @@ public class MainFrame extends JFrame implements Runnable {  	public ChooseOpponentPanel chooseOpponentPanel=null;  	GamePanel gamePanel=null;  	public long userId=-1; +	public boolean run=true;  	public MainFrame() {  		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  		setBounds(100, 100, 727, 429); @@ -51,16 +58,12 @@ public class MainFrame extends JFrame implements Runnable {  			@Override  		    public void windowClosing(WindowEvent e)  		    { -		      System.out.println("EXITED"); -		        		      try { -		    	  client.close(); -				Thread.sleep(500); +		    	  run=false;  			} catch (Exception e1) {  				// TODO Auto-generated catch block  				e1.printStackTrace();  			} -		      System.exit(EXIT_ON_CLOSE);  		    }  		}); @@ -74,9 +77,64 @@ public class MainFrame extends JFrame implements Runnable {  	}  	@Override  	public void run() { -		while(true) { +		 try{ +			 while(run) { +				StringBuilder sb=new StringBuilder(); +				client.configureBlocking(true); +				readBuffer.clear(); +				 +				while(run && client.read(readBuffer)>0) { +					readBuffer.flip(); +					byte[] bytes = new byte[readBuffer.limit()]; +					readBuffer.get(bytes); +					sb.append(new String(bytes)); +					readBuffer.clear(); +					client.configureBlocking(false); +				} +				if(!run) +				{ +					client.close(); +					System.exit(EXIT_ON_CLOSE); +				} +				String response[]=sb.toString().split(":"); +				if(response[0].trim().equals("ACCEPTED")) { +					this.setUserId(Long.parseLong(response[1].trim())); +					this.getContentPane().removeAll(); +					this.getContentPane().add(chooseOpponentPanel,BorderLayout.CENTER); +					SwingUtilities.updateComponentTreeUI(this); +					chooseOpponentPanel.getUsers(); +					 +					 +				}else if(response[0].trim().equals("BADLOGIN")){ +					System.out.println("Bad Login"); +					this.loginPanel.warningTextArea.setText("Pogresan Login"); +				}else { +					XMLDecoder decoder = null; +					decoder = new XMLDecoder(new ByteArrayInputStream(sb.toString().getBytes())); +					UserListWrapper wp=(UserListWrapper) decoder.readObject(); +					decoder.close(); +					chooseOpponentPanel.comboBox.removeAllItems(); +					if(wp.getUsers()!=null) +					for(User user :wp.getUsers()) { +						if(userId!=user.id) +							chooseOpponentPanel.comboBox.addItem(new ComboBoxUser(user)); +						 +					} +				} +				 + +		} +		 } catch (Exception e) { +				e.printStackTrace(); +			} +		try { +			client.close(); +		} catch (IOException e) { +			// TODO Auto-generated catch block +			e.printStackTrace();  		} +		System.exit(EXIT_ON_CLOSE);  	}  	public SocketChannel getClient() { | 
