public void fillTable(List<String> headers, List<String[]> content){
		
		for (int i = 0; i < headers.size(); i++) {
			final TableViewerColumn column = new TableViewerColumn(tableViewer,
					SWT.LEFT);

			column.getColumn().setText(headers.get(i));
			column.getColumn().setWidth(200);
			column.getColumn().setResizable(true);
			column.getColumn().setMoveable(true);
			
			final int index = i;
			
			column.setLabelProvider(new ColumnLabelProvider() {
				@Override
				public String getText(Object element) {
					return ((AttributeRow)element).getElementAt(index);
				}
			});
		}
			
		model = new ArrayList<AttributeRow>();
		
		if(content.size() > 0){
			//We first look for the biggest column, it will be the reference to generate all AttributeRow
			int biggestColumn = 0;
			
			for(int i = 0; i < content.size(); i++){
				if(content.get(biggestColumn).length < content.get(i).length){
					biggestColumn = i;
				}
			}
			
			//For each row of the biggest column (String[]), we look for the rows
			//at the same level in other columns and we build a AttributeRow with those data
			for(int i = 0; i < content.get(biggestColumn).length; i++){
				List<String> attributes = new ArrayList<String>();
				for(int j = 0; j < content.size(); j++){
					if(i < content.get(j).length){
						attributes.add(content.get(j)[i]);
					} else {
						attributes.add("");
					}
				}
				model.add(new AttributeRow(attributes, listener));
			}
		}
		
		tableViewer.setContentProvider(new ArrayContentProvider());
		tableViewer.setInput(model);

		defineCellEditing(tableViewer, headers.size());
		addRightClickItems(tableViewer);
	}