| 

.NET C# Java Javascript Exception

5
Hallo zusammen,

ich hab da mal wieder ein Problem dem ich nicht auf die Spur komme.
Folgende Situation:

Ich habe mir via Window Builder eine Oberfläche für meine RCP Anwendung zusammen gestellt.
Soweit, so schön. Jetzt geht es ans Daten füllen.

Da ich aus meinen Komplexen Datentypen nur entweder Collections oder ArrayLists bekomme, ist es mit einem simplen combo.add(liste) ja nicht getan. Also muss eine Hilfsmethode her. Da ich aber nicht auf Combofelder beschränkt sein will, soll die Methode also nicht nur eine ArrayList aufnehmen, sondern auch das Object.

Leider funktioniert das nicht so einfach wie ich gedacht habe:
private void setItems (ArrayList<String> al, Object o) {
for (String string : al) {
o.add(string);
}
}


Ich bin auf SWT beschränkt, da es eine RCP Anwendung wird. Fast jedes Widget hat eine add-Methode, diese nehmen aber nur entweder direkte Arrays auf oder nur Strings. Im Fall der Combo Box könnte ich noch setItems(String[]) nehmen, aber da ich nur ArrayLists zur Verfügung habe, nützt es mir nichts und nicht jedes Widget hat eine solche Methode.

Gibt es da vielleicht eine möglichkeit wie ich das hinbekommen könnte?

Gruß
Lord Pinhead
12.11.2011
Lord_Pinhead 496 5
1 Antwort
2
Moin Lord_pinhead,

hast du das schon ausprobiert?

private ArrayList<String> cbValues = new ArrayList<String>();
cbValues.add("Hallo");
cbValues.add("du");
cbValues.add("da!");

String[] sl = cbValues.toArray(new String[cbValues.size()]);
comboBox.setItems(sl);


oder kurz:
comboBox.setItems(cbValues.toArray(new String[cbValues.size()]));


Gruß Karl
14.11.2011
Karl 850 7
Ich habe mir deine Frage noch mal genau angesehen.
Eine generische Methode gibt es nicht, da die Controls kein gemeinsames Interface haben.

Wie wäre es denn hiermit:
[code]
private void setItems(ArrayList<String> list, Object o) throws NotHandledException{
if (o instanceof org.eclipse.swt.widgets.List){
((org.eclipse.swt.widgets.List)o).setItems(list.toArray(new String[list.size()]));
}else if (o instanceof org.eclipse.swt.widgets.Combo){
((org.eclipse.swt.widgets.Combo)o).setItems(list.toArray(new String[list.size()]));
}else{ throw new NotHandledException("Not supported");
}
}
[/code]
Karl 14.11.2011
Ich hab gemerkt das der meine Antwort nicht gespeichtert hat. Kurzum: Ich habs versucht, finde das ganze aber nicht sauber. Darum werd ich mich einmal in SWIXML einarbeiten, danke aber für den Lösungsansatz :)
Lord_Pinhead 14.12.2011

Stelle deine Programmieren-Frage jetzt!