SWTUtil.disposeChildren(this.parent);
this.parent.setLayout(new GridLayout());
this.selects.clear();
Profile p = this.getProfile();
List<List<String>> lines = new ArrayList<List<String>>(); // Liste mit Zeilen mit Listen von Spalten %-)
int cols = 0;
////////////////////////////////////////////////////////////////////////////
// CSV-Datei einlesen
CsvPreference prefs = CsvPreference.EXCEL_NORTH_EUROPE_PREFERENCE;
String sep = p.getSeparatorChar();
String quo = p.getQuotingChar();
if (sep != null && sep.length() == 1) prefs.setDelimiterChar(sep.charAt(0));
if (quo != null && quo.length() == 1) prefs.setQuoteChar(quo.charAt(0));
ICsvListReader csv = new CsvListReader(new InputStreamReader(new ByteArrayInputStream(this.data),p.getFileEncoding()),prefs);
List<String> line = null;
while ((line = csv.read()) != null)
{
// Der CSV-Reader verwendet das List-Objekt leider immer
// wieder (wird fuer die naechste Zeile geleert und neu
// befuellt. Daher koennen wir sie nicht so einfach hier
// reinpacken sondern muessen die Werte rauskopieren
List<String> l = new ArrayList();
l.addAll(line);
lines.add(l);
// Wir verwenden als Basis die Zeile mit den meisten Spalten
if (l.size() > cols)
cols = l.size();
}
if (cols == 0)
{
this.getError().setValue(i18n.tr("CSV-Datei enth�lt keine Spalten"));
return;
}
if (lines.size() == 0)
{
this.getError().setValue(i18n.tr("CSV-Datei enth�lt keine Zeilen"));
return;
}
if (lines.size() <= p.getSkipLines())
{
this.getError().setValue(i18n.tr("CSV-Datei enth�lt nur {0} Zeilen",Integer.toString(lines.size())));
return;
}
//
////////////////////////////////////////////////////////////////////////////
List<Column> columns = p.getColumns();
List<String> current = lines.get(p.getSkipLines()); // Die erste anzuzeigende Zeile
ScrolledContainer container = new ScrolledContainer(this.parent);
for (int i=0;i<cols;++i)
{