private void openConfigWindow() {
		if (configFrame == null) {
			configFrame = new JFrame("Admin Helper Agent - configure");
			configFrame.setSize(400, 200);
			configFrame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
			configFrame.setLayout(new BorderLayout());
			actionListener = new ActionListener() {

				public void actionPerformed(ActionEvent e) {
					if (e.getSource() == save) {
						Properties p = contextController.getConfigProperties();
						for (JLabel key : map.keySet()) {
							String keyValue = key.getText();
							String valueValue = map.get(key).getText();
							p.setProperty(keyValue, valueValue);
						}

						// TODO: handle save new config
						try {
							OutputStream propertyOut = new FileOutputStream(
									"config.properties");
							p.store(propertyOut,
									"Backup config stroed in config.properties.backup");
						} catch (FileNotFoundException e1) {
							log.error(e);
						} catch (IOException e1) {
							log.error("Prooperty save error: " + e1);
						}

						JOptionPane.showMessageDialog(configFrame,
								"You need to restarft application");
						configFrame.setVisible(false);

					} else if (e.getSource() == cancel) {
						configFrame.setVisible(false);
					}

				}
			};
			save = new JButton("Save");
			save.addActionListener(actionListener);
			cancel = new JButton("Cancel");
			cancel.addActionListener(actionListener);
			panel = new JPanel(new FlowLayout(10));
			panel.add(save);
			panel.add(cancel);

			scrollContentPanel = new JPanel();
			scrollContentPanel.setLayout(new BoxLayout(scrollContentPanel,
					BoxLayout.Y_AXIS));
			scrollPanel = new JScrollPane(scrollContentPanel);
			configFrame.add(panel, BorderLayout.SOUTH);
			configFrame.add(scrollPanel, BorderLayout.CENTER);

			map = new HashMap<JLabel, JTextField>();
		}

		scrollContentPanel.removeAll();
		for (Entry<Object, Object> item : contextController
				.getConfigProperties().entrySet()) {
			JLabel label = new JLabel(item.getKey().toString());
			JTextField field = new JTextField(item.getValue().toString());
			map.put(label, field);
			scrollContentPanel.add(label);
			scrollContentPanel.add(field);
		}

		configFrame.setVisible(true);

	}