private void loginButtonActions(GridBagConstraints constraints, JPanel jp) {
		final GUI owner = this;

		logInButton = new JButton(ComponentNames.logInButton);

		constraints.gridx = 1;
		constraints.gridy = 4;
		constraints.anchor = GridBagConstraints.CENTER;

		jp.add(logInButton, constraints);

		logInButton.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent arg0) {
				user.setUsername(userText.getText());
				user.setPassword(new String(passText.getPassword()));
				
				loggerGui.info("[log in] User " + user.username);
				
				// Validate given input
				if (user.getUsername().isEmpty()
						|| !(sellerButton.isSelected() || buyerButton
								.isSelected())) {
					JOptionPane.showMessageDialog(owner,
							ErrorMessages.logInErrMsg);
					return;
				}

				// Add services table
				List<String> serviceList = logInUser();
				if (serviceList == null || serviceList.isEmpty()) {
					JOptionPane.showMessageDialog(owner,
							ErrorMessages.logInInvalidOpt);
					return;
				}

				// Show second "page" (the users services screen)
				cardLayout.show(panelCards, Page.Page2.getName());

				// Add the table containing services info
				JPanel servicesPanel = Page.Page2.getPanel();

				// Add user message
				JLabel userLabel = new JLabel(ComponentNames.welcomeUserMsg
						+ user.getUsername());
				userLabel.setForeground(Color.RED);
				userLabel.setBorder(BorderFactory.createEmptyBorder(5, 15, 10,
						5));
				servicesPanel.add(userLabel, BorderLayout.PAGE_START);

				int noServices = serviceList.size();
				Object[][] data = new Object[noServices][2];
				int i = 0;

				for (; i < noServices; i++) {
					data[i][0] = serviceList.get(i);
					data[i][1] = StatusMessages.inactive.toUpperCase();
				}

				JTable table = new JTable(data,
						ComponentNames.servicesColumnNames);

				JScrollPane scrollPane = new JScrollPane(table);
				table.setFillsViewportHeight(true);

				// set the cells to be combo boxes
				TableColumn userColumn0, userColumn1;

				userColumn0 = table.getColumnModel().getColumn(0);
				userColumn0.setPreferredWidth(100);
				userColumn0.setCellEditor(new ServicesCellEditor());
				userColumn0.setCellRenderer(new ServicesCellRenderer());

				userColumn1 = table.getColumnModel().getColumn(1);
				userColumn1.setPreferredWidth(300);
				userColumn1.setCellEditor(new StatusAndOffersCellEditor(owner));
				userColumn1.setCellRenderer(new StatusAndOffersCellRenderer(owner));

				servicesPanel.add(scrollPane);

				// add logout button to the panel
				logOutButtonAction(servicesPanel);

				addTableListener(table);
			}

		});
	}