private void addListener() {
		final MainViewController mainViewController = this;
		mainView.setAboutMenuListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				new AboutPanel();
			}
		});

		mainView.setServerConfigMenuListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {
				// Show settings window
				settingsViewController = new SettingsViewController(mainView);
			}
		});

		mainView.setOpenPadMenuListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {
				String padId = JOptionPane.showInputDialog("Pad ID");
				if (padId == null) {
					return;
				}
				try {
					openPad(padId);
				} catch (EPLiteException e) {
					e.printStackTrace();
					JOptionPane.showMessageDialog(mainView, "Error: " + e.getMessage() + ". Are you sure you entered the correct padId?",
							"Error loading pad", JOptionPane.ERROR_MESSAGE);
				}
			}
		});

		mainView.setCreatePadMenuListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {
				String padId = JOptionPane.showInputDialog("Pad ID");
				if (padId == null) {
					return;
				}
				try {
					if (isGroupPad()) {
						int reply = JOptionPane.showConfirmDialog(null, "Create pad for this group?", "", JOptionPane.YES_NO_OPTION);
						if (reply == JOptionPane.YES_OPTION) {
							createGroupPad(padId);
						} else {
							createPublicPad(padId);
						}
					} else {
						createPublicPad(padId);
					}
				} catch (EPLiteException e) {
					e.printStackTrace();
					JOptionPane.showMessageDialog(mainView, "Error: " + e.getMessage(), "Error creating pad", JOptionPane.ERROR_MESSAGE);
				}
			}
		});

		mainView.setManagePadsMenuListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {
				new ManagePadsController(epLite.getAllGroups(), mainViewController);
			}
		});

		mainView.setOpenGroupMenuListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {
				String groupId = JOptionPane.showInputDialog("Group ID");
				if (groupId == null) {
					return;
				}
				try {
					openGroup(groupId);
				} catch (EPLiteException e) {
					e.printStackTrace();
					JOptionPane.showMessageDialog(mainView, "Error: " + e.getMessage(), "Error opening group", JOptionPane.ERROR_MESSAGE);
				}
			}
		});

		mainView.setCreateGroupMenuListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {
				openGroup(epLite.createGroup());
			}
		});

		/*
		 * mainView.setDeleteGroupMenuListener(new ActionListener() {
		 * 
		 * @Override public void actionPerformed(ActionEvent arg0) {
		 * epLite.deleteGroup(actualGroupId); } });
		 */

		mainView.setListAllGroupsMenuListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				try {
					new GroupListController(epLite.getAllGroups(), mainViewController);
				} catch (EPLiteException epEx) {
					epEx.printStackTrace();
					JOptionPane.showMessageDialog(mainView, "Error: " + epEx.getMessage(), "Error listing groups", JOptionPane.ERROR_MESSAGE);
				}
			}
		});
	}