private void initialize() {
		// задаем внешний вид такой же, как у системы
		try {
			UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
		} catch (Exception e) {
			JOptionPane.showMessageDialog(null, e.getMessage(), "Ошибка!",
					JOptionPane.ERROR_MESSAGE);
		}

		// выбрасываем диалог авторизации
		LoginDialog loginDialog = new LoginDialog(frame);
		loginDialog.setVisible(true);

		// создаем фрейм
		frame = new JFrame();
		frame.setBounds(100, 100, 450, 300);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		// если авторизация не прошла - закрыть приложение
		if (authorized) {
			JLabel lblUserName = new JLabel("Приветствие");
			lblUserName.setText("Здравствуйте, " + user.getUsername()
					+ ". Вы имеете права " + user.getRole() + ".");
			JLabel lblListHeader = new JLabel();

			// создание коллекции с пользователями либо с услугами, в
			// зависимости от прав
			userContainer = new Container<User>();
			userServices = new Container<Service>();
			try {
				if (user.getRole().equals(User.USERROLE_ADMIN)) {
					lblListHeader.setText("Список пользователей:");
					loadUsers();
				} else {
					lblListHeader.setText("Активные услуги:");
					loadSubscribedServices();
				}
			} catch (SQLException e) {
				JOptionPane.showMessageDialog(null, e.getMessage(), "Ошибка!",
						JOptionPane.ERROR_MESSAGE);
			}

			// Забиваем в список либо пользователей, либо подписанные услуги
			listModel = getListModel();
			list = new JList<String>(listModel);
			list.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
			list.setLayoutOrientation(JList.VERTICAL_WRAP);
			list.setSelectedIndex(0);

			// меню
			JMenuBar menuBar = new JMenuBar();
			frame.setJMenuBar(menuBar);
			JMenu menuFile = new JMenu("Файл");
			JMenu menuEdit = new JMenu("Пользователь");
			menuBar.add(menuFile);
			menuBar.add(menuEdit);
			// файл - выход
			JMenuItem menuItemExit = new JMenuItem("Выход");
			menuItemExit.addMouseListener(new MouseAdapter() {
				@Override
				public void mouseReleased(MouseEvent arg0) {
					for (Frame fr : Frame.getFrames()) {
						fr.dispose();
					}
					try {
						DatabaseConnector.dispose();
					} catch (SQLException e) {
						JOptionPane.showMessageDialog(null, e.getMessage(),
								"Ошибка!", JOptionPane.ERROR_MESSAGE);
					}
				}
			});
			menuFile.add(menuItemExit);
			// если админ - редактировать пользователя
			if (user.getRole().equals(User.USERROLE_ADMIN)) {
				JMenuItem menuItemEditUser = new JMenuItem("Редактировать");
				menuItemEditUser.addMouseListener(new MouseAdapter() {
					@Override
					public void mouseReleased(MouseEvent arg0) {
						AdminUserEditDialog adminUEDialog = new AdminUserEditDialog(
								true,
								userContainer.get(list.getSelectedIndex()));
						adminUEDialog.setVisible(true);
					}
				});
				//
				JMenuItem menuItemAddUser = new JMenuItem("Добавить");
				menuItemAddUser.addMouseListener(new MouseAdapter() {
					@Override
					public void mouseReleased(MouseEvent arg0) {
						AdminUserEditDialog adminUEDialog = new AdminUserEditDialog(
								false, null);
						adminUEDialog.setVisible(true);
					}
				});
				//
				JMenuItem menuItemAdminBills = new JMenuItem("Счета");
				menuItemAdminBills.addMouseListener(new MouseAdapter() {
					@Override
					public void mouseReleased(MouseEvent arg0) {
						if (list.getSelectedIndex() >= 0) {
							BillsDialog BillsDialog = new BillsDialog(
									userContainer.get(list.getSelectedIndex()));
							BillsDialog.setVisible(true);
						} else {
							JOptionPane.showMessageDialog(null,
									"Не выбран пользователь.", "Ошибка.",
									JOptionPane.INFORMATION_MESSAGE);
						}
					}
				});
				//
				JMenuItem menuItemBills = new JMenuItem("Выставить счета");
				menuItemBills.addMouseListener(new MouseAdapter() {
					@Override
					public void mouseReleased(MouseEvent arg0) {
						try {
							makeBills();
						} catch (SQLException e) {
							JOptionPane.showMessageDialog(null, e.getMessage(),
									"Ошибка!", JOptionPane.ERROR_MESSAGE);
						}
					}
				});
				//
				menuEdit.add(menuItemEditUser);
				menuEdit.add(menuItemAddUser);
				menuEdit.add(menuItemAdminBills);
				menuEdit.add(menuItemBills);
			} else {
				JMenuItem menuServicesUser = new JMenuItem("Услуги");
				menuServicesUser.addMouseListener(new MouseAdapter() {
					@Override
					public void mouseReleased(MouseEvent arg0) {
						UserEditServices ueServices = new UserEditServices(user);
						ueServices.setVisible(true);
					}
				});
				//
				JMenuItem menuItemBills = new JMenuItem("Счета");
				menuItemBills.addMouseListener(new MouseAdapter() {
					@Override
					public void mouseReleased(MouseEvent arg0) {
						BillsDialog BillsDialog = new BillsDialog(user);
						BillsDialog.setVisible(true);
					}
				});
				//
				menuEdit.add(menuItemBills);
				menuEdit.add(menuServicesUser);
			}
			// /меню

			// формируем вывод
			GroupLayout groupLayout = new GroupLayout(frame.getContentPane());
			groupLayout
					.setHorizontalGroup(groupLayout
							.createParallelGroup(Alignment.LEADING)
							.addGroup(
									groupLayout
											.createSequentialGroup()
											.addContainerGap()
											.addGroup(
													groupLayout
															.createParallelGroup(
																	Alignment.LEADING)
															.addComponent(
																	lblListHeader)
															.addComponent(
																	lblUserName,
																	GroupLayout.DEFAULT_SIZE,
																	422,
																	Short.MAX_VALUE)
															.addComponent(
																	list,
																	GroupLayout.PREFERRED_SIZE,
																	179,
																	GroupLayout.PREFERRED_SIZE))
											.addContainerGap()));
			groupLayout.setVerticalGroup(groupLayout.createParallelGroup(
					Alignment.LEADING).addGroup(
					groupLayout
							.createSequentialGroup()
							.addComponent(lblUserName)
							.addPreferredGap(ComponentPlacement.RELATED)
							.addComponent(lblListHeader)
							.addPreferredGap(ComponentPlacement.RELATED)
							.addComponent(list, GroupLayout.DEFAULT_SIZE, 208,
									Short.MAX_VALUE).addContainerGap()));
			frame.getContentPane().setLayout(groupLayout);
		}
	}