private void initialize() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		
		JMenuBar menuBar = new JMenuBar();
		setJMenuBar(menuBar);
		
		JMenu mnNewMenu = new JMenu("File");
		menuBar.add(mnNewMenu);
		
		JMenuItem mntmExit = new JMenuItem("Exit");
		mntmExit.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent arg0) {
				MainFrame.this.dispose();
			}
			
		});
		mnNewMenu.add(mntmExit);
		
		JMenu mnHelp = new JMenu("Help");
		menuBar.add(mnHelp);
		
		JMenuItem mntmAbout = new JMenuItem("About");
		mntmAbout.addActionListener(new ActionListener() {

			private Object aboutMessage = "This project is an assignment in a course\n"
					+ "entitled \"Mini projets Java\" at ESPRIT and\n"
					+ "was developed conjointly by:\n\n"
					+ "Seifeddine DRIDI\n Mohamed Wertani\n Elyes Zakraoui\nOmar Najjar";

			@Override
			public void actionPerformed(ActionEvent arg0) {
				JOptionPane.showMessageDialog(MainFrame.this, aboutMessage);
			}
			
		});
		mnHelp.add(mntmAbout);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		contentPane.setLayout(new BorderLayout(0, 0));
		setContentPane(contentPane);
		
		Box horizontalBox = Box.createHorizontalBox();
		contentPane.add(horizontalBox, BorderLayout.NORTH);
		
		lblUserStatus = new JLabel("You are not logged in");
		lblUserStatus.setForeground(Color.RED);
		horizontalBox.add(lblUserStatus);
		
		Component glue = Box.createGlue();
		horizontalBox.add(glue);
		
		JButton btnLogin = new JButton("Login");
		btnLogin.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				UserLoginDialog d = new UserLoginDialog(MainFrame.this);
				User user = d.showDialog();
				if (user != null) {
					client = user;
					lblUserStatus.setForeground(Color.GREEN);
					lblUserStatus.setText("Hello " + client.getFirstName());
				} else if (user == client) {
					lblUserStatus.setForeground(Color.RED);
					lblUserStatus.setText("You are not logged in");
				}
			}
		});
		horizontalBox.add(btnLogin);
		
		Component horizontalStrut = Box.createHorizontalStrut(20);
		horizontalBox.add(horizontalStrut);
		
		JButton btnRegister = new JButton("Register");
		btnRegister.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				UserRegistrationDialog registerDialog = new UserRegistrationDialog(MainFrame.this);
				registerDialog.setVisible(true);
			}
		});
		horizontalBox.add(btnRegister);
		
		Box verticalBox = Box.createVerticalBox();
		contentPane.add(verticalBox, BorderLayout.CENTER);
		
		JScrollPane scrollPane = new JScrollPane();
		verticalBox.add(scrollPane);
		
		table = new JTable();
		table.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent arg0) {
				String dealName = (String) table.getModel().getValueAt(table.getSelectedRow(), 0);
				DealView dealView = new DealView(MainFrame.this, client, dealName);
				dealView.setVisible(true);
				// Update deal list
				retrieveDealList();
			}
		});
		table.setModel(new DefaultTableModel(
			new Object[][] {
			},
			new String[] {
				"Name", "Owner"
			}
		));
		scrollPane.setViewportView(table);
		
		Box horizontalBox_1 = Box.createHorizontalBox();
		contentPane.add(horizontalBox_1, BorderLayout.SOUTH);
		
		JButton btnAddDeal = new JButton("Add Deal");
		horizontalBox_1.add(btnAddDeal);
		btnAddDeal.setAlignmentX(Component.RIGHT_ALIGNMENT);
		btnAddDeal.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if (client != null) {
					AddDealDialog addDealDialog = new AddDealDialog(MainFrame.this, client);
					addDealDialog.setVisible(true);
					retrieveDealList();
					if (socket != null) {
						notifyServer(socket);
					}
				} else {
					JOptionPane.showMessageDialog(MainFrame.this, "You have to login first before you can add a new deal");
				}
			}
		});
		btnAddDeal.setHorizontalAlignment(SwingConstants.LEFT);
		
		Component glue_1 = Box.createGlue();
		horizontalBox_1.add(glue_1);
		
		lblServerStatus = new JLabel("Establishing connection to reporting server...");
		horizontalBox_1.add(lblServerStatus);
	}