public void rebuildDataTable() {
		if (document == null)
			return;

		// set current processing table
		DataTable table = tableUI.getData();
		table.reset();

		int index;
		Color color;

		// get root element 'table'
		Element root = document.getDocumentElement();

		// set selection bar width
		String selectionType = root.getAttribute("selectionBar");
		if ("true".equals(selectionType)) {
			table.setSelection(true);
			table.setSelectionWidth(DataTable.SELECTION_STANDART);
		} else {
			table.setSelection(false);
		}

		// set auto resizable column
		try {
			index = Integer.parseInt(root.getAttribute("resizeColumnIndex"));
		} catch (NumberFormatException e) {
			index = DataTable.COLUMN_NONE;
		}
		table.setAutoResizeColumn(index);

		// set row color
		try {
			color = Color.decode(root.getAttribute("rowColor"));
		} catch (NumberFormatException e) {
			color = DataTable.ROWCOLOR_DEFAULT;
		}
		table.setRowColor(color);

		// set alternative row color
		try {
			color = Color.decode(root.getAttribute("rowColorAlt"));
		} catch (NumberFormatException e) {
			color = DataTable.ROWCOLORALT_DEFAULT;
		}
		table.setRowColorAlt(color);

		/**
		 * Customize columns and set data
		 */

		NodeList nodeList = root.getChildNodes();
		for (int i = 0; i < nodeList.getLength(); i++) {

			Node node = nodeList.item(i);
			if ("header".equals(node.getNodeName())) {
				processHeader(node);
				continue;
			}
			if ("data".equals(node.getNodeName())) {
				processData(node);
				continue;
			}

		}

		tableUI.rebuild();
	}