def __init__(self, peer_next, max_peers = 2, server_port = 8989, master = None):
		
		Frame.__init__(self, master)
		
		self.grid()
		self.UI_Elements()
		self.master.title("P2P File Sharing Application")
		
		self.server_port = str(server_port)
		self.peer = Peer_str(max_peers, server_port)
		self.host, self.port = peer_next.split(':')
		self.peer.add_peer(self.host, self.port)
		
		p_file = self.peer.peer_files()
		if self.filelist.size() > 0:
			self.filelist.delete(0, self.filelist.size() - 1)
		for k,v in p_file.items():
			self.filelist.insert(END, k)
		
		
		t = threading.Thread( target = self.peer.listen_incoming_conn, args = [] )
		t.start()
		
		self.peer.peer_status()
			
		"""
class User_Interface(Frame):
	
	def __init__(self, peer_next, max_peers = 2, server_port = 8989, master = None):
		
		Frame.__init__(self, master)
		
		self.grid()
		self.UI_Elements()
		self.master.title("P2P File Sharing Application")
		
		self.server_port = str(server_port)
		self.peer = Peer_str(max_peers, server_port)
		self.host, self.port = peer_next.split(':')
		self.peer.add_peer(self.host, self.port)
		
		p_file = self.peer.peer_files()
		if self.filelist.size() > 0:
			self.filelist.delete(0, self.filelist.size() - 1)
		for k,v in p_file.items():
			self.filelist.insert(END, k)
		
		
		t = threading.Thread( target = self.peer.listen_incoming_conn, args = [] )
		t.start()
		
		self.peer.peer_status()
			
		"""
		s = peer.create_socket()
		peer.send_message_to_peer(host, int(port), "GENL","HAII")
		
		peer.listen_incoming_conn()
		"""
		
			
	#def get_file_list(self):
		
		#selection = self.peerlist.curselection()
		
	def current_peer_list(self):
		own_id = "%s:%s"%(self.peer.peer_host, self.server_port)
		
		if self.peerlist.size() > 0:
			self.peerlist.delete(0, self.peerlist.size() - 1)
		self.peerlist.insert(END, own_id)
		for host, port in self.peer.peer_info.items():
			p = '%s:%s'%(host, port)
			self.peerlist.insert(END, p)
		
			
	def refresh(self):
		self.current_peer_list()
	
	def UI_Elements(self):
			
		frame_files = Frame(self)
		frame_peers = Frame(self)
		frame_search = Frame(self)
		frame_addfile = Frame(self)
		frame_refresh = Frame(self)
			
		frame_files.grid(row = 0, column = 0, sticky = N+S)
		frame_peers.grid(row = 1, column = 1, sticky = N+S)
		
		frame_search.grid(row = 4)
		frame_addfile.grid(row = 3)
		frame_refresh.grid(row = 3, column = 1)
		
		Label(frame_files, text = "Files").grid()
		Label(frame_peers, text = "Peer List").grid()
		
		frame_filelist = Frame(frame_files)
		frame_filelist.grid(row = 1, column = 0)
		scroll_filelist = Scrollbar(frame_filelist, orient = VERTICAL)
		scroll_filelist.grid(row = 0, column = 1, sticky = N+S)
		self.filelist = Listbox(frame_filelist, height = 5, yscrollcommand = scroll_filelist.set)
		self.filelist.grid(row = 0, column = 0, sticky = N+S)
		scroll_filelist["command"] = self.filelist.yview
		
		self.download_button = Button(frame_files, text = "Download", command = self.download)
		self.download_button.grid(row = 1, column = 2)
		
		#self.showfile = Entry(frame_addfile, width = 25)
		self.showfile_button = Button(frame_files, text = "File Info", command = self.get_file_list)
		#self.showfile.grid(row = 0, column = 0)
		self.showfile_button.grid(row = 1, column = 3)
		"""
		self.search = Entry(frame_search, width = 25)
		self.search_button = Button(frame_search, text = "Refresh", command = self.refresh)
		self.search.grid(row = 0, column = 0)
		self.search_button.grid(row = 0, column = 1)
		"""
		frame_peerlist = Frame(frame_peers)
		frame_peerlist.grid(row = 1, column = 0)
		scroll_peerlist = Scrollbar( frame_peerlist, orient=VERTICAL )
		scroll_peerlist.grid(row = 0, column =1 , sticky=N+S)
		self.peerlist = Listbox(frame_peerlist, height = 5, yscrollcommand = scroll_peerlist.set)
		self.peerlist.grid(row = 0, column = 0, sticky = E+W)
		scroll_peerlist["command"] = self.peerlist.yview	
		
		self.refresh_button = Button(frame_refresh, text = "Refresh", command = self.refresh)
		self.refresh_button.grid(row=0, column=1)
	
	

	
	
	def get_file_list(self):
		selection = self.peerlist.curselection()
		if len(selection) == 1:
			peer_id = self.peerlist.get(selection[0])
			host, port = peer_id.split(':')
			self.peer.send_message_to_peer(host, int(port), 'FLIST','')
				
	def download(self):
		selection = self.filelist.curselection()
		if len(selection) == 1:
			file_sel = self.filelist.get(selection[0])
			if file_sel in self.peer.file_info.keys():
				source_addr = self.peer.file_info[file_sel]
				host, port = source_addr.split(':')
				self.peer.send_message_to_peer(host, int(port), 'FGET', file_sel)