private JTree createTree() {
		treeModel = new DefaultTreeModel(root);
		tree = new JTree(treeModel);
		tree.setEditable(false);
		tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
		tree.setRootVisible(true);
		tree.addTreeSelectionListener(this);
		tree.setCellRenderer(customTreeCellRenderer);
		tree.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
		tree.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseReleased(MouseEvent e) {
				DefaultMutableTreeNode dmtn = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent();
				if (dmtn == null) {
					return;
				}
				Object object = dmtn.getUserObject();
				if (object == null) {
					return;
				}
				if (SwingUtilities.isRightMouseButton(e)) {
					if (object instanceof Connections) {
						createMenuForConnections().show(tree, e.getX(), e.getY());
					}
					if (object instanceof Host) {
						createMenuForHost().show(tree, e.getX(), e.getY());
					}
					if (object instanceof Database) {
						createMenuForDatabase().show(tree, e.getX(), e.getY());
					}
					if (object instanceof Collection) {
						createMenuForCollection().show(tree, e.getX(), e.getY());
					}
					if (object instanceof Index) {
						createMenuForIndex().show(tree, e.getX(), e.getY());
					}
				}
			}
		});
		return (tree);
	}