public void refresh() {

		SwingUtilities.invokeLater(new Runnable() {
			@Override
			public void run() {
				content.removeAllChildren();
				Enumeration<TreePath> paths = tree.getExpandedDescendants(tree.getPathForRow(0));
				for(DialogCategory category : editor.controller.categories.values()){
					DefaultMutableTreeNode parent = new DialogNode(category);
					content.add(parent);
					for(Dialog dialog : category.dialogs.values()){
						DefaultMutableTreeNode child = new DialogNode(dialog);
						parent.add(child);
						for(DialogOption option : dialog.getOptions().values()){
							child.add(new DialogNode(option));
						}
					}
				}
		        DefaultTreeModel model = (DefaultTreeModel)tree.getModel();
		        model.reload();
		        if(paths != null){
			        while(paths.hasMoreElements()){
			        	TreePath path = paths.nextElement();
			        	tree.expandPath(path);
			        }
		        }
			}
		});
	}