private synchronized void fillProductTable(ActionEvent e) {
		String pattern = prodSuche.getText();
		if (pattern == null || pattern.equals("")) {
			pattern = "%";
		}

		String[] header = new String[]{"Produktgruppe", "Artikelnummer", "Artikelbezeichnung"};

		productList = mdi.getProducts(pattern);
		List<String[]> data = new ArrayList<String[]>();

		for (int i = 0; i < productList.size(); i++) {
			Product prod = productList.get(i);
			String[] dump = new String[3];
			dump[0] = prod.isBook() ? "Buch" : prod.isDvd() ? "DVD" : prod.isMusic() ? "Musik" : "unbekannt";
			dump[1] = "" + prod.getAsin();
			dump[2] = prod.getTitle();

			if (prod.isBook() && !c_books.isSelected())
				continue;
			if (prod.isDvd() && !c_dvds.isSelected())
				continue;
			if (prod.isMusic() && !c_musix.isSelected())
				continue;
			data.add(dump);
		}
		this.table.fillTable(header, data);
		this.table.resizeColumns(new int[]{30, 30});
	}